피드로 돌아가기
Hugging Face BlogAI/ML
원문 읽기
Hugging Face가 Transformer 기반 확산 모델에 Quanto 양자화를 적용해 SD3의 GPU 메모리 사용량을 18.765GB에서 8.2GB로 55% 감소
Memory-efficient Diffusion Transformers with Quanto and Diffusers
AI 요약
Context
Transformer 기반 확산 모델은 0.6B~8B 파라미터 규모로 확장되면서 메모리 요구량이 급증했다. Stable Diffusion 3는 텍스트 인코더 3개와 확산 백본, 이미지 디코더로 구성되어 FP16 정밀도에서 18.765GB의 GPU 메모리를 필요로 하며, 이는 일반 사용자의 GPU 접근성을 크게 제한했다.
Technical Solution
- Quanto 양자화 툴킷 적용: PyTorch 기반의 Hugging Face Optimum 라이브러리에 포함된 Quanto를 사용해 모델 파라미터를 FP8 형식으로 변환
- Diffusion Transformer 양자화: PixArt-Sigma, Stable Diffusion 3, Aura Flow의 Transformer 백본에
quantize(pipeline.transformer, weights=qfloat8)적용 후freeze()호출 - 텍스트 인코더 선택적 양자화: SD3의 경우 두 번째 텍스트 인코더는 양자화 불가로 판단해 첫 번째와 세 번째 인코더만 양자화 적용
- VAE 제외 정책: 수치 불안정성을 방지하기 위해 이미지 디코더(VAE)는 양자화하지 않음
- 저장 및 로드 구현:
QuantizedPixArtTransformer2DModel.from_pretrained()으로 양자화된 모델을 저장하고 로드하는 표준화된 인터페이스 제공
Impact
- PixArt-Sigma (배치 1): 메모리 12.086GB → 11.547GB (4.5% 감소), 레이턴시 1.200초 → 1.540초
- PixArt-Sigma (배치 1, 텍스트 인코더 포함): 메모리 12.086GB → 5.363GB (55.6% 감소), 레이턴시 1.200초 → 1.601초
- PixArt-Sigma (배치 4, 텍스트 인코더 포함): 메모리 12.087GB → 5.364GB (55.6% 감소), 레이턴시 4.482초 → 5.141초
- Stable Diffusion 3 (배치 1, 텍스트 인코더 1·3 양자화): 메모리 16.403GB → 8.204GB (49.9% 감소), 레이턴시 2.118초 → 2.789초
Key Takeaway
대규모 Transformer 확산 모델에서 텍스트 인코더까지 함께 양자화하면 메모리 사용량을 약 50% 감소시킬 수 있으며, 이는 FP8 정밀도와 약간의 레이턴시 트레이드오프(10~30% 증가)로 달성 가능하다. 모델 양자화는 LLM에서는 널리 사용되지만 확산 모델에서는 덜 탐색된 영역으로, 소비자 GPU에서의 대규모 생성 모델 실행 가능성을 크게 확대하는 최적화 기법이다.
실천 포인트
Transformer 기반 확산 모델을 사용하는 개발자가 메모리 제약이 있는 환경에서 Quanto를 통해 Diffusion Transformer와 텍스트 인코더를 FP8로 양자화하면, 50% 이상의 메모리 감소를 달성하면서도 생성 품질 저하는 무시할 수 있는 수준으로 유지할 수 있다.