Déploiements de modèle
Voyez comment utiliser des déploiements de modèle du service de science des données.
Les déploiements de modèle constituent une ressource gérée du service de science des données pour OCI à utiliser pour déployer des modèles d'apprentissage automatique en tant que points d'extrémité HTTP dans OCI. Le déploiement de modèles d'apprentissage automatique en tant qu'applications Web (points d'extrémité d'API HTTP) service de prévisions en temps réel est la façon la plus courante de mettre les modèles en production. Les points d'extrémité HTTP sont flexibles et peuvent servir des demandes de prédictions de modèle.

Entraînement
L'entraînement d'un modèle est la première étape de son déploiement. Vous utilisez les sessions de carnet et les travaux pour entraîner les modèles à code source libre et Oracle AutoML.
Enregistrement et stockage
Vous allez ensuite stocker le modèle entraîné dans le catalogue de modèles. Vous disposez des options suivantes pour enregistrer un modèle dans le catalogue :
- La trousse SDK ADS fournit une interface permettant de spécifier un modèle à code source libre, de préparer son artefact et d'enregistrer ce dernier dans le catalogue de modèles.
-
Vous pouvez utiliser la console OCI, les trousses SDK et les interfaces de ligne de commande pour enregistrer votre artefact de modèle dans le catalogue de modèles.
-
Utilisez des cadres différents tels que scikit-learn, TensorFlow ou Keras.
Le déploiement de modèle requiert que vous indiquiez un environnement Conda d'inférence dans le fichier d'artefact de modèle runtime.yaml
. Cet environnement Conda d'inférence contient toutes les dépendances de modèle et est installé dans le conteneur du serveur de modèles. Vous pouvez spécifier l'un des environnements Conda du service Science des données ou un environnement publié que vous avez créé.
Un déploiement de modèle
Une fois qu'un modèle est enregistré dans le catalogue de modèles, il est disponible en tant que ressource de déploiement de modèle pour être déployé. Le service prend en charge les modèles exécutés dans un environnement d'exécution Python et leurs dépendances peuvent être assemblées dans un environnement Conda.
Vous pouvez déployer et appeler un modèle à l'aide de la console OCI, des trousses SDK pour OCI, de l'interface de ligne de commande OCI et de la trousse SDK ADS dans les sessions de carnet.
Les déploiements de modèle reposent sur ces composants clés pour déployer un modèle en tant que point d'extrémité HTTP :

- Équilibreur de charge.
-
Lorsqu'un déploiement de modèle est créé, un équilibreur de charge doit être configuré. Un équilibreur de charge permet de distribuer automatiquement le trafic d'un point d'entrée vers de nombreux serveurs de modèles s'exécutant dans un groupe de machines virtuelles. La bande passante de l'équilibreur de charge doit être spécifiée en Mbps et est une valeur statique. Vous pouvez changer la bande passante de l'équilibreur de charge en modifiant le déploiement du modèle.
- Groupe d'instances de machine virtuelle hébergeant le serveur de modèles, l'environnement Conda et le modèle lui-même.
-
Une copie du serveur de modèles est effectuée vers chaque instance de calcul du groupe de machines virtuelles.
L'environnement Conda d'inférence et l'artefact de modèle sélectionné sont également copiés dans chaque instance du groupe. Deux copies du modèle sont chargées en mémoire pour chaque OCPU de chaque instance de machine virtuelle du groupe. Par exemple, si vous sélectionnez une instance VM.Standard2.4 pour exécuter le serveur de modèles, 4 OCPU x 2 = 8 copies du modèle sont chargées en mémoire. Plusieurs copies du modèle aident à gérer les demandes concurrentes effectuées sur le point d'extrémité du modèle en les répartissant entre les répliques du modèle dans la mémoire de machine virtuelle. Veillez à sélectionner une forme de machine virtuelle disposant d'un volume de mémoire suffisant pour prendre en compte les répliques du modèle en mémoire. Pour la plupart des modèles d'apprentissage automatique dont la taille est exprimée en Mo ou en Go, la mémoire ne pose probablement pas de problème.
L'équilibreur de charge distribue les demandes faites au point d'extrémité du modèle entre les instances du groupe. Il est recommandé d'utiliser des formes de machine virtuelle plus petites pour héberger le modèle comportant un nombre important d'instances, plutôt que de sélectionner moins de machines virtuelles plus volumineuses.
- Artefacts de modèle dans le catalogue de modèles.
-
Le déploiement de modèle nécessite un artefact de modèle qui est stocké dans le catalogue de modèles et que le modèle soit 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 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 de Python
3.7
,3.8
,3.9
,3.10
et3.11
. La version Python que vous spécifiez avecINFERENCE_PYTHON_VERSION
doit correspondre à celle utilisée lors de la création de l'ensemble 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 fichierruntime.yaml
. Les paramètresMODEL_DEPLOYMENT
sont automatiquement saisis lorsqu'un modèle est enregistré au moyen d'ADS dans une session de carnet. Pour enregistrer un modèle dans le catalogue et le déployer à l'aide de la trousse SDK pour OCI, de l'interface de ligne de commande ou de la console, vous devez fournir un fichierruntime.yaml
pour un artefact de modèle qui inclut ces paramètres.Note
Pour tous les artefacts de modèle enregistrés dans le catalogue de modèles sans fichier
runtime.yaml
ou lorsque le paramètreMODEL_DEPLOYMENT
est absent du fichierruntime.yaml
, un environnement Conda par défaut est installé dans le serveur de modèles et utilisé pour charger un modèle. L'environnement Conda par défaut utilisé est l'apprentissage automatique général avec Python version 3.8.Utilisez les environnements Conda suivants :
- Environnements Conda du service Science des données
-
La liste des environnements Conda figure dans Affichage des environnements Conda.
Dans l'exemple suivant, le fichier
runtime.yaml
indique au déploiement du modèle d'extraire l'environnement Conda publié du chemin de stockage d'objets défini parINFERENCE_ENV_PATH
dans ONNX 1.10 pour unité centrale avec 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 du modèle d'extraire l'environnement Conda publié du chemin de stockage d'objets défini parINFERENCE_ENV_PATH
. Il l'installe ensuite sur toutes les instances du groupe hébergeant le serveur de modèles 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 du service de science des données ou un environnement Conda que vous créez ou modifiez, puis publiez. - Opérations sans temps d'arrêt
-
Les opérations sans temps d'arrêt pour les déploiements de modèle signifient que le point d'extrémité d'inférence du modèle (predict) peut traiter les demandes en continu 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'arrêt. Cette fonction est essentielle pour toute application qui consomme le point d'extrémité du modèle. Vous pouvez appliquer des opérations sans temps d'arrêt lorsque le modèle est actif et traite des demandes. Utilisez ces opérations sans temps d'arrêt pour échanger des modèles, modifier la forme de la machine virtuelle et la configuration de la journalisation tout en évitant les temps d'arrêt.
- Intégration de la journalisation pour saisir les journaux émis par le déploiement de modèle
-
Vous pouvez intégrer des déploiements de modèle au service de journalisation. Utilisez cette intégration facultative pour émiter des journaux à partir d'un modèle, puis les inspecter.
- Conteneur personnalisé avec dépendances d'exécution de modèle
-
Un conteneur personnalisé encapsule toutes les dépendances de tierce partie requises par un modèle pour l'inférence. Il comprend également un serveur d'inférence privilégié, tel que le serveur d'inférence Triton, le service TensorFlow, le service d'exécution ONNX, etc.
- Inférence sur des instances GPU
-
L'inférence d'unité de traitement graphique est largement utilisée pour les modèles de calcul intensif tels que LLaMa ou les transformateurs préentraînés génératifs.
- Trafic sortant personnalisé
- Vous pouvez effectuer une sélection entre un réseau géré par le service ou un réseau géré par le client, similaire au trafic sortant personnalisé avec des tâches et des carnets.
- Point d'extrémité privé
-
Pour améliorer la sécurité et le contrôle, vous pouvez accéder aux déploiements de modèle au moyen d'un réseau privé (déploiement de modèle privé). Avec la prise en charge des points d'extrémité privés, votre trafic d'inférence reste en toute sécurité dans le réseau privé. Pour plus d'informations, voir la section Création d'un point d'extrémité privé et Création d'un déploiement de modèle pour configurer un déploiement de modèle avec un point d'extrémité privé.
Détails des déploiements de modèle
Lorsque vous sélectionnez un projet, la page de détails du projet s'affiche et présente une liste de sessions de carnet et d'autres ressources, telles que des déploiements de modèle.
Sélectionnez Déploiements de modèle pour accéder à la page des détails de ceux-ci pour le compartiment sélectionné, où vous pouvez :
-
Créer des déploiements de modèle.
-
Sélectionner un déploiement de modèle pour afficher ses détails et travailler avec celui-ci.
-
Utiliser le menu
pour voir les détails, modifier, déplacer un déploiement de modèle ou le supprimer. -
OCID : OCID d'une ressource. Une version raccourcie de l'OCID s'affiche bien que vous puissiez utiliser Afficher et Masquer pour changer l'affichage de l'OCID. Utilisez le lien Copier pour enregistrer l'OCID complet dans le presse-papiers pour le coller ailleurs. Par exemple, vous pouvez le coller dans un fichier et l'enregistrer, puis l'utiliser dans des scripts de modèle.
-
Utiliser le filtre Portée de la liste pour afficher 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 État. Par défaut, tous les types de statut sont affichés.
-
Lorsque des marqueurs sont appliqués aux déploiements de modèle, vous pouvez filtrer davantage ces derniers en cliquant sur ajouter ou effacer à côté des filtres de marqueurs.
-
Sélectionner d'autres ressources du service de science des données, telles que des modèles, des déploiements de modèle et des sessions de carnet.