AI 이미지/Stable Diffusion

Hyper-SD와 Hyper-SDXL 패스트 모델

하늘이푸른오늘 2024. 6. 21. 23:34

Hyper-SD와 Hyper-SDXL은 1~8 단계만에 고품질의 이미지를 생성할 수 있다고 주장하는 농축형(distilled) 스테이블 디퓨전 모델입니다. 이글에서 다루는 내용은 다음과 같습니다.

  • 하이퍼 스테이블 디퓨전 모델의 작동원리
  • LCM, Turbo, Lightning 등 다른 패스트 모델과의 차이
  • AUTOMATIC1111 및 ComfyUI에서 사용하는 방법
  • 최적 이미지 설정

다음은 목차입니다.

소프트웨어

논문저자가 공개한  하이퍼-SD UNet과 LoRA모델을 사용하려면, ComfyUI를 사용할 필요가 있습니다. 다만, LoRA 모델은 어떠한 체크포인트 모델과도 호환됩니다.

하이퍼-SD 방법론으로 학습된 커스톰 체크포인트 모델을 사용하고자 할 경우엔 AUTOMATIC1111과 ComfyUI 를 사용하면 됩니다. 하지만, 이 글에서는 ComfyUI를 사용해서 하이퍼-SD 모델을 적용하는 방법만 다루겠습니다. ComfyUI 는 요즘 많이 뜨고 있는 노드 링크 기반의 스테이블 디퓨전 웹 UI입니다. 설치 및 기초 사용법투토리얼을 읽어보시면 도움이 되실 겁니다. 

AUTOMATIC1111에서 사용하는 방법은 원본 글을 참고하세요.

하이퍼 스테이블 디퓨전 모델이란?

하이퍼 SD 모델은 샘플링 단계를 줄여 이미지 생성 속도를 높이기 위한 모델의 일종입니다. 샘플링에 관한 좀더 자세한 사항은 여기를 읽어보세요.

잠재 공간에서의 샘플링

스테이블 디퓨전 모델은 잠재공간에서 샘플링하는 방식으로 모델의 크기를 줄이고 이미지 생성 속도를 높이고 있습니다.

3개의 컬러 채널(R, G, B)을 가진 1024x1024 크기의 이미지를 생성하려면, 1024 x 1024 x 3 = 3,145,728 개의 차원이 필요합니다. 즉 각각의 이미지는 3백만개 이상의 값을 가지게 됩니다.

이를 스테이블 디퓨전의 가변 자동 인코더(VAE, variable auto-encoder)는 1024x1024 이미지를 128x1024x4 =65,536 차원으로 압축합니다. 1/48 로 압축하는 거죠. 즉, 스테이블 디퓨전은 VAE 아키텍처리를 사용하여 이미지 생성속도를 약 48배 향상시킵니다.

샘플링 프로세스

샘플링 프로세스는 역 디퓨전 프로세스를 해결하는 방식으로 이루어집니다. 원래 수학적으로는 연속적인 프로세스이지만, 우리는 여러개의 샘플링 단계로 나누어 수치적으로 풀어가게 됩니다. 좀 더 자세한 사항은 스테이블 디퓨전 기본 이론을 읽어보시기 바랍니다.

디퓨전 프로세스는 65,535 차원에서 이루어지기 때문에 시각화시키기 힙듭니다. 따라서 주 성분 분석(PCA, Principal Component Anaysis)를 사용하여 디퓨전 프로세스를 2차원으로 투영하면 아래와 같이 볼 수 있습니다.

20 단계의 Euler 샘플링의 샘플 궤적

처음에는 단계 변화가 매우 큽니다. 이때 전체적인 구도가 정의됩니다. 후반부로 갈 수록 단계가 줄어들고 세밀한 디테일이 정제됩니다. 이 과정을 통해 최초에는 무작위 잡음이던 샘플이 샘플링 과정을 통해 점점 깨끗한 이미지로 수렴하게 됩니다.

LCM 모델

하이퍼 SD 모델을 이해하려면 먼저 LCM(Latent Consistency Model)과 그 한계에 대해 이해해야 합니다.

LCM 은 야심찬 모델입니다. 이 모델은 단 한계만에 무작위 잡음에서 선명한 이미지로 이동할 수 있도록 모델을 학습시킵니다.

하지만, 실제로는 완벽할 수는 없스며 아래 그림과 같이 오차가 발생합니다.

올바른 지점으로 점프하는 것이 아니라 약간의 오류가 포함되는 것입니다. 특히 LCM LoRA를 사용하여 샘플링 속도를 올리면 동일한 이미지를 얻지 못하는 경우가 많습니다.

이와같이 1단계 LCM 모델은 달성하기 어렵습니다. 그 대신 다단계의 LCM 샘플링을 수행하도록 새로운 LCM 모델을 학습시킵니다. 그 단계는 아래와 같습니다.

  1. "최종" 이미지를 얻도록 LCM 모델을 적용합니다.
  2. 잡음 스케줄에 맞도록 잡음을 추가합니다(sigma).
  3. LCM 모델을 다시 적용해 더 나은 "최종" 이미지를 얻습니다.
  4. 2와 3을 반복합니다.

아래는 2단계 LCM 샘플링을 보인 것입니다.

하이퍼 SD 모델

하이퍼 SD 및 하이퍼 SDXL 모델은 일관성 궤적 모델(CTM, Consistency trajectory model)의 일종입니다. CTM은 샘플링 속도를 올릴 때, 기존의 샘플 궤적의 중요성을 인지하여, 샘플 궤적을 따라 큰 단계로 진행하는 방식입니다.

4 단계 CTM 혹은 하이퍼 SD 모델

하이퍼 SD 모델은 원래의 CTM모델에 비해 다음과 같은 장점이 있습니다.

  • 샘플링 궤적을 8단계, 4단계, 2단계, 1단계로 나누는 방법을 구체적으로 선택할 수 있습니다.
  • 하이브리드 손실 함수를 사용해 정확성과 심미성을 가진 이미지 사이의 균형을 이룹니다.
  • 인간의 피드백을 통해 성능 향상이 가능합니다.

하이퍼 SD 모델은 8단계로 학습되고, 이후 4단계, 2단계 및 1단계로 학습됩니다. 1단계 모델이 가장 최후에 학습되고 더 많은 단계 모델로 초기화되므로, 1 단계 모델을 통합모델이라고도 하며 1,2,4,8 단계를 수행할 수 있습니다.

다른 신속 모델과의 차이

하이퍼 SDXL vs 스테이블 디퓨전 터보

스테이블 디퓨전 터보SDXLStable Diffusion 3를 위해 구현된 신속 모델 법입니다. 터보 모델은 적대적 확산 농축(ADD, Adversarial Diffusion Distillation)을 사용해 1~4단계로 이미지를 생성하도록 학습되었습니다. ADD는 재구성과 적대적 손실의 조합을 통해 이미지 선명도를 향상시킵니다.

SDXL 터보 모델은 512x512 이미지만 생성할 수 있으며, 부정적 프롬프트을 사용할 수 없어 사용에 제한이 있습니다.

터보 모델은 개략적으로는 샘플 궤적을 따르는 다단계 샘플링을 수행하지만, 이를 따르도록 명시적으로 학습된 것은 아닙니다. 이러한 점에서 하이퍼 SD가 좀 더 정확하다고 볼 수 있습니다.

하이퍼-SDXL vs LCM

하이퍼 SD와 LCM은 1 단계로 학습시킬 경우엔 동일합니다. 다만 샘플링 프로세스가 다릅니다. LCM은 최종 이미지를 직접 예측하고, 예상되는 잡음 수준에 맞춰 거꾸로 잡음을 추가합니다. 하이퍼 SD의 경우엔 원 샘플링 경로를 따라 잡음 이미지를 예측합니다.

이때문에 하이퍼 SD의 학습이 LCM보다 편할 것으로 예측됩니다.

하이퍼-SDXL과 SDXL 라이트닝(Lightning)

SDXL 라이트닝은 터모와 비슷하게 재구축 및 적대적 손실을 사용합니다. 스테이블 라이트닝은 스테이블 디퓨전 모델에서 사전 훈련된 U-Net 백본을 사용하여 판별기를 개선합니다. 이를 통해 잠재 공간에서 직접 판별할 수 있으므로 터보보다 고품질의 이미지를 생성할 수 있습니다.

하이퍼-SDXL팀은 자신의 모델이 SDXL 라이트닝보다 정량적으로 우수하다고 주장합니다.

ComfyUI에서 하이퍼 SDXL 사용방법

여기에 들어가시면 모든 하이퍼 SDXL 및 하이퍼 SD 모델을 볼 수 있습니다. 또 여기에는 이에 해당하는 ComfyUI 워크플로가 있습니다. 하지만ㅇ 여기에서는 유용하다고 생각되는 모델 몇 개만 소개하겠습니다.

하이퍼-SXDL 1 단계 LoRA

이  LoRA는 1,2,4,8 샘플링단계에 사용할 수 있습니다. 

먼저 하이퍼-SDXL 1단계 LoRA를 다운로드 받고, ComfyUI\models\loras에 넣어줍니다. A1111과 공유할 경우엔 여기를 읽어보세요. 

그 다음엔 아래의 워크플로를 다운로드 받습니다.

hyper-sdxl-1-step-lora.json
0.01MB

이때 CFG 척도는 0.6에서 1.2 정도 내외에서 설정합니다. 

단, 이 LoRA는 무분류기 안내(CFG) 없이 학습하였기 때문에, 부정적 프롬프트는 지원하지 않습니다.

아래는 이 워크플로로 생성한 이미지입니다.

하이퍼-SDXL 8 단계 LoRA (w CFG)

이 SDXL LoRA는 CFG 척도 5~8을 지원합니다. 단, 8단계만 사용해야 합니다.

하이퍼-SDXL 8단계 LoRA를 다운로드 받고, 아래의 ComfyUI 워크플로를 다운로드 받습니다.

hyper-sdxl-cfg-8-step-lora.json
0.01MB

아래는 이 워크플로를 사용해 생성한 이미지입니다.

하이퍼 SDXL 모델 워크플로

아래는 하이퍼 SDXL 모델을 사용하여 이미지를 생성하는 워크플로입니다. 살펴보시면 아시겠지만, 기본 워크플로에서 체크포인트 모델만 Juggernaut X Hyper 을 사용한 것입니다.

Hyper-SDXL-checkpoint.json
0.01MB

아래는 이 워크플로를 사용해 생성한 이미지입니다.

워크플로 사용법

이들 워크플로를 사용하려면 먼저 ComfyUI 매니저를 설치한 상태에서 빠진 커스톰 노드를 설치하셔야 합니다. 

먼저 위의 워크플로를 ComfyUI 화면에 Drag&Drop 하고, 빨간색 노드가 나타나면 빠진 커스톰 노드를 설치하면 됩니다. 

하이퍼-SDXL 이미지 비교

많은 분들이 이미지 생성속도를 올리는 데 관심이 많기 때문에 하이퍼 SDXL 모델에 관심이 많으실 것입니다. 그래서 일반 체크포인트 모델과 하이퍼 모델을 비교해보겠습니다.

다만 여기에서는 커스톰 Hyper-SDXL 체크포인트 모델은 비교하지 않을 예정입니다. 커스톰 미세조정 모델의 경우 다른 효과도 포함되어 있어서 비교하기 쉽지 않기 때문입니다.

1-스텝 SDXL UNet 모델

저는 이 모델은 추천하지 않지만, 1-스텝 UNet SDXL 모델워크플로를 비교해 보겠습니다. 프롬프트는 아래와 같습니다.

프롬프트: beautiful female elf 25 yo silver hair, movie still, full body photo, , d&d adventurer in red torn leather armor, boot with two hands, cellar, dimly lit, breakthrough light from window, looking at viewer, mysterious smile, unusual angle 

아래 왼쪽은 1-step Unet SDXL 모델이고, 오른쪽은 SDXL 베이스 모델을 사용해 생성한 이미지입니다.

Hyper-SDXL UNet 1-스텝 SDXL 베이스

돌려보시면 1스텝 하이퍼 SDXL 모델은 정말 순식간에 생성합니다. 단 모델을 불러온 상태에서 생성하면 제 3070에서 3초만에 생성됩니다. SDXL 베이스 모델의 경우 20스텝을 사용했을 때 12초 정도 소요되니 1/4 정도만에 생성된 겁니다.

하지만, 이미지를 대충 봐서는 모르겠지만, 상세히 살펴보면 미세한 디테일이 많이 떨어짐을 알 수 있습니다.

또한, 1-스텝 UNet 모델은 사실적 사진을 잘 생성해 내지 못합니다. 

프롬프트: color photo of a man in suit, city
Hyper-SDXL UNet 1-스텝 SDXL 베이스

프롬프트에 Photo라고 지정했음에도 약간 카툰 스타일로 생성되었음을 알 수 있습니다. 또한 전체적인 구성이 문제가 있다고 합니다.

결론적으로 1 단계만으로 이미지를 생성하는 것은 아주 좋은 아이디어지만, 너무 많이 나간게 아닌가 합니다.

1 스텝 SDXL LoRA 모델

여기에서는 아래의 워크플로를 사용해서 1스텝 LoRA 모델을 1, 2, 4, 8 단계로 변화시키면서 비교해 보겠습니다.

1 step 2 step
4 step 8 step

흠... 1 단계로 생성할 때 왜 남자하고 섞여 나오는지를 모르겠네요. 아무튼 단계를 늘릴수록 이미지가 좋아지는데, 8단계에서는 약간 채도가 높아진 느낌입니다. 4단계 정도가 좋을 것 같네요.

채도는 CFG 값을 변경해서 제어할 수 있습니다. CFG값을 낮추면 이미지가 부드러워집니다.

CFG 0.7 CFG 1.0 CFG 1.3

또한 디테일은 TCD 샘플링 노드의 eta 값으로 조절할 수 있습니다. eta를 낮추면 디테일이 추가됩니다.

eta 0.4 eta 0.7 eta 1.0

대부분의 경우, 하이퍼 LoRA를 사용하면 너무 반짝 거리는 느낌에 카툰 느낌이 강하다는 생각이 듭니다. 이때문에 사실적인 스타일을 생성하기 힘들고요. 하지만, Juggernaut XL 모델에 LoRA를 함께 사용하면 사실적인 스타일도 잘 생성됩니다. 아래처럼요.

하이퍼 LoRA를 사용하면 다른 체크포인트 모델과도 함께 사용할 수 있으니, 두가지의 장점을 살릴 수 있을 듯 싶네요.

8 스텝 SDXL CFG LoRA

마지막으로 8 스텝 SDXL CFG LoRA를 사용해 이미지를 생성해 보겠습니다. 이 모델은 8 단계에만 사용할 수 있습니다. 단계를 낮추면 흐릿한 영상이 사용됩니다. 

hyper-sdxl-cfg-8-step-lora.json
0.01MB

이미지는 약간 너무 부드러워지는 편인 듯 합니다. 그런데, 다른 미세조정 SDXL 모델과 함께 쓰면 별로 좋은 결과가 나오지 않네요. 아쉽습니다.

====

이상입니다.