- Published on
KI-Modell ONNX exportieren: Inferenz beschleunigen
- 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
OPC-UA Daten in SAP: Shopfloor-Integration Guide
OPC-UA Maschinendaten in SAP integrieren: Anleitung für die Shopfloor-Anbindung. Echtzeitdaten aus SPS und CNC direkt in SAP PP/PM.
LocalAI auf Raspberry Pi: Edge-Inferenz Setup
LocalAI auf Raspberry Pi 5: Kleine KI-Modelle lokal ausführen für €80 Hardware-Kosten. Setup-Anleitung für Textklassifikation und Embeddings.
proALPHA + KI: ERP-Daten für Fertiger nutzen
proALPHA mit KI verbinden: ERP-Daten für Chatbots, Prognosen und Fertigungsoptimierung nutzen. 40% schnellere Auskunft, €95.000/Jahr Einsparung.
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)