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”은 그 대표적인 사례이다.
- 운영 측면에서, 리눅스 환경의
watch
및bash
스크립트는 반복 실행과 자동화에 큰 도움을 준다.
6. 향후 학습 포인트
- Stable Diffusion Web UI 내부 모듈 구조(
modules.scripts
,modules.sd_hijack
,modules.shared
) 심층 분석 - Conv2D 레이어 하이재킹을 이용한 다양한 응용 (예: attention map 조작, layer freezing)
- AI 모델 운영 자동화 및 모니터링 시스템 구축
답글 남기기