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 : ONNX bietet 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 die ONNX -Laufzeit unterstützt.

  • Verbesserte Leistung : ONNX runtime 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 : ONNX bietet 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:

  1. PyTorch
  2. TensorFlow
  3. CatBoost
  4. LightGBM
  5. XGBoost
  6. Scikit-learn

Umwandlung von PyTorch -Modellen in das ONNX -Format

Folgen Sie diesem Prozess, um Ihr trainiertes Modell in PyTorch in das ONNX -Format umzuwandeln:

  1. 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.

  2. Erstellen oder laden Sie ein PyTorch -Modell herunter : Sie können ein PyTorch -Modell erstellen, indem Sie Ihren eigenen Datensatz verwenden, oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.

  3. PyTorch -Modell in ONNX-Format konvertieren : So konvertieren Sie das PyTorch -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 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.

  4. Ü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.

Umwandlung von TensorFlow -Modellen in das ONNX -Format

Folgen Sie diesem Prozess, um Ihr Modell TensorFlow in das ONNX-Format zu konvertieren:

  1. Bibliotheken importieren : Importieren Sie zunächst die wichtigsten Bibliotheken, wie z. B. tf2onnx , um die Konvertierung von TensorFlow -Modellen in ONNX zu erleichtern, sowie andere Bibliotheken, die für Ihre Anwendung erforderlich sind.

  2. Herunterladen TensorFlow Modell : Sie müssen die extern erstellte TensorFlow Modell und die Daten, die zum Trainieren des Modells verwendet werden.

  3. Konvertieren Sie das TensorFlow -Modell in das ONNX-Format : Verwenden Sie den Befehl tf2onnx.convert , um Ihr TensorFlow -Modell, das im SavedModel -Format erstellt wurde, in das ONNX -Format zu konvertieren. Wenn Sie ein TensorFlow Lite -Modell konvertieren möchten, verwenden Sie die --tflite -Flagge anstelle der --saved-model -Flagge.

Hinweis:

Keras modelle und tf -Funktionen können direkt in Python mithilfe der tf2onnx.convert.from_keras - oder tf2onnx.convert.from_function -Funktionen konvertiert werden.

  1. Ü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 CatBoost -Modellen in das ONNX-Format

Folgen Sie diesem Prozess, um Ihr trainiertes Modell in CatBoost in das ONNX-Format zu konvertieren:

  1. Bibliotheken importieren: Importieren Sie zunächst die wichtigsten Bibliotheken, z. B. onnxruntime für die Ausführung des Modells, catboost für CatBoost -Funktionen und andere für Ihre Anwendung erforderliche Bibliotheken.

  2. Erstellen oder laden Sie ein CatBoost -Modell herunter : Sie können ein CatBoost -Modell erstellen, indem Sie Ihren eigenen Datensatz verwenden, oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.

  3. CatBoost -Modell in ONNX -Format konvertieren : So konvertieren Sie das CatBoost -Modell in das ONNX -Format:

    a. Laden Sie das CatBoost -Modell : Sie können das CatBoost -Modell mithilfe von Bibliotheken wie pickle:

    catboost_model = pickle.load(file)
    

    b. Exportieren Sie das Modell : Verwenden Sie die Funktion catboost_model.save_model mit dem auf onnx eingestellten Formatparameter, um das Modell in das ONNX -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'
        }
    )
    
  4. Ü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 LightGBM -Modellen in das ONNX-Format

Folgen Sie diesem Prozess, um Ihr trainiertes Modell in LightGBM in das ONNX -Format umzuwandeln:

  1. Bibliotheken importieren: Import ieren Sie zunächst die wichtigsten Bibliotheken, z. B. onnxruntime für die Ausführung des Modells, lightgbm für LightGBM -Funktionen und onnxmltools für die Konvertierung sowie andere Bibliotheken, die für Ihre Anwendung erforderlich sind.

  2. Erstellen oder laden Sie ein LightGBM -Modell herunter : Sie können ein LightGBM -Modell erstellen, indem Sie Ihren eigenen Datensatz verwenden, oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.

  3. LightGBM -Modell in ONNX -Format konvertieren : So konvertieren Sie das LightGBM -Modell in das ONNX -Format:

    a. Laden Sie das LightGBM -Modell : Sie können das LightGBM -Modell mithilfe von Bibliotheken wie pickle:

    lgbm_model = pickle.load(file)
    

    b. Exportieren Sie das Modell : Verwenden Sie die Funktion convert_lightgbm , um das Modell in das ONNX -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 das ONNX -Format finden Sie unter Fehlerbehebung bei watsonx.ai Runtime.

  4. Ü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.

Umwandlung von XGBoost -Modellen in das ONNX -Format

Folgen Sie diesem Prozess, um Ihr trainiertes Modell in XGBoost in das ONNX -Format umzuwandeln:

  1. Bibliotheken importieren: Importieren Sie zunächst die wichtigsten Bibliotheken, z. B. onnxruntime für die Ausführung des Modells, xgboost für XGBoost -Funktionen und andere für Ihre Anwendung erforderliche Bibliotheken.

  2. Erstellen oder laden Sie ein XGBoost -Modell herunter : Sie können ein XGBoost -Modell erstellen, indem Sie Ihren eigenen Datensatz verwenden, oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.

  3. XGBoost -Modell in ONNX-Format konvertieren : So konvertieren Sie das XGBoost -Modell in das ONNX-Format:

    a. Laden Sie das XGboost -Modell : Sie können das XGBoost -Modell mithilfe von Bibliotheken wie pickle:

    xgboost_model = pickle.load(file)
    

    b. Exportieren Sie das Modell : Verwenden Sie die Funktion convert_xgboost , um das Modell in das ONNX -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)
    
  4. Ü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:

  1. Bibliotheken importieren : Importieren Sie zunächst die wichtigsten Bibliotheken, z. B. onnxruntime für die Ausführung des Modells, sklearn für scikit-learn -Funktionen, skl2onnx für die Konvertierung und andere Bibliotheken, die für Ihre Anwendung erforderlich sind.

  2. Erstellen oder laden Sie ein scikit-learn -Modell herunter : Sie können ein scikit-learn -Modell erstellen, indem Sie Ihren eigenen Datensatz verwenden, oder Modelle verwenden, die von externen Open-Source-Modell-Repositories wie Hugging Face bereitgestellt werden.

  3. scikit-learn -Modell in ONNX-Format konvertieren : So konvertieren Sie das scikit-learn -Modell in das ONNX -Format:

    a. Laden Sie das scikit-learn -Modell : Sie können das scikit-learn -Modell mithilfe von Bibliotheken wie pickle:

    sklearn_model = pickle.load(file)
    

    b. Exportieren Sie das Modell : Verwenden Sie die Funktion to_onnx , um das Modell in das ONNX -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())
    
  4. Ü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 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 PyTorch oder TensorFlow angeben.

  • Opset-Version : Die opset-Version in ONNX bestimmt 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 von ONNX kann zu Fehlern beim Inferenzieren führen. Sie müssen sicherstellen, dass die von Ihnen gewählte ONNX -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:

  1. Wechseln Sie in Ihrem Bereitstellungsbereich auf die Registerkarte Assets.

  2. Suchen Sie Ihr Modell in der Asset-Liste, klicken Sie auf das Menüsymbol Menüsymbol und wählen Sie Verteilen.

  3. Wählen Sie die Bereitstellungsart für Ihr Modell. Wählen Sie zwischen Online- und Stapelverteilungsoptionen.

  4. 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.

  5. Wählen Sie eine Hardware-Spezifikation für Ihr Modell.

  6. Wählen Sie eine Konfiguration und eine Software-Spezifikation für Ihr Modell.

  7. Klicken Sie auf Erstellen.

Testen des Modells

Gehen Sie folgendermaßen vor, um Ihre in das ONNX-Format konvertierten Modelle zu testen:

  1. Öffnen Sie in Ihrem Bereitstellungsbereich die Registerkarte " Bereitstellungen" und klicken Sie auf den Namen der Bereitstellung.
  2. Klicken Sie auf die Registerkarte Test, um Aufforderungstext einzugeben und eine Antwort vom bereitgestellten Asset zu erhalten.
  3. 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.
  4. 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:

Beispielnotebooks
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