Vous pouvez déployer et inférer des modèles d'apprentissage automatique enregistrés dans différents formats de modèles tels que PyTorch ou Tensorflow et convertis au format Open Neural Network Exchange (ONNX). ONNX est un format open-source pour représenter les modèles d'apprentissage profond. Les développeurs peuvent utiliser le format ONNX pour entraîner leurs modèles dans un cadre, tel que PyTorch ou TensorFlow, puis l'exporter pour l'exécuter dans un autre environnement avec des caractéristiques de performance différentes. Le format ONNX offre une solution puissante pour convertir un modèle d'apprentissage en ONNX et effectuer des inférences en utilisant le runtime ONNX.
Avantages de la conversion des modèles en runtime ONNX
La conversion d'un modèle en runtime ONNX offre plusieurs avantages, en particulier dans le contexte des applications d'apprentissage automatique et d'apprentissage profond. Les avantages de la conversion des modèles en runtime ONNX sont les suivants :
Compatibilité multiplateforme : ONNX 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 cadres tels que PyTorch ou Tensorflow. Vous pouvez former des modèles dans un framework et les déployer dans un autre framework qui supporte le runtime ONNX.
Amélioration des performances : Le moteur d'exécution ONNX optimise les modèles pour l'inférence en appliquant diverses optimisations spécifiques au matériel et au logiciel, 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.
Interopérabilité : ONNX permet d'entraîner des modèles, tels que PyTorch, TensorFlow, et scikit-learn dans un 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.
Cadres de conversion pris en charge
Vous pouvez convertir les modèles d'apprentissage automatique qui utilisent les frameworks suivants au format ONNX :
- PyTorch
- TensorFlow
Convertir les modèles PyTorch au format ONNX
Suivez ce processus pour convertir votre modèle formé dans PyTorch au format ONNX :
Importer les bibliothèques : Commencez par importer les bibliothèques essentielles, telles que
onnxruntime
pour l'exécution du modèle,torch
pour les fonctionnalités de PyTorch et d'autres bibliothèques nécessaires à votre application.Créer ou télécharger un modèle PyTorch : Vous pouvez créer un modèle PyTorch en utilisant votre propre ensemble de données ou en utilisant des modèles fournis par des dépôts de modèles open source externes tels que Hugging Face
Convertir le modèle PyTorch au format ONNX : Pour convertir le modèle PyTorch au format ONNX :
a. Préparez le modèle : Assurez-vous que votre modèle PyTorch est en mode évaluation en utilisant la fonction
model.eval()
. Vous pouvez avoir besoin d'un tenseur d'entrée fictif pour correspondre à la forme du modèle.b. Exporter le modèle : Utilisez la fonction torch.onnx.export pour convertir le modèle au format 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
.
Convertir les modèles TensorFlow au format ONNX
Suivez ce processus pour convertir votre modèle TensorFlow au format ONNX :
Importer les bibliothèques : Commencez par importer les bibliothèques essentielles, telles que
tf2onnx
pour faciliter la conversion des modèles TensorFlow vers ONNX, et d'autres bibliothèques nécessaires à votre application.Télécharger le modèle TensorFlow : Vous devez télécharger le modèle TensorFlow créé en externe et les données utilisées pour l'entraînement du modèle.
Convertir un modèle TensorFlow au format ONNX : Utilisez la commande
tf2onnx.convert
pour convertir votre modèle TensorFlow créé au formatSavedModel
au format ONNX. Si vous souhaitez convertir un modèle TensorFlow Lite, utilisez l'option--tflite
au lieu de l'option--saved-model
.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 TensorFlow au format 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 PyTorch ou TensorFlow.
Version de l'opset : La version de l'opset dans ONNX détermine l'ensemble des opérations et leurs spécifications qui sont prises en charge par le modèle. Il s'agit d'un facteur critique lors de la conversion et du déploiement du modèle.
Les différents runtimes et frameworks ONNX supportent 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 ONNX peut provoquer des erreurs lors de l'inférence. Vous devez vous assurer que la version de l'opset ONNX que vous choisissez est supportée par votre runtime cible.
Déployer des modèles convertis au format ONNX
Utilisez la spécification logicielle onnxruntime_opset_19
pour déployer votre modèle d'apprentissage automatique converti au format ONNX. Pour plus d'informations, voir les spécifications des logiciels pris en charge.
Pour déployer des modèles convertis au format ONNX à partir de l'interface utilisateur, suivez les étapes suivantes :
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 flux de travail où votre foundation model 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.
- Flux : Saisir les données d'entrée du texte pour générer un flux 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 de PyTorch ou TensorFlow au format ONNX en utilisant la bibliothèque client Python :
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 | 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 | 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 |
Sujet parent : Déployer des ressources d'apprentissage automatique