피드로 돌아가기
Why your diffusion model is slow at batch size 1 (and what actually helps)
Dev.toDev.to
AI/ML

H100 기준 SDXL UNet 단계 42ms에서 28ms로 33% 단축

Why your diffusion model is slow at batch size 1 (and what actually helps)

Elise Moreau2026년 5월 19일4advanced

Context

Batch size 1의 Diffusion Inference 상황에서 단순 FLOPs가 아닌 Kernel launch overhead와 Attention memory traffic이 주요 병목으로 작용하는 구조적 한계 존재. 많은 엔지니어가 모델 Distillation을 통한 Step 수 감소에 집중하나, 이는 GPU Idle 상태를 방치한 채 품질 저하만 초래하는 접근 방식임.

Technical Solution

  • torch.compile(mode="reduce-overhead") 적용을 통한 CUDA Graphs 활성화로 수만 개의 Kernel launch overhead를 단일 실행으로 통합
  • H100 하드웨어 최적화 기반의 FlashAttention-3 도입을 통한 2K 고해상도 시퀀스 처리 효율 및 Memory throughput 극대화
  • Sequential CFG 호출 방식을 Batch size 2의 단일 Forward pass로 변경하여 GPU 유휴 자원 활용 및 Per-step latency 절감
  • 고정된 Aspect ratio 버킷팅 전략을 통해 CUDA Graphs의 최대 제약 사항인 Dynamic shape로 인한 재컴파일 오버헤드 방지
  • Tiled VAE decoding 또는 TAESD 도입을 통한 고해상도 생성 시 VAE 디코드 단계의 병목 지점 분리 해결

- Batch size 1 추론 시 `torch.profiler`를 통해 Kernel launch gap 및 Host-to-device sync 비율 확인 - `torch.compile` 사용 시 `fullgraph=True` 설정 및 Graph break를 유발하는 `.item()` 호출이나 조건문 제거 - GPU 세대별 최적 Attention Backend(FA2 vs FA3 vs xFormers) 매핑 테이블 구축 - CFG 구현 시 Conditional/Unconditional 프롬프트를 단일 Batch로 묶어 처리하는지 검증

원문 읽기