Déploiements de modèle

Découvrez comment utiliser des déploiements de modèle Data Science.

Les déploiements de modèle sont des ressources gérées dans le service OCI Data Science à utiliser pour déployer des modèles d'apprentissage automatique en tant qu'adresses HTTP dans OCI. Le déploiement de modèles d'apprentissage automatique en tant qu'applications Web (adresses d'API HTTP) traitant les prévisions en temps réel est la manière la plus courante de mettre des modèles en production. Les adresses HTTP sont flexibles et peuvent traiter les demandes pour les prédictions de modèle.

Flux qui présente l'entraînement des modèles dans les sessions de bloc-notes, l'enregistrement et le stockage dans le catalogue de modèles, et enfin le déploiement du modèle à l'aide de la ressource correspondante.

Entraînement

L'entraînement d'un modèle est la première étape de son déploiement. Vous utilisez des sessions de bloc-notes et des travaux pour entraîner les modèles open source et Oracle AutoML.

Enregistrement et stockage

Vous stockez ensuite le modèle entraîné dans le catalogue de modèles. Vous disposez des options suivantes pour enregistrer un modèle dans le catalogue :

  • Le kit SDK ADS fournit une interface permettant de spécifier un modèle open source, de préparer son artefact de modèle et d'enregistrer cet artefact dans le catalogue de modèles.
  • Vous pouvez utiliser la console OCI, les kits SDK et les interfaces de lignes de commande pour enregistrer l'artefact de modèle dans le catalogue de modèles.

  • Utilisez différentes structures, telles que scikit-learn, TensorFlow ou Keras.

Le déploiement de modèle exige que vous indiquiez un environnement conda d'inférence dans le fichier d'artefact de modèle runtime.yaml. Il contient toutes les dépendances de modèle et est installé dans le conteneur de serveur de modèle. Vous pouvez spécifier l'un des environnements conda Data Science ou un environnement publié que vous avez créé.

Déploiement de modèle

Une fois qu'un modèle est enregistré dans le catalogue de modèles, il devient disponible pour déploiement en tant que ressource de déploiement de modèle. Le service prend en charge les modèles exécutés dans un environnement d'exécution Python, et leurs dépendances peuvent être packagées dans un environnement conda.

Vous pouvez déployer et appeler un modèle à l'aide de la console OCI, des kits SDK OCI, de l'interface de ligne de commande OCI et du kit SDK ADS dans les sessions de bloc-notes.

Les déploiements de modèle s'appuient sur ces composants clés pour déployer un modèle en tant qu'adresse HTTP :

Présente les composants clés des ressources de déploiement de modèle.
Load Balancer.

Lorsqu'un déploiement de modèle est créé, un équilibreur de charge doit être configuré. Un équilibreur de charge fournit un moyen automatisé de distribuer le trafic d'un point d'entrée à de nombreux serveurs de modèle exécutés dans un pool de machines virtuelles. La bande passante de l'équilibreur de charge doit être indiquée dans Mbps et est une valeur statique. Vous pouvez modifier la bande passante de l'équilibreur de charge en modifiant le déploiement de modèle.

Pool d'instances de machine virtuelle hébergeant le serveur de modèle, l'environnement conda et le modèle lui-même

Une copie du serveur de modèle est effectuée sur chaque instance de calcul du pool de machines virtuelles.

Une copie de l'environnement conda d'inférence et de l'artefact de modèle sélectionné est également ajoutée dans chaque instance du pool. Deux copies du modèle sont chargées en mémoire pour chaque OCPU de chaque instance de machine virtuelle dans le pool. Par exemple, si vous sélectionnez une instance VM.Standard2.4 pour exécuter le serveur de modèle, 4 OCPU x 2 = 8 copies du modèle sont chargées en mémoire. Plusieurs copies du modèle permettent de gérer les demandes simultanées effectuées sur l'adresse de modèle en les répartissant entre les répliques de modèle dans la mémoire de machine virtuelle. Veillez à sélectionner une forme de machine virtuelle avec une empreinte mémoire suffisante pour contenir ces répliques de modèle. Pour la plupart des modèles d'apprentissage automatique dont la taille est exprimée en Mo ou de quelques Go, la mémoire ne sera probablement pas problématique.

L'équilibreur de charge distribue les demandes envoyées à l'adresse de modèle entre les instances du pool. Nous vous recommandons d'utiliser des formes de machine virtuelle plus petites pour héberger le modèle avec un plus grand nombre d'instances au lieu de sélectionner moins de machines virtuelles plus grandes.

Artefacts de modèle dans le catalogue de modèles

Le déploiement de modèle requiert un artefact de modèle stocké dans le catalogue de modèles et un modèle à l'état Actif. Le déploiement de modèle expose la fonction predict() définie dans le fichier score.py de l'artefact de modèle.

Environnement conda avec les dépendances d'exécution de modèle

Un environnement conda encapsule toutes les dépendances Python tierces (telles que Numpy, Dask ou XGBoost) requises par un modèle. Les environnements conda Python prennent en charge les versions 3.7, 3.8, 3.9, 3.10 et 3.11 de Python. La version de Python que vous indiquez avec INFERENCE_PYTHON_VERSION doit correspondre à celle utilisée lors de la création du pack conda.

Le déploiement de modèle extrait une copie de l'environnement conda d'inférence défini dans le fichier runtime.yaml de l'artefact de modèle pour déployer le modèle et ses dépendances. Les informations pertinentes sur l'environnement de déploiement de modèle se trouvent sous le paramètre MODEL_DEPLOYMENT dans le fichier runtime.yaml. Les paramètres MODEL_DEPLOYMENT sont capturés automatiquement lorsqu'un modèle est enregistré à l'aide d'ADS dans une session de bloc-notes. Pour enregistrer un modèle dans le catalogue et le déployer à l'aide du kit SDK OCI, de l'interface de ligne de commande ou de la console, vous devez fournir un fichier runtime.yaml dans le cadre d'un artefact de modèle qui inclut ces paramètres.

Remarque

Pour tous les artefacts de modèle enregistrés dans le catalogue de modèles sans fichier runtime.yaml, ou lorsque le paramètre MODEL_DEPLOYMENT est manquant dans le fichier runtime.yaml, un environnement conda par défaut est installé dans le serveur de modèle et utilisé pour charger un modèle. L'environnement conda par défaut utilisé est le machine learning général avec Python version 3.8.

Utilisez les environnements conda suivants :

Environnements conda Data Science

La liste des environnements conda est disponible dans Affichage des environnements conda.

Dans l'exemple suivant, le fichier runtime.yaml indique au déploiement de modèle d'extraire l'environnement conda publié à partir du chemin Object Storage défini par INFERENCE_ENV_PATH dans ONNX 1.10 for CPU on Python 3.7.

MODEL_ARTIFACT_VERSION: '3.0'
MODEL_DEPLOYMENT:
  INFERENCE_CONDA_ENV:
    INFERENCE_ENV_SLUG: envslug
    INFERENCE_ENV_TYPE: data_science
    INFERENCE_ENV_PATH: oci://service-conda-packs@id19sfcrra6z/service_pack/cpu/ONNX 1.10 for CPU on Python 3.7/1.0/onnx110_p37_cpu_v1
    INFERENCE_PYTHON_VERSION: '3.7'
Vos environnements conda publiés

Vous pouvez créer et publier des environnements conda à utiliser dans des déploiements de modèle.

Dans l'exemple suivant, le fichier runtime.yaml indique au déploiement de modèle d'extraire l'environnement conda publié à partir du chemin Object Storage défini par INFERENCE_ENV_PATH. Il l'installe ensuite sur toutes les instances du pool hébergeant le serveur de modèle et le modèle lui-même.

MODEL_ARTIFACT_VERSION: '3.0'
MODEL_DEPLOYMENT:
  INFERENCE_CONDA_ENV:
    INFERENCE_ENV_SLUG: envslug
    INFERENCE_ENV_TYPE: published
    INFERENCE_ENV_PATH: oci://<bucket-name>@I/<prefix>/<env>
    INFERENCE_PYTHON_VERSION: '3.7'

Pour tous les artefacts de modèle enregistrés dans le catalogue sans fichier runtime.yaml, les déploiements de modèle utilisent également l'environnement conda par défaut pour le déploiement de modèle. Un déploiement de modèle peut également extraire un environnement conda Data Science ou un environnement conda que vous créez ou modifiez, puis publiez.

Opérations sans temps d'inactivité

Pour les déploiements de modèle, les opérations sans temps d'inactivité signifient que l'adresse d'inférence de modèle (prédiction) peut traiter en continu les demandes sans interruption ni instabilité.

Les déploiements de modèle prennent en charge une série d'opérations qui peuvent être effectuées sans aucun temps d'inactivité. Cette fonctionnalité est essentielle pour les applications qui utilisent l'adresse de modèle. Vous pouvez appliquer des opérations sans temps d'inactivité lorsque le modèle est à l'état actif et traite des demandes. Utilisez ces opérations sans temps d'inactivité pour échanger le modèle contre un autre, modifier la forme de machine virtuelle et la configuration de journalisation tout en empêchant les temps d'inactivité.

Intégration de Logging pour capturer les journaux émis à partir du déploiement de modèle

Vous pouvez intégrer des déploiements de modèle au service Logging. Utilisez cette intégration facultative pour émettre des journaux à partir d'un modèle, puis inspecter ces journaux.

Conteneur personnalisé avec dépendances d'exécution de modèle

Un conteneur personnalisé encapsule toutes les dépendances tierces requises par un modèle pour l'inférence. Il inclut également un serveur d'inférence préféré, tel que le serveur d'inférence Triton, le service TensorFlow, le service d'exécution ONNX, etc.

Inférence de GPU

L'inférence d'unité de traitement graphique est largement utilisée pour les modèles exigeants en calcul tels que LLaMa ou les transformateurs préentraînés génératifs.

Sortie personnalisée
Vous pouvez choisir entre un réseau géré par service ou un réseau géré par le client, comme pour la sortie personnalisée avec des travaux et des blocs-notes.
Adresse privée

Pour améliorer la sécurité et le contrôle, vous pouvez accéder aux déploiements de modèle via un réseau privé (déploiement de modèle privé). Avec la prise en charge des adresses privées, votre trafic d'inférence reste sécurisé au sein du réseau privé. Pour plus d'informations, reportez-vous aux sections Création d'une adresse privée et Création d'un déploiement de modèle afin de configurer un déploiement de modèle avec une adresse privée.

Détails des déploiements de modèle

Une fois que vous avez sélectionné un projet, la page de détails du projet apparaît avec la liste des sessions de bloc-notes et des autres ressources, telles que les déploiements de modèle.

Sélectionnez Déploiement de modèle afin d'accéder à la page de détails des déploiements de modèle pour le compartiment sélectionné, où vous pouvez effectuer les opérations suivantes :

  • Créez des déploiements de modèle.

  • Sélectionnez un déploiement de modèle pour visualiser ses détails et l'utiliser.

  • Utilisez le menu Actions Menu Actions pour afficher les détails d'un déploiement de modèle, le modifier, le déplacer ou la supprimer.

  • OCID : OCID d'une ressource. Une version abrégée de l'OCID est affichée, mais vous pouvez utiliser les options Afficher et masquer pour changer l'affichage de l'OCID. Utilisez le lien Copier pour enregistrer l'OCID complet dans le presse-papiers afin de le coller ailleurs. Par exemple, vous pouvez le coller dans un fichier et enregistrer ce dernier pour l'utiliser dans des scripts de modèle.

  • Utiliser le filtre Portée de la liste pour visualiser les déploiements de modèle associés au projet sélectionné dans un autre compartiment.

  • Filtrez les déploiements de modèle par statut à l'aide de la liste Etat. Par défaut, tous les types de statut sont affichés.

  • Lorsque des balises sont appliquées aux déploiements de modèle, vous pouvez les filtrer davantage en cliquant sur Ajouter ou Effacer en regard de Filtres de balise.

  • Sélectionnez d'autres ressources Data Science, telles que des modèles, des déploiements de modèle et des sessions de bloc-notes.