체크포인트를 바꿨다. 오랜만에 머지를 다시 했는데, 괘 괜찮게 나왔다. 8월 초에 한번 바꾸고 근 3개월 만이다. 그동안 몇번 머지를 시도했지만 기존것 보다 안 좋다고 판단되어서 사용하지 않고 있었다. 다행이도 이번엔 기존것 보다 잘 나왔다.
슬슬 SDXL 이나 SD3, FLUX.1 등으로 바꾸긴 해야 한다고 생각하긴 하는데 아직 못 바꿨다. PC의 업그레이드는 마쳤고, 지금은 SDXL 정도는 무난하게 사용가능하긴 하지만 아직 맘에 드는 그림체가 아니라서 못 바꾸고 있다. 하지만 꾸준히 SDXL 이나 FLUX.1 으로는 생성하고 있다. 웬지 아래와 같은 그림체가 안나와서 맘에 안들 뿐이다. 이러다가 직접 LoRA 를 작성해야 하는게 아닌가 생각하기도 한다.
① 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 과 비슷한 정도일 것으로 생각되어서 사용해볼만 하겠네요.
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 의 디렉토리로 옮김
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)에서 실행된다.
전용 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
"FastSD CPU" CPU 만을 사용해서 이미지를 생성한다. LCM 이나 OpenVINO 를 사용하는듯.
예전에 한번 써보고 관심 없었는데, 갑자기 CPU 로 사용하는건 어떨까 해서 찾아봤다.
스텝은 4 이하로 설정하는게 핵심이다. 4 이하로 설정해도 품질이 좋은 이미지를 생성하기 위해 여러가지 작업을 한다. 물론 그렇지 않은 모델보다는 떨어지지만, 속도가 매우 중요한 경우에는 이 방법밖에 없다.
i7-7700K 에서 1장 생성하는데 약 30초 정도 걸린다. 품질도 생각보다는 좋다.
아래와 같이 LCM-LoRA 모델을 사용했다. OpenVINO 로 사용해도 속도는 크게 달라지지 않았다. OpenVINO를 사용해 성능을 향상시키려면 최신 CPU가 필요한것 같기도 하다. 예를 들어 AVX-VNNI 를 지원하는 CPU 말이다. (OpenVINO 는 AVX2 를 지원하는 CPU 에서 사용할 수 있다)
Stability AI 의 Stable Diffusion 3 (SD3) 가 주춤한 사이 FLUX.1 이 공개되었습니다. 8월 1일에 공개되었는데 이제 주목하게 되었네요. Stable Diffusion 시리즈를 만든 개발자 중 일부가 나와 Black Forest Labs 라는 회사를 차렸는데, 이 회사의 첫번째 생성형 AI입니다. 독일 회사입니다.
FLUX.1 의 성능이 매우 좋다고 해서 관심을 많이 가지고 있습니다. 전 아직 안 써 봤습니다만, SD3 보다는 좋아보입니다. SD3 는 라이선스에 이슈가 있어서 아직까지는 대중화 될지 안될지 모릅니다. FLUX.1 의 경우 특히 "손"도 잘 그리는것으로 알고 있습니다. 엄청난 성능에 SD3 로는 대응이 안되어서 Stability AI 에서는 SD 3.1 을 내놓을 예정이라 합니다.
현재 SD 는 개발사에서 제공한 모델이 주류가 아닙니다. SD1.5 의 경우 개발사에서 제공한 모델보다는, 수많은 사용자들이 만든 모델들을 사용하고 있고요, Dreamshaper 8 정도가 유명합니다. 저도 제가 병합한걸 쓰고 있습니다. SDXL 의 경우 개발사에서 제공한 모델 보다는, 사용자들이 학습시킨 Pony Diffusion 이나 Animagine XL, JuggernautXL v9 기반의 모델이 더 널리 쓰이고 있죠. 심지어 Novel AI 3 도 SDXL 기반으로 알려져 있고 꽤 성능이 좋죠. 이후에 나온 SD3 나 FLUX.1 도 마찬가지일거라 생각합니다. 사용자들이 학습시키려면 라이선스가 중요한데 일단 SD3 는 사용하기 어렵겠네요. 약 6개월 정도 후면 사용자들이 학습시킨 모델이 나올텐데 이떄쯤에 판가름 되겠죠.
FLUX.1 은 Pro, Dev, Schnell 의 3가지로 제공되는데 Pro 는 유료고, 공개된 건 Dev 와 Schnell 입니다. 120억개 파라메터를 가지고 있습니다. "Schnell"은 4스텝 고속 추론 모델이라 성능이 더 좋은 "Dev" 모델이 주가 될겁니다. 약어로 "FLUX.1 D"라고 부르네요. 아직 Stable Diffusion WebUI (SDUI) 에서는 지원이 안되고, Stable Diffusion WebUI Forge (SDF) 에서 지원된다고 하네요. SDF 는 예전에 VRAM 이 낮은 기기에서도 느리지만 이미지 생성이 되어서 한때 잘 썼었는데요, 다시 보니깐 반갑네요. (물론 같은 파라메터를 주어도 SDUI 와 유사한 이미지를 만들지 않습니다. 내부 알고리즘이 호환이 안되는거라서요)
FLUX 라는건 "선속"이라는 의미입니다. 특정 공간에서의 어떤 물리량의 "흐름"을 의미합니다. 주변에서 흔히 볼 수 있는 FLUX 라는 용어는 광선속을 이야기할때 주로 사용합니다. 광선속의 단위가 루멘, 칸델라, 럭스이고, 조명 기구의 밝기를 나타냅니다. 단위 면적당 광자의 흐름을 나타내죠.