Sie können Modelle für maschinelles Lernen, die in verschiedenen Modellformaten wie PyTorch oder Tensorflow gespeichert und in das Open Neural Network Exchange (ONNX)-Format konvertiert wurden, einsetzen und inferenzieren. ONNX ist ein Open-Source-Format zur Darstellung von Deep-Learning-Modellen. Entwickler können das ONNX-Format verwenden, um ihre Modelle in einem Framework wie PyTorch oder TensorFlow, zu trainieren und dann zu exportieren, um sie in einer anderen Umgebung mit anderen Leistungsmerkmalen auszuführen. Das ONNX-Format bietet eine leistungsstarke Lösung für die Konvertierung eines Maching-Learning-Modells in ONNX und die Durchführung von Inferenzen mit Hilfe der ONNX-Laufzeit.
Vorteile der Konvertierung von Modellen zur ONNX-Laufzeit
Die Konvertierung eines Modells in die ONNX-Laufzeit bietet mehrere Vorteile, insbesondere im Zusammenhang mit Anwendungen für maschinelles Lernen und Deep Learning. Einige der Vorteile der Konvertierung von Modellen in ONNX-Laufzeit sind folgende
Plattformübergreifende Kompatibilität : ONNX bietet ein Standardformat für die Darstellung von Modellen des maschinellen Lernens, was es einfacher macht, Modelle in verschiedenen Frameworks wie PyTorch oder Tensorflow einzusetzen. Sie können Modelle in einem Framework trainieren und sie in einem anderen Framework einsetzen, das die ONNX-Laufzeit unterstützt.
Verbesserte Leistung : Die ONNX-Laufzeit optimiert die Modelle für das Inferencing durch Anwendung verschiedener hardware- und softwarespezifischer Optimierungen, wie z. B. Graphenoptimierungen. Außerdem unterstützt es die Ausführung auf unterschiedlicher Hardware, wie z. B. CPUs und GPUs, und gewährleistet so eine effiziente Nutzung der Ressourcen.
Interoperabilität : ONNX bietet eine Möglichkeit, Modelle wie PyTorch, TensorFlow, und scikit-learn in einem Framework zu trainieren und sie dann zu exportieren, um sie in einer anderen Umgebung auszuführen, was die Arbeitsabläufe rationalisiert. Es baut die Barrieren zwischen verschiedenen Deep Learning-Frameworks ab und ermöglicht es Entwicklern, die Stärken verschiedener Bibliotheken zu nutzen, ohne sich auf ein einziges Ökosystem festzulegen.
Unterstützte Frameworks für die Konvertierung
Sie können Modelle für maschinelles Lernen, die die folgenden Frameworks verwenden, in das ONNX-Format konvertieren:
- PyTorch
- TensorFlow
Konvertierung von PyTorch in das ONNX-Format
Folgen Sie diesem Prozess, um Ihr in PyTorch trainiertes Modell in das ONNX-Format zu konvertieren:
Bibliotheken importieren : Beginnen Sie damit, die wesentlichen Bibliotheken zu importieren, z. B.
onnxruntime
für die Ausführung des Modells,torch
für PyTorch und andere für Ihre Anwendung erforderliche Bibliotheken.PyTorch erstellen oder herunterladen : Sie können ein PyTorch unter Verwendung Ihres eigenen Datensatzes erstellen oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.
Konvertieren Sie das PyTorch in das ONNX-Format : Konvertieren des PyTorch in das ONNX-Format:
a. Bereiten Sie das Modell vor : Stellen Sie sicher, dass sich Ihr PyTorch im Evaluierungsmodus befindet, indem Sie die Funktion
model.eval()
verwenden. Möglicherweise benötigen Sie einen Dummy-Eingabetensor, der der Form des Modells entspricht.b. Exportieren Sie das Modell : Verwenden Sie die Funktion torch.onnx.export, um das Modell in das ONNX-Format zu konvertieren.
Überprüfen Sie die Konvertierung : Überprüfen Sie nach der Konvertierung des Modells, ob das Modell wie erwartet funktioniert, indem Sie die Bibliothek
onnx
verwenden.
Konvertierung von TensorFlow in das ONNX-Format
Folgen Sie diesem Prozess, um Ihr TensorFlow in das ONNX-Format zu konvertieren:
Bibliotheken importieren : Beginnen Sie damit, die wesentlichen Bibliotheken zu importieren, wie z.B.
tf2onnx
, um die Konvertierung von TensorFlow in ONNX zu erleichtern, und andere Bibliotheken, die für Ihre Anwendung benötigt werden.TensorFlow herunterladen : Sie müssen das extern erstellte TensorFlow und die Daten, die für das Training des Modells verwendet werden, herunterladen.
TensorFlow in ONNX-Format konvertieren : Verwenden Sie den Befehl
tf2onnx.convert
, um Ihr TensorFlow, das im FormatSavedModel
erstellt wurde, in das ONNX-Format zu konvertieren. Wenn Sie ein TensorFlow Lite Modell konvertieren wollen, verwenden Sie das--tflite
Flag anstelle des--saved-model
Flags.Überprüfen Sie die Konvertierung : Überprüfen Sie nach der Konvertierung des Modells, ob das Modell wie erwartet funktioniert, indem Sie die Bibliothek
onnx
verwenden.
Weitere Hinweise
Hier sind einige zusätzliche Überlegungen zur Konvertierung Ihrer TensorFlow in das ONNX-Format:
Dynamische Achsen : Dynamische Achsen können von einem Modell verwendet werden, um mit variablen Eingabeformen umzugehen, z. B. mit dynamischen Losgrößen oder Sequenzlängen, was für Modelle nützlich ist, die in Anwendungen eingesetzt werden, bei denen die Eingabegrößen variieren können. Verwenden Sie dynamische Achsen, wenn Ihr Modell variable Eingabegrößen verarbeitet, wie z. B. dynamische Chargengröße oder Sequenzlänge.
Dynamische Achsen reduzieren auch den Speicherbedarf, da sie mit mehreren Eingängen und Ausgängen verwendet werden können, um sich dynamisch anzupassen, ohne das Modell neu zu exportieren. Sie können die dynamischen Achsen während des Modellexports in PyTorch oder TensorFlow angeben.
Opset-Version : Die Opset-Version in ONNX bestimmt die Menge der Operationen und deren Spezifikationen, die vom Modell unterstützt werden. Sie ist ein kritischer Faktor bei der Modellkonvertierung und -einführung.
Verschiedene ONNX-Laufzeiten und -Frameworks unterstützen bestimmte Opset-Versionen. Älteren Opset-Versionen fehlen möglicherweise Funktionen oder Optimierungen, die in neueren Versionen vorhanden sind. Inkompatibilität zwischen der Opset-Version eines Modells und der ONNX-Laufzeit kann zu Fehlern bei der Inferenzierung führen. Sie müssen sicherstellen, dass die von Ihnen gewählte ONNX-Opset-Version von Ihrer Ziel-Laufzeitumgebung unterstützt wird.
Bereitstellung von in das ONNX-Format konvertierten Modellen
Verwenden Sie die Software-Spezifikation onnxruntime_opset_19
, um Ihr in das ONNX-Format konvertiertes Modell für maschinelles Lernen einzusetzen. Weitere Informationen finden Sie unter Unterstützte Software-Spezifikationen.
Führen Sie die folgenden Schritte aus, um über die Benutzeroberfläche in das ONNX-Format konvertierte Modelle bereitzustellen:
Wechseln Sie in Ihrem Bereitstellungsbereich auf die Registerkarte Assets.
Suchen Sie Ihr Modell in der Asset-Liste, klicken Sie auf das Menüsymbol Menüsymbol und wählen Sie Verteilen.
Wählen Sie die Bereitstellungsart für Ihr Modell. Wählen Sie zwischen Online- und Stapelverteilungsoptionen.
Geben Sie einen Namen für Ihre Bereitstellung ein und geben Sie optional einen Serving-Namen, eine Beschreibung und Tags ein.
Hinweis:- Verwenden Sie das Feld Verteilungsname, um anstelle der Verteilungs-ID einen Namen für Ihre Verteilung anzugeben.
- Der Serving-Name muss innerhalb des Namensraumes eindeutig sein.
- Der Name des Dienstes darf nur diese Zeichen enthalten: a-z,0-9,_] und darf maximal 36 Zeichen lang sein.
- In Arbeitsabläufen, in denen Ihr benutzerdefiniertes Basismodell regelmäßig verwendet wird, sollten Sie in Erwägung ziehen, Ihrem Modell jedes Mal denselben Serving-Namen zuzuweisen, wenn Sie es einsetzen. Auf diese Weise können Sie nach dem Löschen und erneuten Bereitstellen des Modells weiterhin denselben Endpunkt in Ihrem Code verwenden.
Wählen Sie eine Hardware-Spezifikation für Ihr Modell.
Wählen Sie eine Konfiguration und eine Software-Spezifikation für Ihr Modell.
Klicken Sie auf Erstellen.
Testen des Modells
Gehen Sie folgendermaßen vor, um Ihre in das ONNX-Format konvertierten Modelle zu testen:
- Öffnen Sie in Ihrem Bereitstellungsbereich die Registerkarte " Bereitstellungen" und klicken Sie auf den Namen der Bereitstellung.
- Klicken Sie auf die Registerkarte Test, um Aufforderungstext einzugeben und eine Antwort vom bereitgestellten Asset zu erhalten.
- Geben Sie die Testdaten in einem der folgenden Formate ein, abhängig von der Art des Assets, das Sie bereitgestellt haben:
- Text : Geben Sie Texteingabedaten ein, um einen Textblock als Ausgabe zu erzeugen.
- Strom : Geben Sie Texteingabedaten ein, um einen Textstrom als Ausgabe zu erzeugen.
- JSON : Geben Sie JSON-Eingabedaten ein, um eine Ausgabe im JSON-Format zu erzeugen.
- Klicken Sie auf Generieren, um Ergebnisse zu erhalten, die auf Ihrer Eingabeaufforderung basieren.
Beispielnotebooks
Die folgenden Beispiel-Notizbücher demonstrieren, wie Modelle für maschinelles Lernen, die von PyTorch oder TensorFlow in das ONNX-Format konvertiert wurden, unter Verwendung der Python bereitgestellt werden:
Notebook | Framework | Beschreibung |
---|---|---|
Konvertierung des neuronalen Netzes ONNX von festen Achsen in dynamische Achsen und Verwendung mit watsonx | ONNX | Einrichten der Umgebung Erstellen und Exportieren des grundlegenden ONNX-Modells Konvertieren des Modells von festen Achsen in dynamische Achsen Persistieren des konvertierten ONNX-Modells Bereitstellen und Bewerten des ONNX-Modells Aufräumen Zusammenfassung und nächste Schritte |
Verwendung des aus PyTorch konvertierten ONNX-Modells mit watsonx | ONNX | PyTorch mit Datensatz erstellen. Konvertieren Sie das PyTorch in das ONNX-Format Persistieren Sie das konvertierte Modell im Watson Machine Learning Repository. Bereitstellung des Modells für die Online-Beurteilung mit Hilfe der Client-Bibliothek. Beispieldatensätze mithilfe der Clientbibiliothek bewerten. |
Verwenden Sie das aus TensorFlow konvertierte ONNX-Modell zur Erkennung handgeschriebener Ziffern mit watsonx | ONNX | Laden Sie ein extern trainiertes TensorFlow mit Datensatz herunter. Konvertieren Sie das TensorFlow in das ONNX-Format Persistieren Sie das konvertierte Modell im Watson Machine Learning Repository. Bereitstellung des Modells für die Online-Beurteilung mit Hilfe der Client-Bibliothek. Beispieldatensätze mithilfe der Clientbibiliothek bewerten. |
Übergeordnetes Thema: Einsatz von Ressourcen für maschinelles Lernen