Bereitstellung von in das ONNX-Format konvertierten Modellen
Sie können maschinelle Lernmodelle von PyTorch oder TensorFlow bereitstellen und ableiten, die in verschiedenen Formaten gespeichert und in das Open Neural Network Exchange -Format (ONNX) konvertiert werden. 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 sie dann zu exportieren, um sie in einer anderen Umgebung mit unterschiedlichen Leistungsmerkmalen auszuführen. Das ONNX -Format bietet eine leistungsstarke Lösung für die Konvertierung eines maschinellen Lernmodells in ONNX und die Durchführung von Inferenzen mithilfe der ONNX -Laufzeit.
Vorteile der Umstellung von Modellen auf die ONNX -Laufzeit
Die Umwandlung 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 Umstellung von Modellen auf die ONNX -Laufzeit sind:
Plattformübergreifende Kompatibilität :
ONNXbietet ein Standardformat für die Darstellung von Modellen für maschinelles Lernen, wodurch sich Modelle einfacher in verschiedenen Frameworks wie PyTorch oder Tensorflow einsetzen lassen. Sie können Modelle in einem Framework trainieren und sie in einem anderen Framework einsetzen, das dieONNX-Laufzeit unterstützt.Verbesserte Leistung :
ONNXruntime optimiert Modelle für Schlussfolgerungen durch die 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 :
ONNXbietet die 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 optimiert. 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:
PyTorchTensorFlowCatBoostLightGBMXGBoostScikit-learn
Umwandlung von PyTorch -Modellen in das ONNX -Format
Folgen Sie diesem Prozess, um Ihr trainiertes Modell in PyTorch in das ONNX -Format umzuwandeln:
Bibliotheken importieren : Beginnen Sie damit, die wesentlichen Bibliotheken zu importieren, z. B.
onnxruntimefür die Ausführung des Modells,torchfür PyTorch und andere für Ihre Anwendung erforderliche Bibliotheken.Erstellen oder laden Sie ein
PyTorch-Modell herunter : Sie können einPyTorch-Modell erstellen, indem Sie Ihren eigenen Datensatz verwenden, oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.PyTorch-Modell in ONNX-Format konvertieren : So konvertieren Sie dasPyTorch-Modell in das ONNX-Format:a. Bereiten Sie das Modell vor : Vergewissern Sie sich, dass sich Ihr
PyTorch-Modell im Bewertungsmodus befindet, indem Sie die Funktionmodel.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
onnxverwenden.
Umwandlung von TensorFlow -Modellen in das ONNX -Format
Folgen Sie diesem Prozess, um Ihr Modell TensorFlow in das ONNX-Format zu konvertieren:
Bibliotheken importieren : Importieren Sie zunächst die wichtigsten Bibliotheken, wie z. B.
tf2onnx, um die Konvertierung vonTensorFlow-Modellen in ONNX zu erleichtern, sowie andere Bibliotheken, die für Ihre Anwendung erforderlich sind.Herunterladen
TensorFlowModell : Sie müssen die extern erstellteTensorFlowModell und die Daten, die zum Trainieren des Modells verwendet werden.Konvertieren Sie das
TensorFlow-Modell in das ONNX-Format : Verwenden Sie den Befehltf2onnx.convert, um IhrTensorFlow-Modell, das imSavedModel-Format erstellt wurde, in dasONNX-Format zu konvertieren. Wenn Sie einTensorFlow Lite-Modell konvertieren möchten, verwenden Sie die--tflite-Flagge anstelle der--saved-model-Flagge.
Keras modelle und tf -Funktionen können direkt in Python mithilfe der tf2onnx.convert.from_keras - oder tf2onnx.convert.from_function -Funktionen konvertiert werden.
- Überprüfen Sie die Konvertierung : Überprüfen Sie nach der Konvertierung des Modells, ob das Modell wie erwartet funktioniert, indem Sie die Bibliothek
onnxverwenden.
Konvertierung von CatBoost -Modellen in das ONNX-Format
Folgen Sie diesem Prozess, um Ihr trainiertes Modell in CatBoost in das ONNX-Format zu konvertieren:
Bibliotheken importieren: Importieren Sie zunächst die wichtigsten Bibliotheken, z. B.
onnxruntimefür die Ausführung des Modells,catboostfürCatBoost-Funktionen und andere für Ihre Anwendung erforderliche Bibliotheken.Erstellen oder laden Sie ein
CatBoost-Modell herunter : Sie können einCatBoost-Modell erstellen, indem Sie Ihren eigenen Datensatz verwenden, oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.CatBoost-Modell inONNX-Format konvertieren : So konvertieren Sie dasCatBoost-Modell in dasONNX-Format:a. Laden Sie das
CatBoost-Modell : Sie können dasCatBoost-Modell mithilfe von Bibliotheken wiepickle:catboost_model = pickle.load(file)b. Exportieren Sie das Modell : Verwenden Sie die Funktion
catboost_model.save_modelmit dem aufonnxeingestellten Formatparameter, um das Modell in dasONNX-Format zu konvertieren.catboost_model.save_model( onnx_model_name, format="onnx", export_parameters={ 'onnx_domain': 'ai.catboost', 'onnx_model_version': 1, 'onnx_doc_string': 'test model for Regressor', 'onnx_graph_name': 'CatBoostModel_for_Regression' } )Überprüfen Sie die Konvertierung : Überprüfen Sie nach der Konvertierung des Modells, ob das Modell wie erwartet funktioniert, indem Sie die Bibliothek
onnxverwenden.
Konvertierung von LightGBM -Modellen in das ONNX-Format
Folgen Sie diesem Prozess, um Ihr trainiertes Modell in LightGBM in das ONNX -Format umzuwandeln:
Bibliotheken importieren: Import ieren Sie zunächst die wichtigsten Bibliotheken, z. B.
onnxruntimefür die Ausführung des Modells,lightgbmfürLightGBM-Funktionen undonnxmltoolsfür die Konvertierung sowie andere Bibliotheken, die für Ihre Anwendung erforderlich sind.Erstellen oder laden Sie ein
LightGBM-Modell herunter : Sie können einLightGBM-Modell erstellen, indem Sie Ihren eigenen Datensatz verwenden, oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.LightGBM-Modell inONNX-Format konvertieren : So konvertieren Sie dasLightGBM-Modell in dasONNX-Format:a. Laden Sie das
LightGBM-Modell : Sie können dasLightGBM-Modell mithilfe von Bibliotheken wiepickle:lgbm_model = pickle.load(file)b. Exportieren Sie das Modell : Verwenden Sie die Funktion
convert_lightgbm, um das Modell in dasONNX-Format zu konvertieren.from onnxmltools import convert_lightgbm from skl2onnx.common.data_types import FloatTensorType from onnxmltools.utils import save_model initial_types = [("float_input", FloatTensorType([None, X.shape[1]]))] onnx_model = convert_lightgbm(model=lgbm_model, initial_types=initial_types) onnx_model_filename = "lgbm_model.onnx" save_model(onnx_model, onnx_model_filename)Tipp:Informationen zur Fehlerbehebung bei Problemen mit der Konvertierung von
LightGBM-Modellen in dasONNX-Format finden Sie unter Fehlerbehebung bei watsonx.ai Runtime.Überprüfen Sie die Konvertierung : Überprüfen Sie nach der Konvertierung des Modells, ob das Modell wie erwartet funktioniert, indem Sie die Bibliothek
onnxverwenden.
Umwandlung von XGBoost -Modellen in das ONNX -Format
Folgen Sie diesem Prozess, um Ihr trainiertes Modell in XGBoost in das ONNX -Format umzuwandeln:
Bibliotheken importieren: Importieren Sie zunächst die wichtigsten Bibliotheken, z. B.
onnxruntimefür die Ausführung des Modells,xgboostfürXGBoost-Funktionen und andere für Ihre Anwendung erforderliche Bibliotheken.Erstellen oder laden Sie ein
XGBoost-Modell herunter : Sie können einXGBoost-Modell erstellen, indem Sie Ihren eigenen Datensatz verwenden, oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.XGBoost-Modell in ONNX-Format konvertieren : So konvertieren Sie dasXGBoost-Modell in das ONNX-Format:a. Laden Sie das
XGboost-Modell : Sie können dasXGBoost-Modell mithilfe von Bibliotheken wiepickle:xgboost_model = pickle.load(file)b. Exportieren Sie das Modell : Verwenden Sie die Funktion
convert_xgboost, um das Modell in dasONNX-Format zu konvertieren.from onnxmltools import convert_xgboost from onnxconverter_common.data_types import FloatTensorType from onnxmltools.utils import save_model initial_types = [("float_input", FloatTensorType([None, X.shape[1]]))] onnx_model = convert_xgboost(xgboost_model, initial_types=initial_types) onnx_model_filename = "xgboost_onnx_model.onnx" save_model(onnx_model, onnx_model_filename)Überprüfen Sie die Konvertierung : Überprüfen Sie nach der Konvertierung des Modells mithilfe der onnx-Bibliothek, ob das Modell wie erwartet funktioniert.
Umwandlung von scikit-learn -Modellen in das ONNX -Format
Folgen Sie diesem Prozess, um Ihr trainiertes Modell in scikit-learn in das ONNX -Format umzuwandeln:
Bibliotheken importieren : Importieren Sie zunächst die wichtigsten Bibliotheken, z. B.
onnxruntimefür die Ausführung des Modells,sklearnfürscikit-learn-Funktionen,skl2onnxfür die Konvertierung und andere Bibliotheken, die für Ihre Anwendung erforderlich sind.Erstellen oder laden Sie ein
scikit-learn-Modell herunter : Sie können einscikit-learn-Modell erstellen, indem Sie Ihren eigenen Datensatz verwenden, oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.scikit-learn-Modell in ONNX-Format konvertieren : So konvertieren Sie dasscikit-learn-Modell in dasONNX-Format:a. Laden Sie das
scikit-learn-Modell : Sie können dasscikit-learn-Modell mithilfe von Bibliotheken wiepickle:sklearn_model = pickle.load(file)b. Exportieren Sie das Modell : Verwenden Sie die Funktion
to_onnx, um das Modell in dasONNX-Format zu konvertieren.from skl2onnx import to_onnx onnx_model = to_onnx(sklearn_model, X, target_opset=19) with open("sklearn_model.onnx", "wb") as f: f.write(onnx_model.SerializeToString())Überprüfen Sie die Konvertierung : Überprüfen Sie nach der Konvertierung des Modells, ob das Modell wie erwartet funktioniert, indem Sie die Bibliothek
onnxverwenden.
Weitere Hinweise
Hier sind einige zusätzliche Überlegungen zur Konvertierung Ihrer Modelle 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 Modell-Exports in
PyTorchoderTensorFlowangeben.Opset-Version : Die opset-Version in
ONNXbestimmt die Menge der Operationen und ihre 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 spezifische opset-Versionen. Älteren Opset-Versionen fehlen möglicherweise Funktionen oder Optimierungen, die in neueren Versionen vorhanden sind. Eine Inkompatibilität zwischen der Opset-Version eines Modells und der Laufzeitumgebung vonONNXkann zu Fehlern beim Inferenzieren führen. Sie müssen sicherstellen, dass die von Ihnen gewählteONNX-Opset-Version von Ihrer Ziel-Runtime unterstützt wird.
Bereitstellung von Modellen, die in das ONNX -Format konvertiert wurden
Verwenden Sie die Software-Spezifikation onnxruntime_opset_19 , um Ihr in das ONNX -Format konvertiertes Modell für maschinelles Lernen bereitzustellen. Sie müssen die Software-Spezifikation und den Modelltyp angeben, wenn Sie das Modell im watsonx.ai Runtime-Repository speichern. Weitere Informationen finden Sie unter "Unterstützte Software-Spezifikationen ".
Um Modelle, die in das ONNX -Format konvertiert wurden, von der Benutzeroberfläche aus bereitzustellen, gehen Sie wie folgt vor:
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 Fundamentmodell regelmäßig verwendet wird, sollten Sie in Erwägung ziehen, Ihrem Modell bei jeder Bereitstellung denselben Servernamen zuzuweisen. 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.
- 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 Beispielnotizbücher zeigen, wie man maschinelle Lernmodelle, die von PyTorch oder TensorFlow in das ONNX -Format konvertiert wurden, mithilfe der Python -Clientbibliothek einsetzt:
| 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 | PyTorch, 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 | Tensorflow, 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. |
| Verwenden Sie das ONNX-Modell, das aus CatBoost | CatBoost, ONNX | Geschultes CatBoost -Modell. CatBoost -Modell in ONNX-Format konvertieren. Das konvertierte Modell im Watson Machine Learning -Repository beibehalten. Bereitstellung des Modells für die Online-Beurteilung mit Hilfe der Client-Bibliothek. Beispieldatensätze mithilfe der Clientbibiliothek bewerten. |
| Verwenden Sie das ONNX-Modell, das aus LightGBM | LightGBM, ONNX | Trainieren Sie ein LightGBM -Modell . Konvertieren Sie das LightGBM -Modell in das ONNX-Format . Speichern Sie das konvertierte Modell im watsonx.ai Runtime-Repository . Stellen Sie das Modell für die Online-Bewertung mithilfe der Client-Bibliothek bereit . Bewerten Sie Beispielsätze mithilfe der Client-Bibliothek |
| Verwenden Sie das ONNX-Modell, das aus XGBoost mit ibm- watsonx -ai konvertiert wurde | XGBoost, ONNX | Trainieren Sie ein XGBoost-Modell. Konvertieren Sie das XGBoost-Modell in das ONNX-Format. Behalten Sie das konvertierte Modell im watsonx.ai -Repository bei. Bereitstellungsmodell für Online-Scoring unter Verwendung der APIClient-Instanz. Erstellen Sie Beispielaufzeichnungen mithilfe der APIClient-Instanz. |
| Verwenden Sie das ONNX-Modell, das von scikit-learn mit ibm- watsonx -ai konvertiert wurde | Scikit-learn, ONNX | Trainieren eines Scikit-Learn-Modells Konvertieren des nativen Scikit-Learn-Modells in das ONNX-Format Konvertieren eines benutzerdefinierten Scikit-Learn-Modells, das in eine sklearn-Pipeline eingebunden ist Speichern des konvertierten Modells im watsonx.ai Runtime-Repository Bereitstellen des Modells für die Online-Bewertung mithilfe der Client-Bibliothek Bewerten von Beispieldatensätzen mithilfe der Client-Bibliothek |