Stable Diffusion 3 Medium 이 오픈소스로 릴리즈 되었습니다. ComfyUI 에서는 지원되고 아직 WebUI 에서는 지원안되지만 조만간 지원될걸로 생각합니다. ComfyUI 는 제작사인 Stability AI 에서 직접 지원해줬네요.
CLIP이 3가지(CLIP-G, CLIP-L, T5 XXL)이고, U-NET 구조를 가지지 않습니다. MMDiT (Multimodal Diffusion Transformer) 모델이라고 설명하네요. 파라메터는 20억개로 SDXL 의 26억개보다는 적지만, 굉장히 많은 개선점이 있습니다. 가장 눈에 띄의는건 텍스트를 제대로 인식해 출력해준다는 거네요. nVidia 와의 협업으로 TensorRT 를 사용한 성능 향상도 눈에 띄입니다.
실행시킬때 필요한 PC사양, 성능은 SDXL 과 크게 다르지 않을것 같네요. FP8 으로 줄인 모델을 사용하면 더 빠르게 사용할 수 있을 걸로 생각합니다.
WebUI 에서 포팅 중이긴 한데 아직 좀 더 기다려야 합니다. 대충 보니깐 현재 구현된건 ComfyUI 보다 많이 느리다고 하네요. Karras 스케줄러와도 안 맞는다고 합니다.
단 라이선스 때문에 말이 많네요. "크리에이터 라이선스"나 "상업 라이선스"는 유료인가 봅니다. 그리고 "비상업적 라이선스" 부분도 좀 애매한 부분이 있어, CiviAI 에서 이 부분에 대한 명확한 해명을 요구하고 있네요. 현재 라이선스대로라면 CivitAI 처럼 서비스 하는건 불가능하나 보네요.
nVidia Geforce GT 1030 (2GB VRAM) 으로 Stable Diffusion WebUI 사용하기
※ 여러가지 시행착오끝에 아래와 같은 512x768 이미지를 GT 1030 에서 2분대에 생성할 수 있도록 했다. 작년 이맘때 생성한게 10분 대였다는걸 감안하면 많은 발전이다. 그만큼 기술이 늘었다는 셈이다. 이 방법은 아마도 2G VRAM 을 가진 모든 nVidia 계열에서 사용할 수 있을거 같다.
※ 하는 방법을 적어 놓는다.
1. Ubuntu 22.04 를 설치하고 nVidia 그래픽 카드 드라이버를 설치한다. 이 글을 쓰는 시점에서 드라이버 버전은 550.67 이다. 윈도에서는 이 방법이 되지 않는다.
2. OS 가 띄워진 후에도 VRAM 2GB 를 온전히 비워질 수 있도록 한다. 필자의 경우 모니터 연결은 내장 그래픽을 사용했다.
3. Stable Diffusion WebUI 를 설치하고 실행한다. 옵션은 "--medvram --listen --xformers" 을 준다.
glibc version is 2.35 Check TCMalloc: libtcmalloc_minimal.so.4 libtcmalloc_minimal.so.4 is linked with libc.so,execute LD_PRELOAD=/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4 Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] Version: v1.9.0 Commit hash: adadb4e3c7382bf3e4f7519126cd6c70f4f8557b Launching Web UI with arguments: --medvram --listen --xformers Loading weights [********] from Model.safetensors Running on local URL: http://0.0.0.0:7860
To create a public link, set `share=True` in `launch()`. Startup time: 7.1s (prepare environment: 1.4s, import torch: 2.4s, import gradio: 0.6s, setup paths: 1.2s, import ldm: 0.1s, initialize shared: 0.1s, other imports: 0.3s, list SD models: 0.1s, load scripts: 0.4s, create ui: 0.4s). Creating model from config: /home/windy/stable-diffusion-webui/configs/v1-inference.yaml Applying attention optimization: xformers... done. Model loaded in 1.6s (load weights from disk: 0.5s, create model: 0.3s, apply weights to model: 0.5s, calculate empty prompt: 0.2s).
4. 이미지를 생성한다. 아래 화면 참조하자. 프롬프트는 75 토큰 이하, 네거티브 프롬프트가 반드시 75토큰이상 150토큰 이하이어야 한다. (왜그래야 하는지는 모르겠다)
4-1. 아래와 같이 화면에 표시된다.
100%|████████████████████████████████████████████████████████| 24/24 [02:33<00:00, 6.40s/it] Total progress: 100%|██████████████████████████████████████████████| 24/24 [02:36<00:00, 6.54s/it] Total progress: 100%|██████████████████████████████████████████████| 24/24 [02:36<00:00, 6.36s/it]
+-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 5895 C python3 1952MiB | +-----------------------------------------------------------------------------------------+