Importez des modèles d'apprentissage automatique formés en dehors d'IBM watsonx.ai Runtime afin de pouvoir déployer et tester les modèles. Passez en revue les infrastructures de modèle disponibles pour l'importation de modèles.
Ici, Pour importer un modèle qualifié signifie :
- Stockez le modèle entraîné dans votre référentiel watsonx.ai Runtime
- Facultatif : Déployer le modèle stocké dans votre service watsonx.ai Runtime
et repository signifie un compartiment Cloud Object Storage . Pour plus d'informations, voir Création d'espaces de déploiement.
Vous pouvez importer un modèle de l'une des manières suivantes:
- Directement via l'interface utilisateur
- En utilisant un chemin d'accès à un fichier
- En utilisant un chemin d'accès à un répertoire
- Importation d'un objet de modèle
Pour plus d'informations, voir :
- Possibilités d'importation de modèles, par type de cadre
- Éléments à prendre en compte lors de l'importation de modèles
Pour un exemple d'ajout d'un modèle à l'aide d'un programme à l'aide du clientPython, reportez-vous au bloc-notes suivant:
Pour un exemple d'ajout d'un modèle à l'aide d'un programme à l'aide de l' API REST, reportez-vous à ce bloc-notes:
Méthodes disponibles pour importer des modèles, par type de canevas
Ce tableau liste les méthodes disponibles pour importer des modèles dans watsonx.ai Runtime, par type de framework.
Option d'importation | Spark MLlib | Scikit-learn | XGBoost | TensorFlow | PyTorch |
---|---|---|---|---|---|
Objet modèle importé | ✓ | ✓ | ✓ | ||
Importation d'un modèle à l'aide d'un chemin d'accès à un fichier | ✓ | ✓ | ✓ | ✓ | |
Importation d'un modèle à l'aide d'un chemin d'accès à un répertoire | ✓ | ✓ | ✓ | ✓ |
Ajout d'un modèle à l'aide de l'interface utilisateur
Si vous souhaitez importer un modèle au format PMML, vous pouvez importer directement le fichier .xml
du modèle.
Pour importer un modèle à l'aide de l'interface utilisateur:
- Dans l'onglet Assets de votre espace dans watsonx.ai Runtime, cliquez sur Import assets.
- Accédez à Fichier local et sélectionnez Modèle.
- Sélectionnez le fichier de modèle à importer et cliquez sur Importer.
Le mécanisme d'importation sélectionne automatiquement un type de modèle et une spécification logicielle correspondants en fonction de la chaîne de version dans le fichier .xml
.
Objet modèle importé
Cette méthode d'importation est prise en charge par un nombre limité d'infrastructures ML. Pour plus d'informations, voir Available ways to import models, per framework type.
Pour importer un objet de modèle:
- Si votre modèle se trouve dans un emplacement distant, voir Téléchargement d'un modèle stocké dans un emplacement distant.
- Stockez l'objet modèle dans votre référentiel watsonx.ai Runtime. Pour plus d'informations, voir Stocker le modèle dans le référentiel watsonx.ai Runtime.
Importation d'un modèle à l'aide d'un chemin d'accès à un fichier
Cette méthode d'importation est prise en charge par un nombre limité d'infrastructures ML. Pour plus d'informations, voir Available ways to import models, per framework type.
Pour importer un modèle à l'aide d'un chemin d'accès à un fichier:
Si votre modèle se trouve dans un emplacement distant, suivez la procédure Téléchargement d'un modèle stocké dans un emplacement distant pour le télécharger.
Si votre modèle est stocké localement, placez-le dans un répertoire spécifique.
!cp <saved model> <target directory> !cd <target directory>
Pour les modèles Scikit-learn, XGBoost, Tensorflowet PyTorch , si le fichier téléchargé n'est pas une archive
.tar.gz
, faites une archive :!tar -zcvf <saved model>.tar.gz <saved model>
Le fichier de modèle doit se trouver dans le dossier de niveau supérieur du répertoire, par exemple:
assets/ <saved model> variables/ variables/variables.data-00000-of-00001 variables/variables.index
Utilisez le chemin d'accès au fichier enregistré pour stocker le fichier de modèle dans votre référentiel watsonx.ai Runtime. Pour plus d'informations, voir Stocker le modèle dans le référentiel watsonx.ai Runtime.
Importation d'un modèle à l'aide d'un chemin d'accès à un répertoire
Cette méthode d'importation est prise en charge par un nombre limité d'infrastructures ML. Pour plus d'informations, voir Available ways to import models, per framework type.
Pour importer un modèle à l'aide d'un chemin d'accès à un répertoire:
Si votre modèle se trouve dans un emplacement distant, voir Téléchargement d'un modèle stocké dans un emplacement distant.
Si votre modèle est stocké localement, placez-le dans un répertoire spécifique.
!cp <saved model> <target directory> !cd <target directory>
Pour les modèles scikit-learn, XGBoost, Tensorflowet PyTorch , le fichier de modèle doit se trouver dans le dossier de niveau supérieur du répertoire, par exemple:
assets/ <saved model> variables/ variables/variables.data-00000-of-00001 variables/variables.index
Utilisez le chemin du répertoire pour stocker le fichier de modèle dans votre référentiel watsonx.ai Runtime. Pour plus d'informations, voir Stocker le modèle dans le référentiel watsonx.ai Runtime.
Télécharger un modèle stocké en un endroit distant
Suivez cet exemple de code pour télécharger votre modèle d'un endroit distant :
import os
from wget import download
target_dir = '<target directory name>'
if not os.path.isdir(target_dir):
os.mkdir(target_dir)
filename = os.path.join(target_dir, '<model name>')
if not os.path.isfile(filename):
filename = download('<url to model>', out = target_dir)
Éléments à prendre en compte lors de l'importation de modèles
Pour en savoir plus sur l'importation d'un type de modèle spécifique, voir:
- Modèles enregistrés au format PMML
- Modèles Spark MLlib
- Modèles Scikit-learn
- Modèles XGBoost
- ModèlesTensorFlow
- ModèlesPyTorch
Pour en savoir plus sur les frameworks que vous pouvez utiliser avec watsonx.ai Runtime, voir Supports de frameworks.
Modèles enregistrés au format PMML
- Le seul type de déploiement disponible pour les modèles importés à partir de PMML est le déploiement en ligne.
- Le fichier PMML doit avoir l'extension de fichier
.xml
. - Les modèles PMML ne peuvent pas être utilisés dans un flux SPSS.
- Le fichier PMML ne doit pas contenir de prologue. Selon la bibliothèque que vous utilisez lorsque vous sauvegardez votre modèle, un prologue peut être ajouté au début du fichier par défaut. Par exemple, si votre fichier contient une chaîne prologue telle que
spark-mllib-lr-model-pmml.xml
, supprimez cette chaîne avant d'importer le fichier PMML dans l'espace de déploiement.
Selon la bibliothèque que vous utilisez lorsque vous sauvegardez votre modèle, un prologue peut être ajouté au début du fichier par défaut, comme dans l'exemple suivant:
::::::::::::::
spark-mllib-lr-model-pmml.xml
::::::::::::::
Vous devez supprimer ce prologue avant de pouvoir importer le fichier PMML dans watsonx.ai Runtime.
Modèles Spark MLlib
- Seuls les modèles de classification et de régression sont disponibles.
- Les transformateurs personnalisés, les fonctions définies par l'utilisateur et les classes ne sont pas disponibles.
Modèles Scikit-learn
.pkl
et.pickle
sont les formats d'importation disponibles.- Pour sérialiser ou piocher le modèle, utilisez le pack
joblib
. - Seuls les modèles de classification et de régression sont disponibles.
- Le type d'entrée de trame de données Pandas pour l'API
predict()
n'est pas disponible. - Le seul type de déploiement disponible pour les modèles scikit-learn est le déploiement en ligne.
Modèles XGBoost
.pkl
et.pickle
sont les formats d'importation disponibles.- Pour sérialiser ou piocher le modèle, utilisez le pack
joblib
. - Seuls les modèles de classification et de régression sont disponibles.
- Le type d'entrée de trame de données Pandas pour l'API
predict()
n'est pas disponible. - Le seul type de déploiement disponible pour les modèles XGBoost est le déploiement en ligne.
Modèles TensorFlow
.pb
,.h5
et.hdf5
sont les formats d'importation disponibles.- Pour enregistrer ou sérialiser un modèle TensorFlow , utilisez la méthode
tf.saved_model.save()
. tf.estimator
n'est pas disponible.- Les seuls types de déploiement disponibles pour les modèles TensorFlow sont le déploiement en ligne et le déploiement par lots.
Modèles PyTorch
Le seul type de déploiement disponible pour les modèles PyTorch est le déploiement en ligne.
Pour qu'un modèle Pytorch puisse être importé dans watsonx.ai Runtime, il doit être préalablement exporté au format '
.onnx
. Reportez-vous à ce code.torch.onnx.export(<model object>, <prediction/training input data>, "<serialized model>.onnx", verbose=True, input_names=<input tensor names>, output_names=<output tensor names>)
Stocker un modèle dans votre référentiel watsonx.ai Runtime
Utilisez ce code pour stocker votre modèle dans votre référentiel watsonx.ai Runtime :
from ibm_watson_machine_learning import APIClient
client = APIClient(<your credentials>)
sw_spec_uid = client.software_specifications.get_uid_by_name("<software specification name>")
meta_props = {
client.repository.ModelMetaNames.NAME: "<your model name>",
client.repository.ModelMetaNames.SOFTWARE_SPEC_UID: sw_spec_uid,
client.repository.ModelMetaNames.TYPE: "<model type>"}
client.repository.store_model(model=<your model>, meta_props=meta_props)
Remarques :
Selon l'infrastructure de modèle utilisée,
<your model>
peut être l'objet de modèle réel, un chemin d'accès complet à un fichier de modèle sauvegardé ou un chemin d'accès à un répertoire dans lequel se trouve le fichier de modèle. Pour plus d'informations, voir Available ways to import models, per framework type.Pour obtenir la liste des spécifications logicielles disponibles à utiliser en tant que
<software specification name>
, utilisez la méthodeclient.software_specifications.list()
.Pour obtenir la liste des types de modèles disponibles à utiliser en tant que
model_type
, voir Spécifications logicielles et spécifications matérielles pour les déploiements.Lorsque vous exportez un modèle Pytorch au format '
.onnx
, spécifiez le drapeau 'keep_initializers_as_inputs=True
et définissez 'opset_version
à 9 (les déploiements du runtimewatsonx.ai utilisent le runtime ONNX 'caffe2
qui ne supporte pas les versions d'opset supérieures à 9).torch.onnx.export(net, x, 'lin_reg1.onnx', verbose=True, keep_initializers_as_inputs=True, opset_version=9)
Rubrique parent: Actifs dans les espaces de déploiement