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

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion SDXL FP8 사용시 성능

SDXL 에서는 FP8 를 사용않고 있었다. SDUI 에서도 FP8 이 기본적으로 활성화 되지 않는다. 문득 조금 이상하다는 생각이 들어 찾아봤다.

- 우선 SDUI 에서는 Optimizations 항목에 FP8 관련 설정이 아래와 같이 2개 있다.

① FP8 weight (Use FP8 to store Linear/Conv layers' weight. Require pytorch>=2.1.0.)
◎ Disable ◎ Enable for SDXL ◎ Enable

② Cache FP16 weight for LoRA (Cache fp16 weight when enabling FP8, will increase the quality of LoRA. Use more system ram.)

- ① 을 활성화하면 기본적으로 FP8 을 사용하게 된다. 실제로 해보면 성능 향상(이미지 생성속도)이 없다. 단 메모리는 FP8을 사용하는 만큼 적게 사용한다. FP8을 활성화 하는 경우 일부 LoRA 를 사용할 수 없다. 왜인지는 모르겠지만 오류 발생한다.

- SDXL 메모리 사용량

FP8:  3.80 GB
FP16: 5.23 GB

사용자 삽입 이미지

SDXL FP16


사용자 삽입 이미지

SDXL FP8


주) VAE 는 동일하게 FP32 사용한다.

- ②는 캐시관련된거라 성능에 관련이 없다.

- 결론적으로 써도 성능 향상이 없고, LoRA 호환성만 떨어뜨리기 때문에 사용 안하는 거다. 결과물도 다르다. (단 FP16이 항상 더 좋은 결과를 내주는건 아니다) FLUX.1 dev 는 FP8 을 쓰면 효과가 상당히 좋은데 (이미지 생성속도가 빨라지는데) 유독 SDXL 에서는 효과가 없다.

- 아래는 같은 프롬프트, 같은 파라메터를 사용해서 만든 이미지다. 어떤게 좋다고는 할 수 없지만 왠지 FP16 이 더 빛나 보인다.
사용자 삽입 이미지

FP8 으로 생성한 이미지

사용자 삽입 이미지

FP16으로 생성한 이미지

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

바람에 휘날리는 드레스와 노을은 언제나 예쁘다. 생각날때마다 만드는데, 이번에도 한번 올려본다. 해상도가 4000 x 2400 이기 때문에, 4k 화면에서도 잘 보일 것이다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

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

우연히 그린 복장. 마음에 들었다. 무슨 복장이라고 해야할지는 모르겠다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지


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

필자가 본 에니에서, 아름다운 여인을 이야기할 때 빼놓지 않는 캐릭터가 바로 메텔이다. 은하철도 999 라는 에니메이션에 나오는 그 메텔 맞다.

털모자 샤프카와 털 코트 슈바, 흩날리는 긴 금발, 갈색 눈동자, 어딘가 슬퍼보이는 얼굴이 프롬프트다.
사용자 삽입 이미지

내가 생성하는 이미지에서는 메텔의 영향을 받은게 꽤 있다. 프롬프트를 변경하다 보면 이런 분위기를 내도록 하는 경우도 있으니깐 말이다. 그만큼 인상 깊었고, 이런 분위기의 여성을 좋아하는 편이기도 하다.

은하철도999의 줄거리는 대체적으로 암울하다. 원래 메텔은 메텔에 의해 희생된 아이들을 위한 속죄를 상징하는 인물이니 그렇다. 그래서 다른 에니에서 밝은 모습으로 나왔으면 하는 바램이 있다. 그래서 한번 제작해 보았다.

- 약간 현대적으로 재 해석한 메텔. 가장 맘에 든다.
사용자 삽입 이미지

- 작은 가게에서 점원으로 일하고 있는 숏컷 메텔
사용자 삽입 이미지

사용자 삽입 이미지

- 군대에서의 지휘관같은 인상을 보이는 메텔
사용자 삽입 이미지

짧은 스커트도 어울린다.
사용자 삽입 이미지

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

체크포인트를 바꿨다. 오랜만에 머지를 다시 했는데, 괘 괜찮게 나왔다. 8월 초에 한번 바꾸고 근 3개월 만이다. 그동안 몇번 머지를 시도했지만 기존것 보다 안 좋다고 판단되어서 사용하지 않고 있었다. 다행이도 이번엔 기존것 보다 잘 나왔다.

슬슬 SDXL 이나 SD3, FLUX.1 등으로 바꾸긴 해야 한다고 생각하긴 하는데 아직 못 바꿨다. PC의 업그레이드는 마쳤고, 지금은 SDXL 정도는 무난하게 사용가능하긴 하지만 아직 맘에 드는 그림체가 아니라서 못 바꾸고 있다. 하지만 꾸준히 SDXL 이나 FLUX.1 으로는 생성하고 있다. 웬지 아래와 같은 그림체가 안나와서 맘에 안들 뿐이다. 이러다가 직접 LoRA 를 작성해야 하는게 아닌가 생각하기도 한다.

사용자 삽입 이미지


사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

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

4060Ti 구매한 후에 한번 생성해 보았다. HiRES fix. 부분이나 4배 업스케일링 부분에서는 확실히 많은 성능 향상을 체감할 수 있다. 반대로 작은 이미지, 예를 들어 512 x 768 정도의 이미지 생성에는 그렇게 성능향상을 못 느낀다.

사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지

사용자 삽입 이미지



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

10월 22일에 Stable Diffusion 3.5 가 발표되었습니다.

- 총 3가지로 공개된다고 하네요.

① Stable Diffusion 3.5 Large: 80 억개 파라메터
② Stable Diffusion 3.5 Large Turbo: Large 의 ADD(Adversarial Diffusion Distillation) 적용 모델. 4 스텝 용.
③ Stable Diffusion 3.5 Medium: 25 억개 파라메터

우선 Large 와 Large Turbo 가 발표되었습니다. Medium 은 10/29 공개 예정이라 하네요.

- 앞서 발표했던 SD3 의 Medium 모델이 20 억개의 파라메터를 가졌고, SDXL 은 26 억개입니다. FLUX.1 Dev 가 120억개입니다. 파라메터가 많으면 더 좋은 이미지를 얻을 수 있는건 맞지만, 고사양을 필요로 하기 때문에 대중성에서는 떨어집니다. 많이 떨어지죠. 아직까지 SDXL 에서 벗어나지 못하는 이유기도 합니다.

사용자 삽입 이미지

SD 3.5 구조. SD3 와 거의 유사하다.


SD3.5 의 구조는 SD3 와 거의 같습니다. 다이어그램에는 CLIP 에서 256 토큰을 사용한다고 되어있는데 뭔지는 잘 모르겠네요.

FLUX.1 Dev 이 사용하기 어려워서 (이미지 생성 속도 때문에) 고민되었는데 Medium 은 이미지 생성속도가 SDXL 과 비슷한 정도일 것으로 생각되어서 사용해볼만 하겠네요.

※ 파라메터 수 비교

SD 1.4/1.5: 860M
SD 2.0/2.1: 865M
SDXL: 2.6B
SD3 Medium: 2B
SD3.5 Medium: 2.5B
SD3.5 Large: 8B
FLUX.1 Dev: 12B

- 2024.10 현재 가장 많이 사용되는 모델은 SDXL 입니다. SD3.5 나 FLUX.1 Dev 이 대중화되려면 조금 더 시간이 필요해 보이네요. 소비자들이 많이 사용하는 GPU 가 xx60 (3060, 4060, 1650, 2060, ...) 급의 GPU 인데 이정도 스펙에서는 SDXL 을 사용하면 쾌적하게 사용할 수 있으니까요. 저도 SD1.5, SDXL 이 주력입니다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
FLUX.1 Dev 사용하기

※ 원칙적(?)으로는 아래와 같이 사용할 수 있다.

1. https://huggingface.co/black-forest-labs/FLUX.1-dev/tree/main (공식 리포지토리)
   flux1-dev.safetensors 및 ae.safetensors 파일 다운로드

2. https://huggingface.co/comfyanonymous/flux_text_encoders/tree/main
   clip_l.safetensors 및 t5xxl_fp16.safetensors 파일 다운로드
   -> 공식 리포지토리의 text_encoder, text_encoder_2 아래에 있는 파일과 같은 파일이다.

3. 다운로드 받은 파일을 stable-diffusion-webui-forge 의 디렉토리로 옮김
flux1-dev.safetensors  -> models/Stable-diffusion/
ae.safetensors         -> models/VAE/
clip_l.safetensors     -> models/text_encoder/
t5xxl_fp16.safetensors -> models/text_encoder/
3. stable-diffusion-webui-forge 실행 후, 아래와 같이 세팅
UI: flux
CheckPoint: flux1-dev
VAE / TextEncoder: clip_l.safetensors, t5xxl_fp16.safetensors, ae.safetensors

4. GERERATE 버튼 클릭!

- 이렇게 실행하려면 최소한 24GB VRAM 을 가진 nVidia GPU 와 64GB 의 시스템 메모리가 필요하다.

- 일부 파일은 여기서 받음: https://huggingface.co/camenduru/FLUX.1-dev/tree/main

※ FP8, NF4으로 구성

속도를 빠르게 하고 메모리 사용량을 줄이기 위한 목적으로 FP8 이나 NF4 를 사용한 모델을 사용할 수 있다. 이걸로 해야 필자의 사양(RTX 2060 12GB, MEMORY 64GB)에서 실행된다.


사용자 삽입 이미지



t5xxl_fp16.safetensors -> t5xxl_fp8_e4m3fn.safetensors     https://huggingface.co/comfyanonymous/flux_text_encoders/tree/main
flux1-dev.safetensors  -> flux1-dev-fp8.safetensors        https://huggingface.co/Kijai/flux-fp8/tree/main
flux1-dev.safetensors  -> flux1-dev-bnb-nf4-v2.safetensors https://huggingface.co/lllyasviel/flux1-dev-bnb-nf4/tree/main

아니면 아래의 All-in-one 타입 을 사용할 수 있다.

https://huggingface.co/Comfy-Org/flux1-dev/tree/main FP8

※ 메모리 구성

전용 GPU 메모리(Dedicated GPU Memory): GPU 의 VRAM 용량
공유 GPU 메모리(Shared GPU Memory): GPU 에 의해 공유되는 시스템 메모리. 사용 가능한 용량은 시스템 메모리의 절반

- 스왑 메모리 위치
-- CPU: 모델을 GPU 메모리 및 시스템 메모리에 위치
-- Shared: 모델을 GPU 메모리 및 공유 GPU 메모리에 위치. 좀 더 빠른 대신 실행 이슈(크러시)가 발생할 수 있다.

- GPU Weights (MB): GPU 에 적재할 모델의 크기. 크면 클수록 좋지만, 이미지 생성시에도 GPU 메모리를 필요로 하기 때문에 적당히 조절해야 한다.

- 스왑 메쏘드
-- Queue: 모델 적재 -> 연산 -> 다른 모델 적재 -> 연산의 순서로 차례대로 진행된다.
-- Async: 모델 적재 -> 연산 및 다른 모델 적재 -> 연산 및 다른모델 적재 의 순서로 동시에 처리된다. Queue 보다 빠르지만, 모델에 따라 갑자기 매우 느려질때가 있다. Async 와 Queue 를 비교해보고 빠른걸 선택하자.

사용자 삽입 이미지

CivitAI 에 공개된 이미지 프롬프트를 보고 따라한 그림. FLUX 로 생성했다. https://civitai.com/images/31943195



https://github.com/lllyasviel/stable-diffusion-webui-forge/discussions/981
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 베어백 #1 Part 2/2

처음에 뽑은건 아래 첫번째 그림이다. 이게 맘에 들어서 이것저것 튜닝해 보았지만, 왠지 이와 유사한 그림이 나오지는 않았다.
사용자 삽입 이미지

그래도 나름 괜찮아 보인다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지