- Published on
ONNX Export: 3-5x schnellere KI-Inferenz
- Authors

- Name
- Phillip Pham
- @ddppham
TL;DR
ONNX-Export beschleunigt die Inferenz von PyTorch- und TensorFlow-Modellen um den Faktor 3–5 bei gleichbleibender Genauigkeit. Ein BERT-Modell für Textklassifikation antwortet nach dem ONNX-Export in 12 ms statt 45 ms. Die Konvertierung dauert 30 Minuten pro Modell und erfordert keine Änderungen am Trainingscode. GPU-Kosten sinken um 60 %, weil ONNX-Modelle auch auf CPU schnell genug laufen.
Was ONNX ist und warum es wichtig ist
ONNX (Open Neural Network Exchange) ist ein offenes Format für KI-Modelle. Ein in PyTorch trainiertes Modell wird als ONNX-Datei exportiert und läuft dann überall: Windows, Linux, macOS, ARM, x86, GPU, CPU – ohne PyTorch installieren zu müssen.
Für den Mittelstand hat ONNX drei konkrete Vorteile:
- Schnellere Inferenz: ONNX Runtime optimiert das Modell automatisch (Operator Fusion, Quantisierung, Graph-Optimierung)
- Geringere Abhängigkeiten: Kein PyTorch/TensorFlow in Produktion nötig. ONNX Runtime ist 50 MB statt 2 GB.
- Plattformunabhängigkeit: Das gleiche Modell läuft auf dem GPU-Server, dem Edge-Device und dem Desktop-PC
Performance-Vergleich: PyTorch vs. ONNX
Getestet auf einem Standard-Server (8 vCPU, 32 GB RAM, keine GPU):
| Modell | PyTorch | ONNX Runtime | Speedup |
|---|---|---|---|
| BERT-base (Textklassifikation) | 45 ms | 12 ms | 3,8x |
| ResNet-50 (Bildklassifikation) | 38 ms | 9 ms | 4,2x |
| DistilBERT (NER) | 22 ms | 6 ms | 3,7x |
| LSTM (Zeitreihenprognose) | 8 ms | 2 ms | 4,0x |
| YOLOv8-nano (Objekterkennung) | 85 ms | 22 ms | 3,9x |
Der Speedup kommt von drei Optimierungen, die ONNX Runtime automatisch anwendet: Operator Fusion (mehrere Operationen in eine zusammenfassen), Graph-Optimierung (überflüssige Knoten entfernen) und CPU-spezifische Optimierungen (AVX-512, VNNI).
Export-Anleitung: PyTorch zu ONNX
Der Export eines PyTorch-Modells nach ONNX erfordert drei Schritte. Das Modell muss im Evaluation-Modus sein, ein Dummy-Input definiert die Eingabedimensionen, und torch.onnx.export erzeugt die ONNX-Datei.
# ONNX-Export: Checkliste
vorbereitung:
modell_modus: "model.eval() aufrufen"
dummy_input: "torch.randn mit korrekten Dimensionen"
opset_version: 17 # Aktuellste stabile Version
dynamic_axes: "Batch-Dimension dynamisch setzen"
export:
befehl: "torch.onnx.export(model, dummy, 'model.onnx', opset_version=17)"
dauer: "10-60 Sekunden je nach Modellgröße"
ausgabe: "model.onnx (Datei, 50-500 MB)"
validierung:
schritt_1: "onnx.checker.check_model('model.onnx')"
schritt_2: "Inferenz mit ONNX Runtime auf Testdaten"
schritt_3: "Ergebnis-Vergleich PyTorch vs. ONNX (max. 0.01% Abweichung)"
optimierung:
quantisierung: "INT8 Quantisierung für 2x zusätzlichen Speedup"
pruning: "Unwichtige Gewichte auf Null setzen (optional)"
Nach dem Export validieren Sie das Modell: Läuft die Inferenz fehlerfrei? Stimmen die Ergebnisse mit dem PyTorch-Original überein? Eine maximale Abweichung von 0,01 % bei Float32 ist normal und hat keinen Einfluss auf die Modellqualität.
Quantisierung: Nochmal 2x schneller
Nach dem ONNX-Export können Sie das Modell von Float32 auf INT8 quantisieren. Das halbiert die Modellgröße und verdoppelt die Inferenzgeschwindigkeit – bei typischerweise 0,5–1,5 % Genauigkeitsverlust.
Für ein BERT-Modell bedeutet das:
- Float32 ONNX: 440 MB, 12 ms Inferenz, 91,3 % Accuracy
- INT8 ONNX: 110 MB, 6 ms Inferenz, 90,8 % Accuracy
Der Genauigkeitsverlust von 0,5 % ist für die meisten Mittelstands-Use-Cases irrelevant. Dafür läuft das Modell auf einem €50/Monat-Server statt auf einer €500/Monat-GPU. Die Kostenplanung sollte ONNX-Optimierung von Anfang an einplanen.
GPU-Kosten senken: Von GPU zu CPU
Der größte Kostenhebel von ONNX: Viele Modelle, die in PyTorch eine GPU brauchen, laufen als ONNX-Modell schnell genug auf CPU.
Beispiel Textklassifikation: Ein Mittelständler betreibt ein BERT-Modell für Angebotsklassifikation. In PyTorch: 45 ms auf CPU (zu langsam für Echtzeit), 8 ms auf GPU. In ONNX: 12 ms auf CPU (schnell genug), GPU nicht mehr nötig.
Kosteneinsparung: GPU-Server (€500/Monat) → CPU-Server (€80/Monat) = €420/Monat = €5.040/Jahr. Bei drei Modellen: €15.120/Jahr. Mehr dazu im ROI-Rechner.
ONNX in Produktion: Deployment-Optionen
Option 1: FastAPI + ONNX Runtime. Einfachste Variante für ein einzelnes Modell. Ein Python-Script mit FastAPI und onnxruntime. Deployment als Docker-Container.
Option 2: NVIDIA Triton. Für mehrere Modelle auf einem Server. Triton lädt ONNX-Modelle nativ und bietet Dynamic Batching, Model Versioning und Monitoring.
Option 3: Edge-Deployment. ONNX-Modelle laufen auf Raspberry Pi, Jetson Nano und Smartphones. Ideal für Szenarien ohne Netzwerkverbindung. Der KI-Implementierungsguide beschreibt Edge-Szenarien im Detail.
Kompatibilität: Was sich exportieren lässt
Nicht jedes PyTorch-Modell lässt sich problemlos exportieren. Dynamische Kontrollflüsse (if-Statements basierend auf Eingabewerten) und custom Operatoren können Probleme machen.
Gut exportierbar: BERT, GPT-2, ResNet, EfficientNet, YOLOv5/v8, LSTM, GRU, Transformer-Encoder Eingeschränkt: Modelle mit dynamischen Schleifen, custom CUDA Kernels Nicht exportierbar: Modelle mit Python-Logik in der Forward-Methode
Für 90 % der Modelle im Mittelstands-Einsatz (Klassifikation, NER, Prognose, Bilderkennung) funktioniert der Export reibungslos.
Häufige Fragen
Verliere ich Genauigkeit beim ONNX-Export?
Bei Float32-Export: Nein. Die maximale Abweichung liegt bei 0,001–0,01 % durch Rundungsunterschiede. Bei INT8-Quantisierung: 0,5–1,5 % Genauigkeitsverlust, der für die meisten Use Cases irrelevant ist.
Kann ich ONNX-Modelle weiter trainieren?
Nein. ONNX ist ein reines Inferenz-Format. Das Training bleibt in PyTorch oder TensorFlow. Nach dem Training exportieren Sie die neue Version als ONNX. Der KI-Leitfaden beschreibt den ML-Lifecycle.
Unterstützt ONNX auch LLMs?
Ja, aber mit Einschränkungen. Modelle bis 1–3B Parameter (TinyLlama, Phi-2) lassen sich exportieren und beschleunigen. Größere Modelle (7B+) profitieren mehr von vLLM oder TGI als von ONNX Runtime.
Wie groß ist eine ONNX-Datei?
Ungefähr gleich groß wie das PyTorch-Modell: BERT-base ~440 MB, ResNet-50 ~100 MB, YOLOv8-nano ~6 MB. Mit INT8-Quantisierung: 25 % der Originalgröße.
Muss mein Team ONNX lernen?
Der Export ist ein einmaliger Schritt pro Modell. Data Scientists trainieren weiterhin in PyTorch. Nur der DevOps-/MLOps-Engineer muss die ONNX-Runtime-Konfiguration kennen – ein halber Tag Einarbeitung.
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
Von Ollama zu vLLM: wann der Pilot produktiv werden muss
Ollama trägt den Piloten, nicht den Betrieb. Die vier Signale für den Wechsel auf vLLM — und die Migration Schritt für Schritt.
MCP-Server an Claude anbinden: die beiden Hälften
Der Server allein reicht nicht — ohne passenden Werkzeugsatz wird die Anfrage abgelehnt. Und MCP-Token sind nicht die API-Schlüssel des Dienstes.
Claude-Modell wechseln: die Fehler-400-Liste vorab
Vier Parameter, die auf neueren Modellen einen Fehler 400 geben, plus zwei stille Änderungen, die keinen Fehler werfen und trotzdem etwas kaputtmachen.
Bereit für KI im Mittelstand?
Nutzen Sie unsere 10 kostenlosen KI-Tools und Praxis-Guides – oder sprechen Sie direkt mit unseren Experten.
Pexon Consulting – KI-Beratung für den Mittelstand | Scaly Academy – Geförderte KI-Weiterbildung (KI-Spezialist, KI-Experte, Workflow-Automatisierung)