Déployer des modèles convertis au format ONNX
Vous pouvez déployer et inférer des modèles d'apprentissage automatique à partir de
ou PyTorch
qui sont enregistrés dans différents formats et convertis au format TensorFlow
(Open Neural Network Exchange
). ONNX
est un format open source permettant de représenter des modèles d'apprentissage profond. Les développeurs peuvent utiliser le format d' ONNX
s pour former leurs modèles dans un environnement, tel que ONNX
ou PyTorch
, puis l'exporter pour l'exécuter dans un autre environnement avec des caractéristiques de performance différentes. Le format « TensorFlow
» fournit une solution puissante pour convertir un modèle d'apprentissage automatique en « ONNX
» et effectuer des inférences en utilisant le runtime « ONNX
».ONNX
Avantages de la conversion des modèles vers l'environnement d'exécution d' ONNX
ONNX
La conversion d'un modèle en un environnement d'exécution d'
s offre plusieurs avantages, en particulier dans le contexte des applications d'apprentissage automatique et d'apprentissage profond. Voici quelques-uns des avantages de la conversion des modèles en environnement d'exécution d' ONNX
:ONNX
Compatibilité inter-plateforme :
fournit un format standard pour représenter les modèles d'apprentissage automatique, ce qui facilite le déploiement des modèles dans différents environnements tels qu' PyTorch ou Tensorflow. Vous pouvez former des modèles dans un environnement et les déployer dans un autre environnement qui prend en charge l'environnement d'exécution d'ONNX
.ONNX
Performances améliorées : l'exécution d'
s optimise les modèles pour l'inférence en appliquant diverses optimisations spécifiques au matériel et aux logiciels, telles que les optimisations de graphes. En outre, il prend en charge l'exécution sur différents matériels, tels que les CPU et les GPU, ce qui garantit une utilisation efficace des ressources.ONNX
Interopérabilité :
permet de former des modèles, tels qu' PyTorch, TensorFlow, et scikit-learn dans un seul cadre, puis de les exporter pour les exécuter dans un autre environnement, ce qui rationalise les flux de travail. Il fait tomber les barrières entre les différents cadres d'apprentissage profond, permettant aux développeurs de tirer parti des forces des différentes bibliothèques sans être enfermés dans un seul écosystème.ONNX
Cadres de conversion pris en charge
Vous pouvez convertir les modèles d'apprentissage automatique qui utilisent les frameworks suivants au format d'
s :ONNX
PyTorch
TensorFlow
CatBoost
LightGBM
XGBoost
Scikit-learn
Conversion des modèles d' PyTorch
s au format d' ONNX
PyTorch
ONNX
Suivez cette procédure pour convertir votre modèle entraîné dans l'
, au format d' PyTorch
:ONNX
Importer les bibliothèques : Commencez par importer les bibliothèques essentielles, telles que
pour l'exécution du modèle,onnxruntime
pour les fonctionnalités de PyTorch et d'autres bibliothèques nécessaires à votre application.torch
Créer ou télécharger un modèle d'
: Vous pouvez créer un modèle d'PyTorch
en utilisant votre propre ensemble de données ou utiliser des modèles fournis par des référentiels de modèles open source externes tels que Hugging Face.PyTorch
Convertir un modèle d'
s au format ONNX : Pour convertir un modèle d'PyTorch
s au format ONNX :PyTorch
a. Préparer le modèle : Assurez-vous que votre modèle d'
s est en mode évaluation en utilisant la fonction d'PyTorch
. Vous pouvez avoir besoin d'un tenseur d'entrée fictif pour correspondre à la forme du modèle.model.eval()
b. Exporter le modèle : Utilisez la fonction
pour convertir le modèle au format ONNX.torch.onnx.export
Vérifier la conversion : Après avoir converti le modèle, vérifiez qu'il fonctionne comme prévu en utilisant la bibliothèque
.onnx
Conversion des modèles d' TensorFlow
s au format d' ONNX
TensorFlow
ONNX
Suivez cette procédure pour convertir votre modèle
au format ONNX :TensorFlow
Importer des bibliothèques : Commencez par importer les bibliothèques essentielles, telles qu'
, pour faciliter la conversion des modèles d'tf2onnx
s en ONNX, ainsi que les autres bibliothèques requises pour votre application.TensorFlow
Télécharger le modèle d'apprentissage (
) : Vous devez télécharger le modèle d'apprentissage (TensorFlow
) créé en externe et les données utilisées pour l'entraînement du modèle.TensorFlow
Convertir un modèle d'
s au format ONNX : Utilisez la commandeTensorFlow
pour convertir votre modèle d'tf2onnx.convert
s créé au formatTensorFlow
au formatSavedModel
. Si vous souhaitez convertir un modèleONNX
, utilisez l'indicateurTensorFlow Lite
au lieu de l'indicateur--tflite
.--saved-model
et les fonctions Keras
peuvent être directement converties dans Python en utilisant les fonctions tf
ou tf2onnx.convert.from_keras
.tf2onnx.convert.from_function
- Vérifier la conversion : Après avoir converti le modèle, vérifiez qu'il fonctionne comme prévu en utilisant la bibliothèque
.onnx
Conversion des modèles d' CatBoost
s au format ONNX
CatBoost
Suivez cette procédure pour convertir votre modèle entraîné dans l
, au format ONNX :CatBoost
Importer les bibliothèques : Commencez par importer les bibliothèques essentielles, telles que
pour l'exécution du modèle,onnxruntime
pour les fonctionnalités d'catboost
, et les autres bibliothèques requises pour votre application.CatBoost
Créer ou télécharger un modèle d'
: Vous pouvez créer un modèle d'CatBoost
en utilisant votre propre ensemble de données ou utiliser des modèles fournis par des référentiels de modèles open source externes tels que Hugging Face.CatBoost
Convertir un modèle d'
s au format d'CatBoost
s : Pour convertir le modèle d'ONNX
s au format d'CatBoost
s :ONNX
a. Charger le modèle d'
: Vous pouvez charger le modèle d'CatBoost
en utilisant des bibliothèques telles queCatBoost
:pickle
catboost_model = pickle.load(file)
b. Exporter le modèle : Utilisez la fonction «
» avec le paramètre de format défini sur «catboost_model.save_model
» pour convertir le modèle au format «onnx
».ONNX
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' } )
Vérifier la conversion : Après avoir converti le modèle, vérifiez qu'il fonctionne comme prévu en utilisant la bibliothèque
.onnx
Conversion des modèles d' LightGBM
s au format ONNX
LightGBM
Suivez cette procédure pour convertir votre modèle entraîné dans l'
, au format d' LightGBM
:ONNX
Importer les bibliothèques : Commencez par importer les bibliothèques essentielles, telles que
pour l'exécution du modèle,onnxruntime
pour les fonctionnalités d'lightgbm
, etLightGBM
pour la conversion et les autres bibliothèques requises pour votre application.onnxmltools
Créer ou télécharger un modèle d'
: Vous pouvez créer un modèle d'LightGBM
en utilisant votre propre ensemble de données ou utiliser des modèles fournis par des référentiels de modèles open source externes tels que Hugging Face.LightGBM
Convertir un modèle d'
s au format d'LightGBM
s : Pour convertir le modèle d'ONNX
s au format d'LightGBM
s :ONNX
a. Charger le modèle d'
: Vous pouvez charger le modèle d'LightGBM
en utilisant des bibliothèques telles queLightGBM
:pickle
lgbm_model = pickle.load(file)
b. Exporter le modèle : Utiliser la fonction « Exporter le modèle » (
) pour convertir le modèle au format «convert_lightgbm
».ONNX
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)
Astuce :Pour résoudre les problèmes de conversion de modèles d'
s au format d'LightGBM
, voir Résolution des problèmes d' watsonx.ai Runtime.ONNX
Vérifier la conversion : Après avoir converti le modèle, vérifiez qu'il fonctionne comme prévu en utilisant la bibliothèque
.onnx
Conversion des modèles d' XGBoost
s au format d' ONNX
XGBoost
ONNX
Suivez cette procédure pour convertir votre modèle entraîné dans l'
, au format d' XGBoost
:ONNX
Importer les bibliothèques : Commencez par importer les bibliothèques essentielles, telles que
pour l'exécution du modèle,onnxruntime
pour les fonctionnalités d'xgboost
, et les autres bibliothèques requises pour votre application.XGBoost
Créer ou télécharger un modèle d'
: Vous pouvez créer un modèle d'XGBoost
en utilisant votre propre ensemble de données ou utiliser des modèles fournis par des référentiels de modèles open source externes tels que Hugging Face.XGBoost
Convertir un modèle d'
s au format ONNX : Pour convertir un modèle d'XGBoost
s au format ONNX :XGBoost
a. Charger le modèle d'
: Vous pouvez charger le modèle d'XGboost
en utilisant des bibliothèques telles queXGBoost
:pickle
xgboost_model = pickle.load(file)
b. Exporter le modèle : Utiliser la fonction « Exporter le modèle » (
) pour convertir le modèle au format «convert_xgboost
».ONNX
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)
Vérifier la conversion : Après avoir converti le modèle, vérifiez qu'il fonctionne comme prévu en utilisant la bibliothèque onnx.
Conversion des modèles d' scikit-learn
s au format d' ONNX
scikit-learn
ONNX
Suivez cette procédure pour convertir votre modèle entraîné dans l'
, au format d' scikit-learn
:ONNX
Importer les bibliothèques : Commencez par importer les bibliothèques essentielles, telles que
pour l'exécution du modèle,onnxruntime
pour les fonctionnalités d'sklearn
,scikit-learn
pour la conversion et les autres bibliothèques requises pour votre application.skl2onnx
Créer ou télécharger un modèle d'
: Vous pouvez créer un modèle d'scikit-learn
en utilisant votre propre ensemble de données ou utiliser des modèles fournis par des référentiels de modèles open source externes tels que Hugging Face.scikit-learn
Convertir un modèle
au format ONNX : Pour convertir un modèlescikit-learn
au formatscikit-learn
:ONNX
a. Charger le modèle d'
: Vous pouvez charger le modèle d'scikit-learn
en utilisant des bibliothèques telles quescikit-learn
:pickle
sklearn_model = pickle.load(file)
b. Exporter le modèle : Utiliser la fonction « Exporter le modèle » (
) pour convertir le modèle au format «to_onnx
».ONNX
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())
Vérifier la conversion : Après avoir converti le modèle, vérifiez qu'il fonctionne comme prévu en utilisant la bibliothèque
.onnx
Autres considérations
Voici quelques considérations supplémentaires pour convertir vos modèles au format d'
:ONNX
Axes dynamiques : Les axes dynamiques peuvent être utilisés par un modèle pour gérer des formes d'entrée variables, telles que des tailles de lots ou des longueurs de séquences dynamiques, ce qui est utile pour les modèles déployés dans des applications où les dimensions d'entrée peuvent varier. Utilisez des axes dynamiques si votre modèle gère des tailles d'entrée variables, telles que la taille d'un lot dynamique ou la longueur d'une séquence.
Les axes dynamiques réduisent également la charge de mémoire car ils peuvent être utilisés avec plusieurs entrées et sorties pour s'adapter dynamiquement sans réexporter le modèle. Vous pouvez spécifier les axes dynamiques lors de l'exportation du modèle dans
ouPyTorch
.TensorFlow
Version opset : La version opset dans l'
, détermine l'ensemble des opérations et leurs spécifications qui sont supportées par le modèle. Il s'agit d'un facteur critique lors de la conversion et du déploiement du modèle.ONNX
Différents environnements d'exécution et frameworks d'
s prennent en charge des versions spécifiques d'OPSET. Les anciennes versions d'opset peuvent manquer de fonctionnalités ou d'optimisations présentes dans les versions plus récentes. L'incompatibilité entre la version opset d'un modèle et le runtime d'ONNX
peut entraîner des erreurs lors de l'inférence. Vous devez vous assurer que la version d'ONNX
opset que vous choisissez est prise en charge par votre runtime cible.ONNX
Déploiement des modèles convertis au format d' ONNX
ONNX
Utilisez la spécification logicielle d'
pour déployer votre modèle d'apprentissage automatique converti au format d' onnxruntime_opset_19
. Vous devez spécifier les caractéristiques du logiciel et le type de modèle lorsque vous enregistrez le modèle dans le référentiel d'exécution d' watsonx.ai. Pour plus d'informations, voir Spécifications des logiciels pris en charge.ONNX
Pour déployer des modèles convertis au format d'
s depuis l'interface utilisateur, procédez comme suit :ONNX
Dans votre espace de déploiement, accédez à l'onglet Assets.
Recherchez votre modèle dans la liste des ressources, cliquez sur l'icône Menu et sélectionnez Déployer.
Sélectionnez le type de déploiement pour votre modèle. Choisissez entre les options de déploiement en ligne et par lots.
Saisissez un nom pour votre déploiement et, éventuellement, un nom de service, une description et des balises.
Remarque :- Utilisez le champ Serving name pour spécifier un nom pour votre déploiement au lieu de l'ID de déploiement.
- Le nom de service doit être unique dans l'espace de noms.
- Le nom de service ne doit contenir que les caractères suivants : a-z,0-9,_] et doit comporter au maximum 36 caractères.
- Dans les workflows où votre modèle de base personnalisé est utilisé périodiquement, envisagez d'attribuer à votre modèle le même nom de service à chaque fois que vous le déployez. Ainsi, après avoir supprimé puis redéployé le modèle, vous pouvez continuer à utiliser le même point de terminaison dans votre code.
Sélectionnez une spécification matérielle pour votre modèle.
Sélectionnez une configuration et une spécification logicielle pour votre modèle.
Cliquez sur Créer.
Test du modèle
Suivez ces étapes pour tester les modèles déployés convertis au format ONNX :
- Dans votre espace de déploiement, ouvrez l'onglet Déploiements et cliquez sur le nom du déploiement.
- Cliquez sur l'onglet Test pour saisir un texte d'invite et obtenir une réponse du poste déployé.
- Saisissez les données de test dans l'un des formats suivants, en fonction du type de bien que vous avez déployé :
- Texte : Saisir les données d'entrée du texte pour générer un bloc de texte en sortie.
- JSON : Saisir des données d'entrée JSON pour générer une sortie au format JSON.
- Cliquez sur Générer pour obtenir des résultats basés sur votre demande.
Exemples de blocs-notes
Les exemples de notebooks suivants montrent comment déployer des modèles d'apprentissage automatique convertis du format
ou PyTorch
au format TensorFlow
à l'aide de la bibliothèque cliente Python :ONNX
Bloc-notes | Infrastructure | Descriptif |
---|---|---|
Convertir un réseau de neurones ONNX d'axes fixes en axes dynamiques et l'utiliser avec watsonx | ONNX | Configurer l'environnement Créer et exporter le modèle ONNX de base Convertir le modèle d'axes fixes en axes dynamiques Persister le modèle ONNX converti Déployer et noter le modèle ONNX Nettoyer Résumé et prochaines étapes |
Utiliser le modèle ONNX converti de PyTorch avec watsonx | PyTorch, ONNX | Créer un modèle PyTorch avec un ensemble de données. Convertir le modèle PyTorch au format ONNX Persister le modèle converti dans le référentiel Watson Machine Learning. Déployer le modèle pour la notation en ligne à l'aide de la bibliothèque client. Evaluer des enregistrements d'échantillon à l'aide d'une bibliothèque client |
Utiliser un modèle ONNX converti à partir de TensorFlow pour reconnaître des chiffres écrits à la main avec watsonx | Tensorflow, ONNX | Téléchargez un modèle TensorFlow formé en externe avec un ensemble de données. Convertir le modèle TensorFlow au format ONNX Persister le modèle converti dans le référentiel Watson Machine Learning. Déployer le modèle pour la notation en ligne à l'aide de la bibliothèque client. Evaluer des enregistrements d'échantillon à l'aide d'une bibliothèque client |
Utiliser le modèle ONNX converti à partir de CatBoost | CatBoost, ONNX | Modèle entraîné CatBoost. Convertir le modèle CatBoost au format ONNX. Persister le modèle converti dans le référentiel Watson Machine Learning. Déployer le modèle pour la notation en ligne à l'aide de la bibliothèque client. Evaluer des enregistrements d'échantillon à l'aide d'une bibliothèque client |
Utiliser le modèle ONNX converti à partir de LightGBM | LightGBM, ONNX | Entraîner un modèle LightGBM Convertir le modèle LightGBM au format ONNX Persister le modèle converti dans le référentiel watsonx.ai Runtime Déployer le modèle pour l'évaluation en ligne à l'aide de la bibliothèque client Évaluer les enregistrements de l'échantillon à l'aide de la bibliothèque client |
Utiliser le modèle ONNX converti à partir de XGBoost avec ibm- watsonx -ai | XGBoost, ONNX | Entraîner un modèle XGBoost. Convertir le modèle XGBoost au format ONNX. Conserver le modèle converti dans le référentiel d' watsonx.ai. Déployer le modèle de notation en ligne à l'aide de l'instance APIClient. Enregistrez des échantillons de partition à l'aide de l'instance APIClient. |
Utiliser le modèle ONNX converti à partir de scikit-learn avec ibm- watsonx -ai | Scikit-learn, ONNX | Former un modèle scikit-learn Convertir le modèle natif scikit-learn au format ONNX Effectuer la conversion d'un modèle scikit-learn personnalisé encapsulé dans un pipeline sklearn Conserver le modèle converti dans le référentiel d'exécution d' watsonx.ai Déployer le modèle pour la notation en ligne à l'aide de la bibliothèque client Noter des exemples d'enregistrements à l'aide de la bibliothèque client |
Sujet parent : Déployer des ressources d'apprentissage automatique