Stable Diffusion 3.5 Large와 Diffusers 통합

Hugging Face는 Stable Diffusion 3.5 (SD3.5)를 Diffusers 라이브러리에 통합하여 Stable Diffusion 3을 개선하도록 설계된 8B 파라미터 모델에 대한 접근을 제공합니다. 이번 릴리스에는 두 가지 주요 체크포인트가 포함됩니다: 표준 8B 대형 모델과 타임스텝-디스틸된 8B 대형 모델로, 훨씬 적은 단계에서 고품질 이미지 생성을 가능하게 합니다.

SD3.5 Large의 아키텍처 향상

Stable Diffusion 3.5 Large는 SD3 Medium과 유사한 트랜스포머 아키텍처를 유지하면서도 확장성과 성능을 향상시키기 위해 두 가지 주요 기술적 변화를 도입합니다:

  • QK Normalization: SD3.5 Large는 안정성을 보장하기 위해 대형 트랜스포머 모델을 학습할 때 표준으로 사용되는 QK 정규화를 구현합니다.
  • Dual Attention Layers: 모델은 MMDiT 블록에서 각 모달리티 스트림에 사용되는 단일 어텐션 레이어를 이중 어텐션 레이어로 교체합니다.

VAE, 텍스트 인코더, 노이즈 스케줄러 등을 포함한 다른 구성 요소들은 SD3 Medium에서 사용된 것과 동일하게 유지됩니다.

Diffusers를 이용한 추론 구현

SD3.5는 사용자가 Hugging Face Hub에서 약관에 동의하고 huggingface-cli login을 통해 인증해야 하는 게이트 모델입니다. 추론에 권장되는 정밀도는 torch.bfloat16입니다.

표준 및 터보 추론

사용자는 StableDiffusion3Pipeline을 사용하여 표준 8B 모델을 구현할 수 있습니다. "turbo" 모델이라고 불리는 타임스텝-디스틸 버전은 classifier-free guidance가 필요 없으며 일반적으로 4~8 단계만으로 이미지를 생성하여 지연 시간을 크게 줄입니다.

메모리 최적화 및 양자화

8B 파라미터 규모 때문에 SD3.5 Large는 상당한 메모리를 필요로 합니다. Diffusers는 bitsandbytes 양자화를 지원하여 일반 소비자용 하드웨어에서도 추론이 가능하도록 합니다. BitsAndBytesConfig를 사용해 트랜스포머를 "NF4" 정밀도로 로드하면 VRAM 사용량을 크게 줄일 수 있습니다. pipeline.enable_model_cpu_offload()를 호출하면 추가적인 메모리 절감도 가능합니다.

파인튜닝 및 LoRA 학습

bitsandbytespeft를 결합하면 24GB VRAM을 가진 일반 소비자 GPU에서도 SD3.5 Large를 파인튜닝할 수 있습니다. 기존 SD3 학습 스크립트와 호환되지만, 양자화를 위해서는 특정 수정이 필요합니다:

  1. 양자화 설정 또는 사전 양자화된 체크포인트를 사용해 트랜스포머를 초기화합니다.
  2. peft 라이브러리의 prepare_model_for_kbit_training()을 적용해 모델을 양자화 학습에 준비합니다.

유연한 모델 로딩

Diffusers는 SD3Transformer2DModel에 대한 from_single_file 메서드를 제공하여 사용자가 Stability AI가 공개한 원본 .safetensors 체크포인트 파일에서 직접 트랜스포머를 로드하고 이를 StableDiffusion3Pipeline에 통합할 수 있게 합니다.

Sources