ONNX Runtime와 Olive를 사용한 SD Turbo 및 SDXL Turbo 추론 가속

TL;DR

Hugging Face와 Microsoft는 ONNX Runtime와 Olive 최적화 도구를 사용하여 SD Turbo와 SDXL Turbo 추론을 최적화했으며, 그 결과 PyTorch에 비해 SDXL Turbo는 최대 229%, SD Turbo는 120%까지 처리량이 증가했습니다. 이러한 최적화를 통해 한 단계만으로도 고성능 이미지 생성이 가능해졌으며, C# 및 Java와 같은 비-Python 언어에서도 모델을 활용할 수 있게 되었습니다.

성능 벤치마크: ONNX Runtime vs. PyTorch

ONNX Runtime는 NVIDIA GPU에서 SD Turbo와 SDXL Turbo 모델 모두에 대해 테스트된 모든 배치 크기와 스텝 수에서 PyTorch보다 크게 앞섭니다.

주요 처리량 향상

  • SDXL Turbo: PyTorch에 비해 처리량이 최대 229%까지 증가했습니다.
  • SD Turbo: PyTorch에 비해 처리량이 최대 120%까지 증가했습니다.
  • Execution Providers: CUDA와 TensorRT 실행 제공자는 정적 및 동적 형태 모두에서 PyTorch에 비해 눈에 띄는 개선을 보였습니다.

하드웨어 및 구성 결과

벤치마크는 LCM Scheduler와 fp16 모델을 사용하여 A100-SXM4-80GB 및 RTX-4090 GPU에서 수행되었습니다.

  • Static vs. Dynamic Shapes: 정적 형태는 그래프 정의 시 배치 및 이미지 크기가 알려져 있을 때 일반적으로 더 빠른 성능을 제공합니다. 동적 형태는 엔진을 재구성하지 않고도 실행 중에 배치 및 이미지 크기를 변경할 수 있어 더 유연합니다.
  • GPU Specifics: A100 GPU에서는 CUDA 실행 제공자를 사용한 ONNX Runtime가 동적 형태에 대해 종종 더 나은 선택입니다. RTX-4090 GPU에서는 TensorRT 실행 제공자가 동적 형태에서 약간 더 나은 성능을 보이는 경우가 많습니다.

기술 최적화 및 도구

성능 향상은 Olive 모델 최적화 도구와 ONNX Runtime 내의 특정 GPU 수준 향상에 의해 이루어집니다.

Olive 최적화 도구

모델은 하드웨어 인식을 갖춘 모델 최적화 도구인 Olive를 사용해 생성됩니다. 최대 성능을 위해서는 명령줄에서 fp16 VAE를 활성화해야 합니다.

GPU 전용 향상

표준 Stable Diffusion 최적화를 넘어 다음과 같은 구체적인 기술 개선이 구현되었습니다:

  • CUDA Graph: 정적 형태 입력에 대해 오버헤드를 줄이기 위해 활성화되었습니다.
  • Flash Attention V2: 어텐션 메커니즘을 가속화하도록 통합되었습니다.
  • Text Encoder Optimization: 텍스트 인코더의 추가 출력이 제거되고 clip_skip 매개변수로 지정된 은닉 상태 출력만 남았습니다.
  • SkipGroupNorm Fusion: 그룹 정규화가 이전 Add 노드와 결합되었습니다.
  • LoRA Support: 잠재 일관성 모델(LCM)을 위한 LoRA 가중치 지원이 추가되었습니다.

크로스 플랫폼 접근성 및 통합

ONNX Runtime를 활용함으로써 SD Turbo와 SDXL Turbo는 더 이상 Python 환경에만 제한되지 않으며, 다양한 소프트웨어 스택에 통합할 수 있게 되었습니다.

언어 지원

  • C#: OnnxStack과 같은 커뮤니티 프로젝트가 Stable Diffusion 추론을 위한 .NET 라이브러리를 제공합니다.
  • Java: Oracle은 ONNX Runtime 위에서 추론을 실행하는 Stable Diffusion 샘플(sd4j)을 공개했습니다.

웹 UI 통합

Automatic1111의 SD WebUI용 ONNX Runtime Extension은 CUDA 실행 제공자와 Olive 최적화 모델을 사용하여 NVIDIA GPU에서 Stable Diffusion UNet 모델을 최적화된 방식으로 실행할 수 있게 합니다.

향후 로드맵

Hugging Face와 Microsoft는 이러한 최적화를 추가 기능 및 모델로 확장할 계획이며, 포함 내용은 다음과 같습니다:

  • Feature Support: IP Adapter와 ControlNet 통합.
  • Model Support: Stable Video Diffusion으로 확장.
  • UI Improvements: 기존 Stable Diffusion 웹 UI 확장 내에서 SD Turbo와 SDXL Turbo 성능을 추가로 최적화하고, 커뮤니티에서 개발한 Windows UI 지원.

Sources