Préparation d'un artefact de modèle

Après l'entraînement d'un modèle, vous devez créer un artefact de modèle à enregistrer avec lui dans un catalogue de modèles.

Le stockage des artefacts de modèle est ainsi centralisé pour le suivi des métadonnées de modèle.

L'artefact de modèle est une archive zip des fichiers nécessaires pour déployer le modèle en tant que déploiement de modèle ou le recharger dans une session de carnet.

Nous avons fourni divers exemples de catalogue de modèles qui incluent des artefacts de modèle pour divers cadres d'apprentissage automatique et formats de modèle. Nous proposons des exemples pour les modèles ONNX, Scikit-learn, Keras, PyTorch, LightGBM et XGBoost. Pour commencer, récupérez notre modèle d'artefact de modèle, qui inclut les fichiers suivants :

Fichier Description
score.py Contient votre logique personnalisée pour charger en mémoire des objets de modèle sérialisés et définir un point d'extrémité d'inférence (predict()).
runtime.yaml Fournit des instructions sur l'environnement Conda à utiliser lors du déploiement du modèle à l'aide d'un déploiement du service de science des données.
README.md Fournit une série d'instructions étape par étape pour préparer et enregistrer un artefact de modèle dans le catalogue de modèles. Nous vous recommandons vivement de suivre ces étapes.
artifact-introspection-test/requirements.txt Répertorie les dépendances tierces que vous devez installer dans votre environnement local avant d'exécuter des tests d'introspection.
artifact-introspection-test/model_artifact_validate.py Fournit une série facultative de définitions de test que vous pouvez exécuter sur votre artefact de modèle avant de l'enregistrer dans le catalogue. Ces tests d'introspection de modèle saisissent de nombreuses erreurs courantes lors de la préparation d'un artefact de modèle.

La structure du répertoire des objets du modèle doit correspondre à l'exemple suivant :

.
|-- runtime.yaml
|-- score.py
|--<your-serialized-model>
|--<your-custom-module.py>
Important

D'autres modules Python peuvent être importés dans score.py. Nous vous recommandons de compresser tout code utilisé pour l'inférence au même niveau que score.py ou à un niveau sous le fichier. Si des fichiers requis se trouvent à des niveaux de dossier précédant le fichier score.py, les fichiers sont ignorés et pourraient entraîner un échec du déploiement.

Fichier score.py

Ce fichier contient les définitions de fonction nécessaires pour charger un modèle en mémoire et effectuer des prévisions.

Les deux fonctions s'appellent : load_model() et predict(). Les paramètres de fonction ne sont pas personnalisables. Par exemple, vous pouvez définir des transformations de données dans predict() avant d'appeler la méthode d'inférence de l'objet d'évaluation. Vous pouvez charger plusieurs objets d'évaluation en mémoire et effectuer une évaluation d'ensemble. Le point d'extrémité /predict d'un déploiement de modèle s'appuie sur la fonction predict(). Assurez-vous que le type de données du paramètre data dans predict() correspond au format de données utiles attendu pour le déploiement de modèle.

Important

Le déploiement de modèle ne prend en charge que les données utiles et les octets JSON. Assurez-vous que le paramètre de données dans predict() est un ou plusieurs octets JSON.

ADS (oracle-ads) fournit des classes spécifiques au cadre d'enregistrement de modèle. Par exemple, si la classe SklearnModel est utilisée avec .prepare(), ADS sérialise par défaut le modèle en librairie de travaux. Lorsque XgboostModel est utilisé, par défaut, .prepare() enregistre le modèle dans un fichier JSON.

Le modèle score.py utilise load_model() pour retourner l'objet d'évaluation de modèle. La fonction predict() accepte les données et l'objet de modèle retourné par load_model(). Les deux fonctions sont personnalisables et nécessitent des définitions. Le corps de predict() peut inclure des transformations de données et d'autres tâches de manipulation de données avant qu'une prédiction de modèle ne soit effectuée. Tous les modules Python personnalisés peuvent être importés dans score.py s'ils sont disponibles dans le fichier d'artefact ou dans le cadre de l'environnement Conda utilisé à des fins d'inférence, comme le modèle.

Conseil

Vous pouvez définir d'autres fonctions d'aide dans score.py qui sont appelées dans predict(). Par exemple, vous pouvez définir une fonction data_transformation() qui définit des transformations personnalisées.

Consultez la rubrique Meilleures pratiques pour les artefacts de modèle pour voir comment créer efficacement ces fichiers.

Nous avons fourni divers exemples de catalogue de modèles, y compris les fichiers score.py. Nous proposons des exemples pour les modèles ONNX, scikit-learn, Keras, PyTorch, LightGBM et XGBoost.