Tutorials  /  Python

Was jeder ML/AI-Entwickler über ONNX wissen sollte

Ccentron Redaktion · Januar 2025 ·4 Min. Lesezeit ·Python, Tutorial

Einleitung

Das Open Neural Network Exchange Format (ONNX) ist ein neuer Standard zum Austausch von Deep-Learning-Modellen. Es verspricht, Deep-Learning-Modelle portabel zu machen und so Vendor-Lock-in zu verhindern. Lassen Sie uns untersuchen, warum das für den modernen ML/AI-Entwickler von Bedeutung ist.

Das Endergebnis eines trainierten Deep-Learning-Algorithmus ist eine Modelldatei, die die Beziehung zwischen Eingabedaten und Ausgabevorhersagen effizient darstellt. Ein neuronales Netzwerk ist eine der leistungsstärksten Methoden, um solche Vorhersagemodelle zu erzeugen, kann jedoch schwierig in Produktionssysteme integriert werden. Meistens existieren diese Modelle in einem Datenformat wie einer .pth-Datei oder einer HD5-Datei. Oftmals möchte man diese Modelle portabel machen, damit sie in Umgebungen eingesetzt werden können, die sich von der Trainingsumgebung unterscheiden.

VM

Passende Infrastruktur bei centron

Skripte und Dienste brauchen irgendwann eine Umgebung, die durchläuft: ccloud³ VMs ab 3,12 € im Monat, stundengenau abgerechnet. Cloud Server mieten →

ONNX Überblick

Auf hoher Ebene ist ONNX darauf ausgelegt, die Interoperabilität zwischen Frameworks zu ermöglichen. Es gibt viele exzellente Machine-Learning-Bibliotheken in verschiedenen Sprachen – PyTorch, TensorFlow, MXNet und Caffe sind nur einige der in den letzten Jahren sehr populären Frameworks, aber es gibt noch viele weitere.

Die Idee ist, dass Sie ein Modell mit einem Tool-Stack trainieren und es dann mit einem anderen für Inferenz und Vorhersage bereitstellen können. Um diese Interoperabilität sicherzustellen, müssen Sie Ihr Modell im model.onnx-Format exportieren, einer serialisierten Darstellung des Modells in einer Protobuf-Datei. Derzeit gibt es native Unterstützung in ONNX für PyTorch, CNTK, MXNet und Caffe2, aber es gibt auch Konverter für TensorFlow und CoreML.

Voraussetzungen für ML/AI-Entwickler

  • Grundlegendes Verständnis von Machine Learning (ML) und Deep Learning (DL): Vertrautheit mit Konzepten wie neuronalen Netzwerken, Schichten, Modellen und Trainingsprozessen.
  • Kenntnisse über beliebte ML-Frameworks: Erfahrung mit mindestens einem großen ML/DL-Framework wie TensorFlow, PyTorch oder Scikit-learn, da ONNX zur Konvertierung von Modellen zwischen Frameworks verwendet wird.
  • Erfahrung mit der Bereitstellung von Modellen: Verständnis der Grundlagen zur Bereitstellung von ML-Modellen in Produktionsumgebungen, da ONNX eine effiziente plattformübergreifende Bereitstellung erleichtert.
  • Vertrautheit mit Modelloptimierung: Grundlegendes Verständnis von Techniken zur Optimierung von ML-Modellen für die Leistung, da ONNX häufig zur Effizienzsteigerung verwendet wird.
  • Python-Programmierung: Da ONNX stark in Python unterstützt wird, sind Python-Kenntnisse für die Nutzung seiner Tools und Bibliotheken unerlässlich.

ONNX in der Praxis

Stellen Sie sich vor, Sie möchten ein Modell trainieren, um vorherzusagen, ob ein Lebensmittel in Ihrem Kühlschrank noch essbar ist. Sie entscheiden sich, eine Reihe von Fotos von Lebensmitteln in verschiedenen Stadien nach dem Verfallsdatum zu verwenden und diese in ein konvolutionales neuronales Netzwerk (CNN) einzuspeisen, das Bilder von Lebensmitteln analysiert und trainiert, um vorherzusagen, ob die Lebensmittel noch genießbar sind.

Nachdem Sie Ihr Modell trainiert haben, möchten Sie es in einer neuen iOS-App bereitstellen, damit jeder Ihr vortrainiertes Modell verwenden kann, um seine eigenen Lebensmittel auf Sicherheit zu überprüfen. Sie haben Ihr Modell zunächst mit PyTorch trainiert, aber iOS erwartet CoreML innerhalb der App. ONNX ist eine Zwischenrepräsentation Ihres Modells, die es Ihnen ermöglicht, leicht von einer Umgebung zur nächsten zu wechseln.

Mit PyTorch würden Sie Ihr Modell normalerweise mit torch.save(the_model.state_dict(), PATH) exportieren. Der Export in das ONNX-Austauschformat ist nur eine Zeile mehr:

Code

      torch.onnx.export(model, dummy_input, 'SplitModel.proto', verbose=True)
    

Mit einem Tool wie ONNX-CoreML können Sie Ihr vortrainiertes Modell jetzt problemlos in eine Datei umwandeln, die Sie in XCode importieren und nahtlos in Ihre App integrieren können. Für ein funktionierendes Beispiel lesen Sie diesen exzellenten Beitrag von Stefano Attardi über den Aufbau einer ML-gestützten iOS-App von Anfang bis Ende.

Fazit für ML/AI-Entwickler

Da immer mehr Deep-Learning-Frameworks entstehen und Workflows fortschrittlicher werden, ist die Notwendigkeit für Portabilität wichtiger denn je. ONNX ist ein leistungsstarker und offener Standard, um Framework-Lock-in zu verhindern. Des Weiteren stellt es sicher, dass die von Ihnen entwickelten Modelle langfristig nutzbar bleiben.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Python
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren