윈디하나의 누리사랑방. 이런 저런 얘기

글쓴시간
분류 기술,IT/스테이블 디퓨전
nVidia 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토큰을 초과해야한다. (왜그래야 하는지는 모르겠다)

사용자 삽입 이미지


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]

4-2. VRAM 사용량은 아래와 같다. 1952 MB 사용한다.

+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.67                 Driver Version: 550.67         CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce GT 1030         Off |   00000000:01:00.0 Off |                  N/A |
| N/A   53C    P0             N/A /   19W |    1955MiB /   2048MiB |    100%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A      5895      C   python3                                      1952MiB |
+-----------------------------------------------------------------------------------------+


4-3. 생성 완료된 후 나오는 텍스트는 아래와 같다.

best quality, masterpiece, 1girl

Negative prompt: ng_deepnegative_v1_75t, EasyNegativeV2, bad_prompt_version2,
Steps: 24, Sampler: DPM++ 2M SDE Heun, Schedule type: Karras, CFG scale: 7, Seed: 1121270688, Size: 512x768, Model hash: ********, Model: Model, Clip skip: 2, Version: v1.9.0

Time taken: 2 min. 44.3 sec.

A: 1.78 GB, R: 1.83 GB, Sys: 1.9/1.94531 GB (98.1%)

5. 정말 아슬아슬하게 생성되는 셈이다. 단 이렇게 하면 배치로는 못 생성한다. --lowvram 과 아닌건 성능 차이가 많기 때문에 필자는 이렇게 사용하고 있다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion WebUI 4K 이미지 생성 - 2번째 이야기

사용자 삽입 이미지


기존에 4K 이미지 생성하는걸 실패했다는 글을 작성한적이 있다. 시스템 메모리를 업그레이드하면 되지 않을까 했었는데, 실제 메모리 업그레이드를 단행해 보았다. 그리고 4K 이미지 생성되었다.

※ 테스트 사양

메모리: VRAM 12GB, SYSTEM RAM 64 GB
SD WebUI: v1.9.0, "--xformers --no-half-vae" 옵션

※ 테스트

③ 544 x 960 → 2176 x 3840 변환(Hires. fix)작업: 시간: 15m 42s, A: 26.46 GB, R: 42.11 GB, Sys: 12.0/12 GB (100.0%)

-> Extra 탭에서 변환하는 것보다 Hires. fix 으로 생성하는게 디테일이 더 살아있다. 4K 이미지 생성시 시스템 메모리 64GB 는 필수다.

※ 메모리 사용량

마지막 단계에서 아래와 같이 사용한다. 이때 위에 나온 "A: 26.46 GB" 를 사용하는 셈이다.

사용자 삽입 이미지

----
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 벡터 소녀

일러스트레이터로 그린듯한 그림을 좋아했던 적이 있었다. 아래와 같은 이미지처럼 말이다.

사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 미녀 #6 Part3

구도가 조금 안 맞았지만 그래도 맘에 들어 올려본다. 총 200장 생성에 24장 정도 올렸다. 12% 올린건데, 프롬프트를 좀 더 세밀하게 주면 50% 이상도 올릴 수 있을거 같다. 그만큼 요즘엔 퀄리티 있는 사진들이 잘 뽑인다.

사용자 삽입 이미지



사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지


사용자 삽입 이미지

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 미녀 #6 Part2

체크포인트와 LoRA 를 바꾸면서 좋아진게 바로 배경 흐림 효과가 꽤 그럴듯하게 나온다는 거다. 그래서 이미지가 더 좋아보이는지도 모르겠다. 물론 확대해보면 별로지만, 그래도 이정도인게 어딘가 싶다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지


사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 미녀 #6 Part1

이것저것 조합해보다가 생성한 미녀 이미지. 오랜만에 미녀 이미지 만들어보았다. 최신 LoRA 와 최근에 나온  체크포인트를 사용해서 다시 만들었다. 원래는 이런 이미지를 생성할 생각이 없다가 아래와 같은 이미지가 우연히 생성되어서 바로 시작했다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지


사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - Stable Diffusion 3

사용자 삽입 이미지

아직 SDXL 도 제대로 못 쓴다고 생각하고 있지만, 벌써 SD3 에 대한 소식이 들려오고 있습니다. 현재 미리보기 버전을 제공하고 있네요.

몇가지 특징을 보자면

1. 파라메터가 가변적: 8억 ~ 80억
2. 디퓨전에 트랜스포머 아키텍처를 합함.
3. 플로매칭 기능

1 번은 최소 8억개인 SD1.5 와 유사하다고 생각되는데, SD1.5와 호환될지는 모르겠네요.
2 번은  transformer 를 diffusion 모델과 합했다는 의미인거 같네요. 최근에 나온 비디오 생성 AI인 Sora 가 이렇게 했다죠. 이렇게 하면 초 고해상도의 이미지를 생성할 수 있을걸로 생각합니다.
3 번은 
Continuous Normalizing Flows (CNFs)를 사용했다는건데 잘 모르겠습니다.

그외에 이상한 그림 생성 못하게 한다는거 같습니다만, SDXL 을 보면 트레이닝을 처음부터 다시 해버리면 그것도 안되는거라서요. 어쨌든 기본 레벨에서는 생성 안되게 한다는거 같고 이렇게 되면 SD3 이미지 생성 서비스 만들기 쉬워지겠네요. (프롬프트 제한 안걸어도 되니까 말이죠)

또한 여러개의 묘사를 모아서 정의한것도 잘 인식한다고 합니다. 현재 SD 에서는 아직까지 1girl 을 주로 사용하는데요, 2girls 프롬프트를 주어봤자 비슷한 그림이 나오기 때문입니다만, SD3 부터는 이게 하나하나 묘사를 하면 제대로 생성한다는거 같네요.

----

https://stability.ai/news/stable-diffusion-3
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - Floral Dress

AI 에서 생성할 수 있는 드레스를 꼽자면 단연 이런 드레스를 꼽는다. 실존하기 어려운, 실제로 만들기 어려운 드레스다.

드레스 이미지 생성할대 가장 신경쓰는게 바로 손가락이다. 아직 잘 못 그리기 때문. 나머지 빛이라던가 얼굴 형태는 어떻게든 간접적으로 되긴 하는데, 손은 아직 자연스럽게 안된다. img2img 를 계속 쓸 수 있는것도 아니고 말이다. 다른 익스텐션을 사용해봐도 아직 마땅치 않다.

최초로 얼굴을 바꾸는 LoRA 를 사용하지 않고 올려본다. 그만큼 체크포인트가 얼굴 표현이 잘 되었다는 이야기도 하다.

프롬프트의 주제는 Floral, Lily, Tiara, Cyan 이다. 나름 잘 나와서 올려본다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지


사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지





글쓴시간
분류 기술,IT/스테이블 디퓨전

Stable Diffusion - Mapled Leaf

우연히 생성한 이미지. 별 생각없이 CivitAI 두리번 거리다가 재미있는 사진을 발견했고 내가 사용하는 체크포인트로 그려보았다. 그래서 나오게 된 사진 2장 올려본다.

특히 아래 사진은 이것과 유사한게 나오지 않을 정도로 특이한 사진이다. 렌즈 장 노출로 찍은 듯한 사진이라 한동안 보고 있었다.

사용자 삽입 이미지

원래 의도했던 사진은 아래와 같다. "강위의 섬 위에 홀로 있는 붉은 나뭇잎을 가진 오래된 나무"가 주제다.
사용자 삽입 이미지

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 벤치

공원 벤치에 앉아있는 여인을 그려달라고 했는데, 딱 하나 아래 처럼 생성되었다. 괘 맘에 들어서 올려본다.

사용자 삽입 이미지

SD 를 하다보면 가끔 이렇게 알 수 없는 디자인이 나오기도 한다. 같은 프롬프트로 시드를 다른걸로 그려봐도 전혀 같은게 나오지 않는 그런거 말이다. 위의 이미지도 마찬가지. 꽤 맘에 들었다.