피드로 돌아가기
Hugging Face BlogAI/ML
원문 읽기
Microsoft가 ONNX Runtime과 Olive를 활용해 SD Turbo와 SDXL Turbo 추론 성능을 SDXL Turbo 기준 229%, SD Turbo 기준 120% 향상
Accelerating SD Turbo and SDXL Turbo Inference with ONNX Runtime and Olive
AI 요약
Context
이전 Stable Diffusion 모델은 이미지 생성에 30단계 이상이 필요했으며, 추론 성능이 PyTorch 기준선 대비 최적화 여지가 있었다.
Technical Solution
- ONNX Runtime CUDA 및 TensorRT 실행 제공자에 최적화 적용: 동적 형태(dynamic shape) 입력에 대한 성능 개선
- CUDA Graph 활성화: 정적 형태(static shape) 입력에 대해 오버헤드 감소
- Flash Attention V2 추가: 어텐션 연산 속도 향상
- 텍스트 인코더 추출 출력 제거: clip_skip 매개변수로 지정된 hidden state만 유지
- SkipGroupNorm 융합: 그룹 정규화와 선행 Add 노드를 단일 연산으로 통합
- Olive 모델 최적화 도구 활용: 하드웨어 인식 ONNX 모델 생성
- fp16 VAE 활성화: 부동소수점 정밀도 감소를 통한 메모리 및 속도 최적화
Impact
- SDXL Turbo: ONNX Runtime TensorRT이 PyTorch Compile 대비 최대 229% 처리량 향상
- SD Turbo: ONNX Runtime CUDA가 PyTorch Compile 대비 최대 120% 처리량 향상
- ONNX Runtime CUDA 정적 형태: PyTorch 대비 일관된 성능 개선
- ONNX Runtime CUDA 동적 형태: 단일 엔진 구축으로 다양한 배치 크기 및 이미지 해상도 동시 처리 가능
Key Takeaway
생성형 모델 추론 최적화 시 ONNX Runtime과 같은 범용 추론 엔진을 통해 하드웨어별 최적화(CUDA Graph, Flash Attention V2, 연산 융합)를 단계적으로 적용하면 프레임워크 레벨(PyTorch)의 한계를 초과하는 성능 향상을 달성할 수 있다.
실천 포인트
Stable Diffusion 기반 이미지 생성 서비스를 운영하는 팀에서 ONNX Runtime과 Olive를 도입해 모델을 최적화하면 동일한 GPU 하드웨어에서 처리량을 120~229% 증가시킬 수 있으며, C#, Java 등 Python 이외의 언어로도 추론 파이프라인을 구축할 수 있다.