Beschleunigte Bildgenerierung: Wie SD Turbo und SDXL Turbo die AI-Inferenz revolutionieren

Beschleunigte Bildgenerierung: Wie SD Turbo und SDXL Turbo die AI-Inferenz revolutionieren

In der Welt der künstlichen Intelligenz und maschinellen Bildgenerierung hat die Leistungsfähigkeit und Geschwindigkeit von Modellen eine entscheidende Bedeutung. Insbesondere bei der Erzeugung von Bildern aus Textbeschreibungen, bekannt als Text-to-Image-Modelle, ist eine hohe Effizienz gefragt. SD Turbo und SDXL Turbo sind zwei solcher Modelle, die in der Lage sind, überzeugende Bilder in nur wenigen Schritten zu generieren – ein signifikanter Fortschritt gegenüber den 30 oder mehr Schritten, die frühere Stable Diffusion Modelle benötigten. SD Turbo ist eine destillierte Version von Stable Diffusion 2.1 und SDXL Turbo eine destillierte Version von SDXL 1.0. Die Beschleunigung der Inferenz für diese Modelle wurde durch den Einsatz von ONNX Runtime, einer plattformübergreifenden Bibliothek zur Optimierung und Ausführung von Machine Learning Modellen, erreicht. ONNX Runtime ist nicht nur mit NVIDIA GPUs kompatibel, sondern ermöglicht auch die Nutzung von SD Turbo und SDXL Turbo in anderen Programmiersprachen als Python, wie beispielsweise C# und Java. Ein wesentlicher Vorteil von ONNX Runtime sind die Leistungssteigerungen, die durch Optimierungen der CUDA und TensorRT Ausführungsanbieter erzielt werden. In verschiedenen Tests übertraf ONNX Runtime die Leistung von PyTorch bei allen getesteten Kombinationen aus Stapelgröße und Anzahl der Schritte. Dabei wurden Durchsatzsteigerungen von bis zu 229% für das SDXL Turbo Modell und 120% für das SD Turbo Modell gemessen. Vor allem bei dynamischen Formen zeigte die CUDA-Version von ONNX Runtime eine überzeugende Performance, wobei auch bei statischen Formen eine deutliche Verbesserung gegenüber PyTorch festgestellt wurde. Um von diesen Verbesserungen zu profitieren, können die optimierten Versionen von SD Turbo und SDXL Turbo von Hugging Face bezogen werden. Diese Modelle wurden mit Olive, einem benutzerfreundlichen Werkzeug zur Modell-Optimierung, das hardwarebewusst operiert, generiert. Für die beste Leistung sollte das fp16 VAE über die Kommandozeile aktiviert werden, wie in den geteilten optimierten Versionen gezeigt. Ein Beispiel für die Bildgenerierung mit dem SDXL Turbo Modell anhand eines Textprompts zeigt, dass Bilder in nur 4 Schritten erzeugt werden können, was die Fähigkeit von SD Turbo und SDXL Turbo unterstreicht, in weniger Schritten als frühere Modelle überzeugende Bilder zu schaffen. Für diejenigen, die Stable Diffusion Modelle auf benutzerfreundliche Weise ausprobieren möchten, bietet die ONNX Runtime Erweiterung für Automatic1111’s SD WebUI eine optimierte Ausführung des Stable Diffusion UNet Modells auf NVIDIA GPUs. Diese Erweiterung nutzt ebenfalls den ONNX Runtime CUDA Ausführungsanbieter für Inferenz gegen Modelle, die mit Olive optimiert wurden. Derzeit ist die Erweiterung nur für Stable Diffusion 1.5 optimiert, aber SD Turbo und SDXL Turbo Modelle können ebenfalls verwendet werden, obwohl die Leistungsoptimierungen noch im Gange sind. Die Community hat ebenfalls zur Erweiterung der Anwendungsmöglichkeiten von Stable Diffusion beigetragen, indem sie Beispiele und UI-Tools für die Verwendung mit ONNX Runtime in C# und Java bereitstellte. Zu diesen Beiträgen zählen OnnxStack, eine .NET-Bibliothek, und ein von Oracle veröffentlichtes Stable Diffusion-Beispiel für Java, das auf dem ONNX Runtime aufsetzt. Benchmark-Ergebnisse für SD Turbo und SDXL Turbo auf verschiedenen GPUs wie A100-SXM4-80GB und RTX-4090 (unter Ubuntu 20.04) zeigen die Durchsatzleistung in Bildern pro Sekunde für verschiedene Kombinationen aus Stapelgröße und Anzahl der Schritte. Die Ergebnisse belegen, dass ONNX Runtime PyTorch bei der Verwendung beider Ausführungsanbieter – CUDA und TensorRT – in statischer und dynamischer Form für alle gezeigten Kombinationen deutlich übertrifft. Neben früher eingeführten Techniken hat ONNX Runtime spezifische Optimierungen vorgenommen, um die Ergebnisse für SD Turbo und SDXL Turbo zu erzielen. Dazu gehören die Aktivierung von CUDA-Graphen für statische Formeingaben, die Hinzufügung von Flash Attention V2, die Entfernung zusätzlicher Ausgaben im Textkodierer und die Einführung von SkipGroupNorm-Fusionen. Für die Zukunft plant das Team, seine Arbeit an Stable Diffusion weiter zu verbessern, indem es die Demo um neue Funktionen wie IP Adapter und Stable Video Diffusion erweitert und die Leistung von SD Turbo und SDXL Turbo mit bestehenden Web-UI-Erweiterungen optimiert. Darüber hinaus ist ein Tutorial zur Verwendung von SD Turbo und SDXL Turbo mit C# und ONNX Runtime in Arbeit. Zusammenfassend lässt sich sagen, dass die Optimierungen durch ONNX Runtime und Olive einen bedeutenden Fortschritt in der Effizienz und Geschwindigkeit der Inferenz von Text-to-Image-Modellen wie SD Turbo und SDXL Turbo darstellen. Diese Fortschritte können einen großen Einfluss auf die Zugänglichkeit und die praktische Anwendung von künstlicher Intelligenz in verschiedenen Bereichen haben, von der Unterhaltung bis hin zur Bildung oder dem Gesundheitswesen.