Préparation d'un artefact de modèle

Une fois qu'un modèle est entraîné, vous devez créer un artefact de modèle pour l'enregistrer avec le modèle dans un catalogue de modèles.

Cela permet un stockage centralisé des artefacts de modèle pour le suivi des métadonnées de modèle.

Un 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 pour le charger dans une session de bloc-notes.

Nous avons fourni divers exemples de catalogue de modèles qui incluent des artefacts de modèle pour divers frameworks de machine learning et formats de modèle. Nous proposons des exemples pour les modèles ONNX, Scikit-learn, Keras, PyTorch, LightGBM et XGBoost. Commencez par obtenir notre modèle d'artefact de modèle, qui inclut les fichiers suivants :

Fichier Description
score.py Contient votre logique personnalisée de chargement des objets de modèle sérialisés en mémoire et définit une adresse 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 de modèle Data Science.
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 l'artefact de modèle avant de l'enregistrer dans le catalogue de modèles. Ces tests d'introspection de modèle capturent la plupart des erreurs les plus courantes lors de la préparation d'un artefact de modèle.

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

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

Des modules Python supplémentaires sont importés dans score.py. Nous vous recommandons de compresser n'importe quel code utilisé pour l'inférence au même niveau que score.py ou à n'importe quel niveau sous le fichier. Si des fichiers requis sont présents au niveau des dossiers précédant le fichier score.py, ils sont ignorés et peuvent entraîner l'é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 load_model() et predict() sont appelées. Les paramètres de fonction n'ont pas été personnalisés. 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'estimateur. Vous pouvez charger plusieurs objets d'estimateur en mémoire et effectuer une évaluation d'ensemble. La fonction predict() se trouve derrière l'adresse /predict d'un déploiement de modèle. Assurez-vous que le type de données du paramètre data dans predict() correspond au format de charge utile attendu avec le déploiement de modèle.

Important

Le déploiement de modèle prend uniquement en charge la charge utile JSON et les octets. 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 à la structure 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 dans joblib. 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 renvoyer l'objet d'estimateur de modèle. La fonction predict() intègre les données et l'objet de modèle renvoyé par load_model(). Les deux fonctions sont personnalisables et requièrent 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 la réalisation d'une prédiction de modèle. 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 appelées dans predict(). Par exemple, vous pouvez définir une fonction data_transformation() qui établit des transformations personnalisées.

Consultez les meilleures pratiques concernant les artefacts de modèle pour créer efficacement ces fichiers.

Nous avons fourni divers modèles et 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.