Pour personnaliser la manière dont AI Platform Prediction diffuse les prédictions en ligne à partir de votre modèle de machine learning (ML) entraîné, vous pouvez spécifier un conteneur personnalisé au lieu d'une version d'environnement d'exécution lorsque vous créez une version de modèle. Lorsque vous utilisez un conteneur personnalisé, AI Platform Prediction exécute un conteneur Docker de votre choix sur chaque nœud de prédiction au lieu d'exécuter le code de version d'exécution standard pour diffuser les prédictions à partir d'artefacts de modèle compatibles.
Nous vous recommandons d'utiliser un conteneur personnalisé pour l'une des raisons suivantes :
- Pour diffuser des prédictions à partir d'un modèle de ML entraîné à l'aide d'un framework autre que TensorFlow, scikit-learn ou XGBoost
- Pour prétraiter les requêtes de prédiction ou post-traiter les prédictions générées par votre modèle
- Pour exécuter un serveur de prédiction écrit dans le langage de programmation de votre choix
- Pour installer des dépendances que vous souhaitez utiliser pour personnaliser la prédiction
Ce guide explique comment créer une version de modèle utilisant un conteneur personnalisé. Il ne fournit pas d'instructions détaillées concernant la conception et la création d'une image de conteneur Docker. Pour découvrir un exemple de création d'une image de conteneur et de son utilisation avec AI Platform Prediction, consultez la page Premiers pas : Diffuser des prédictions PyTorch avec un conteneur personnalisé.
Pour utiliser un conteneur personnalisé, vous devez utiliser un point de terminaison régional et un type de machine Compute Engine (N1) pour la version de votre modèle.
Préparer une image de conteneur
Pour créer une version de modèle utilisant un conteneur personnalisé, vous devez fournir une image de conteneur Docker comme base de ce conteneur. Cette image de conteneur doit répondre aux exigences décrites dans la section Exigences relatives aux conteneurs personnalisés.
Si vous envisagez d'utiliser une image de conteneur existante créée par un tiers de confiance, vous pouvez ignorer l'une des sections suivantes, ou les deux.
Créer une image de conteneur
Concevez et créez une image de conteneur Docker répondant aux exigences relatives aux images de conteneur.
Pour apprendre les bases de la conception et de la création d'une image de conteneur Docker, consultez le guide de démarrage rapide de la documentation Docker.
Transférer l'image de conteneur vers Artifact Registry
Transférez votre image de conteneur dans un dépôt Artifact Registry répondant aux exigences de publication d'images de conteneur.
Apprenez à transférer une image de conteneur vers Artifact Registry.
Créer un modèle et une version de modèle
Spécifiez plusieurs options de configuration lorsque vous créez un modèle pour vous assurer que les versions que vous créez ultérieurement sur le modèle sont compatibles avec votre conteneur personnalisé.
Ensuite, spécifiez la majorité de la configuration du conteneur lorsque vous créez une version de modèle.
Créer un modèle
Pour créer un modèle, suivez les instructions de création d'une ressource de modèle. Vous devez créer le modèle sur un point de terminaison régional qui correspond à la région du dépôt Artifact Registry dans lequel votre image de conteneur est stockée. Pour en savoir plus, consultez les conditions requises pour la publication d'images de conteneur.
Créer une version de modèle
Lorsque vous créez une version de modèle utilisant un conteneur personnalisé, configurez les champs d'API spécifiques au conteneur suivants en plus des autres champs que vous spécifiez pour une version de modèle :
Version.container
Version.routes
(Facultatif)
Les sections suivantes expliquent comment configurer ces champs.
Notez également les différences suivantes spécifiques au conteneur lors de la configuration des autres champs d'API :
Version.machineType
: vous devez définir ce champ sur un type de machine Compute Engine (N1).Version.deploymentUri
: ce champ devient facultatif. Découvrez comment votre conteneur peut accéder aux artefacts spécifiés par ce champ.Version.runtimeVersion
,Version.framework
,Version.pythonVersion
,Version.predictionClass
etVersion.packageUris
: ne spécifiez pas ces champs.
Configurer Version.container
Vous devez spécifier un message ContainerSpec
dans le champ Version.container
. Dans ce message, vous pouvez spécifier les sous-champs suivants. Si vous utilisez la commande gcloud beta ai-platform versions create
pour créer la version de modèle, vous pouvez utiliser un indicateur de ligne de commande pour spécifier chaque sous-champ.
image
(obligatoire)URI de registre des artefacts de votre image de conteneur
Indicateur de la CLI gcloud :
--image
command
(facultatif)Tableau d'un fichier exécutable et d'arguments pour remplacer le
ENTRYPOINT
du conteneur. Pour en savoir plus sur la mise en forme de ce champ et son interaction avec le champargs
, consultez la documentation de référence de l'API pourContainerSpec
.Indicateur de la CLI gcloud :
--command
args
(facultatif)Tableau d'un fichier exécutable et d'arguments pour remplacer le
CMD
du conteneur. Pour en savoir plus sur la mise en forme de ce champ et son interaction avec le champcommand
, consultez la documentation de référence de l'API pourContainerSpec
.Indicateur de la CLI gcloud :
--args
ports
(facultatif)Tableau de ports : AI Platform Prediction envoie par défaut des vérifications de l'activité, des vérifications de l'état et des requêtes de prédiction à votre conteneur sur le premier port répertorié, ou
8080
par défaut. Spécifier des ports supplémentaires n'a aucun effet.Indicateur de la CLI gcloud :
--ports
env
(facultatif)Tableau de variables d'environnement que la commande entrypoint du conteneur, ainsi que les champs
command
etargs
, peuvent référencer. Pour en savoir plus sur la manière dont d'autres champs peuvent faire référence à ces variables d'environnement, consultez la documentation de référence de l'API pourContainerSpec
.Indicateur de la CLI gcloud :
--env-vars
Outre les variables que vous avez définies dans le champ Version.container.env
, AI Platform Prediction définit plusieurs autres variables en fonction de votre configuration.
Apprenez-en plus sur l'utilisation de ces variables d'environnement dans ces champs et dans la commande entrypoint du conteneur.
L'exemple suivant montre comment spécifier ces champs lorsque vous créez une version de modèle à l'aide de Google Cloud CLI :
gcloud beta ai-platform versions create VERSION \
--region=REGION \
--model=MODEL \
--machine-type=n1-standard-4 \
--image=IMAGE_URI \
--command=executable,param1,param2 \
--args=param3,param4 \
--ports=8081 \
--env-vars \
VAR1='value 1' \
VAR2='value 2'
Remplacez les éléments suivants :
- VERSION : nom de la version de modèle
- REGION : région du point de terminaison d'AI Platform Prediction dans laquelle vous avez créé votre modèle
- MODEL : nom de votre modèle
- IMAGE_URI : URI de votre image de conteneur dans Artifact Registry, qui doit commencer par REGION (comme décrit dans les exigences de publication d'images de conteneur).
Configurer Version.routes
Vous pouvez spécifier un message RouteMap
dans le champ Version.routes
. Dans ce message, vous pouvez spécifier les sous-champs suivants. Si vous utilisez la commande gcloud beta ai-platform versions create
pour créer la version de modèle, vous pouvez utiliser un indicateur de ligne de commande pour spécifier chaque sous-champ.
health
(facultatif)Chemin du serveur HTTP de votre conteneur, vers lequel vous souhaitez qu'AI Platform Prediction envoie des vérifications de l'état.
Si vous ne spécifiez pas ce champ, il est défini par défaut sur
/v1/models/MODEL/versions/VERSION
, où MODEL et VERSION sont respectivement remplacés par les noms de votre modèle et version de modèle.Indicateur de la CLI gcloud :
--health-route
predict
(facultatif)Chemin du serveur HTTP de votre conteneur vers lequel vous souhaitez qu'AI Platform Prediction transfère les requêtes de prédiction.
Si vous ne spécifiez pas ce champ, il est défini par défaut sur
/v1/models/MODEL/versions/VERSION:predict
, où MODEL et VERSION sont respectivement remplacés par les noms de votre modèle et version de modèle.Indicateur de la CLI gcloud :
--predict-route
L'exemple suivant montre comment spécifier ces champs lorsque vous créez une version de modèle à l'aide de la CLI gcloud :
gcloud beta ai-platform versions create VERSION \
--region=REGION \
--model=MODEL \
--machine-type=n1-standard-4 \
--image=IMAGE_URI \
--command=executable,param1,param2 \
--args=param3,param4 \
--ports=8081 \
--env-vars \
VAR1='value 1' \
VAR2='value 2' \
--health-route=/health \
--predict-route=/predict
Remplacez les éléments suivants :
- VERSION : nom de la version de modèle
- REGION : région du point de terminaison d'AI Platform Prediction dans laquelle vous avez créé votre modèle
- MODEL : nom de votre modèle
- IMAGE_URI : URI de votre image de conteneur dans Artifact Registry, qui doit commencer par REGION (comme décrit dans les exigences de publication d'images de conteneur).
Envoyer des requêtes de prédiction
Pour envoyer une requête de prédiction en ligne à votre version de modèle, suivez le guide de prédiction en ligne. Ce processus fonctionne de la même manière que vous utilisez un conteneur personnalisé ou non.
Toutefois, lorsque vous utilisez un conteneur personnalisé, le corps de chaque requête de prédiction n'a pas besoin de respecter les exigences relatives au corps de la requête des versions de modèle utilisant une version d'environnement d'exécution. Toutefois, nous vous recommandons de concevoir votre conteneur pour qu'il attende des corps de requête au format standard si possible. Apprenez-en davantage sur les exigences concernant les requêtes et les réponses pour les conteneurs personnalisés.
Étape suivante
Pour découvrir un exemple de création d'une image de conteneur et de son utilisation avec AI Platform Prediction, consultez la page Premiers pas : Diffuser des prédictions PyTorch avec un conteneur personnalisé.
Pour tout savoir sur la conception d'un conteneur personnalisé à utiliser avec AI Platform Prediction, consultez la page Exigences relatives aux conteneurs personnalisés.
Pour savoir comment modifier les autorisations d'un conteneur pour accéder à d'autres services Google Cloud, consultez la page Utiliser un compte de service personnalisé.