Stable Diffusion Web UI와 확장 스크립트 분석

1. 개요

본 문서는 Stable Diffusion Web UI 및 해당 생태계에서 동작하는 **확장 스크립트(Extension)**의 구조와 원리를 설명한다. 또한, 시스템 명령어 자동화(watch, bash 스크립트)와 관련된 실무 예제를 포함하여 AI 이미지 생성과 운영 환경 이해를 돕는 것을 목표로 한다.


2. Stable Diffusion Web UI

2.1 프로젝트 소개

  • Stable Diffusion Web UI는 Stable Diffusion 모델을 웹 환경에서 손쉽게 사용할 수 있도록 설계된 오픈소스 프로젝트이다.
  • 주도 개발자는 AUTOMATIC1111이며, GitHub에서 활발히 개발·유지되고 있다.
  • 주요 기술 스택:
    • Python, Gradio 기반 UI
    • PyTorch 모델 실행
    • 다양한 확장 모듈(Extension) 지원

🔗 GitHub 저장소 (AUTOMATIC1111/stable-diffusion-webui)

2.2 라이선스

  • MIT License 기반
  • 상업적 활용, 수정, 재배포 모두 허용됨

3. 확장 스크립트 (Extension Script)

3.1 개념

  • Web UI는 modules.scripts.Script 클래스를 상속하여 새로운 기능을 추가할 수 있는 구조를 제공한다.
  • 이를 통해 모델 내부 동작을 가로채거나 수정(hijack) 하여 새로운 기능을 구현 가능.

3.2 분석 대상 스크립트: “Asymmetric tiling”

  • X축과 Y축 타일링을 독립적으로 설정할 수 있게 해주는 플러그인
  • 기본 Stable Diffusion의 타일링은 X, Y 동일하게 적용되지만, 본 스크립트는 축별로 구분하여 제어함

3.2.1 주요 기능

  • UI 옵션:
    • Tile X: X축 타일링 여부
    • Tile Y: Y축 타일링 여부
    • Start Step: 적용 시작 단계
    • Stop Step: 적용 중지 단계
  • Conv2D 레이어 패치:
    • _conv_forward 메서드를 오버라이드
    • padding_modeX, padding_modeY로 축별 패딩 방식 지정
    • 필요 시 원본 Conv2D 동작 복원

3.2.2 활용 시나리오

  • 배경 패턴, 벽지, 직물 등 한쪽 방향으로만 seamless한 이미지 생성
  • 데이터 증강(data augmentation) 시 축별 효과를 다르게 줄 때 활용 가능

4. 시스템 자동화 (실행 주기 제어)

4.1 watch 명령어

  • 1초마다 특정 명령을 실행하고 출력 결과를 갱신
watch -n 1 du -sh ~/.exdata98/tomake01
  • du -sh : 디렉토리 용량 확인
  • -n 1 : 1초 주기로 반복 실행

4.2 Bash 스크립트 활용

주기적 실행을 보다 유연하게 관리하려면 스크립트를 작성한다.

#!/bin/bash

while true; do
    du -sh ~/.exdata98/tomake01
    sleep 1
done

실행 권한 부여:

chmod +x checksize.sh
./checksize.sh

5. 결론

  • Stable Diffusion Web UI는 MIT 라이선스 기반의 완전한 오픈소스 프로젝트이며, 누구나 자유롭게 활용 가능하다.
  • 확장 스크립트 구조를 통해 모델 동작을 세밀하게 제어할 수 있으며, 본문에서 다룬 “Asymmetric tiling”은 그 대표적인 사례이다.
  • 운영 측면에서, 리눅스 환경의 watchbash 스크립트는 반복 실행과 자동화에 큰 도움을 준다.

6. 향후 학습 포인트

  • Stable Diffusion Web UI 내부 모듈 구조(modules.scripts, modules.sd_hijack, modules.shared) 심층 분석
  • Conv2D 레이어 하이재킹을 이용한 다양한 응용 (예: attention map 조작, layer freezing)
  • AI 모델 운영 자동화 및 모니터링 시스템 구축

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다