AI Platform Prediction alloue des nœuds pour le traitement des requêtes de prédiction en ligne envoyées à une version de modèle. Lorsque vous déployez une version de modèle, vous pouvez personnaliser le type de machine virtuelle utilisé par AI Platform Prediction pour ces nœuds.
Les types de machines présentent plusieurs spécificités :
- Le nombre de processeurs virtuels par nœud.
- La quantité de mémoire par nœud.
- La compatibilité avec les GPU, que vous pouvez ajouter à certains types de machines.
- Compatibilité avec certaines fonctionnalités AI Platform Prediction
- Tarif
- Couverture du contrat de niveau de service (SLA)
Sélectionner un type de machine possédant davantage de ressources de calcul vous permet de diffuser des prédictions avec une latence plus faible ou de gérer simultanément davantage de requêtes de prédiction.
Types de machines disponibles
Les types de machines Compute Engine (N1) et le type de machine mls1-c1-m2
sont en disponibilité générale pour la prédiction en ligne. Le type de machine mls1-c4-m2
est disponible en version bêta.
Le tableau suivant compare les types de machines disponibles :
Nom | Disponibilité | Processeurs virtuels | Mémoire (Go) | Compatibilité avec les GPU | Compatibilité avec les frameworks de ML | Taille maximale du modèle |
---|---|---|---|---|---|---|
mls1-c1-m2 (valeur par défaut sur le point de terminaison global) |
Disponible pour tous les utilisateurs | 1 | 2 | Non | TensorFlow, XGBoost, scikit-learn (y compris les pipelines avec du code personnalisé), routines de prédiction personnalisées | 500 Mo |
mls1-c4-m2 |
Bêta | 4 | 2 | Non | TensorFlow, XGBoost, scikit-learn (y compris les pipelines avec du code personnalisé), routines de prédiction personnalisées | 500 Mo |
n1-standard-2 (valeur par défaut sur les points de terminaison régionaux) |
Disponible pour tous les utilisateurs | 2 | 7,5 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-standard-4 |
Disponible pour tous les utilisateurs | 4 | 15 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-standard-8 |
Disponible pour tous les utilisateurs | 8 | 30 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-standard-16 |
Disponible pour tous les utilisateurs | 16 | 60 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-standard-32 |
Disponible pour tous les utilisateurs | 32 | 120 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-highmem-2 |
Disponible pour tous les utilisateurs | 2 | 13 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-highmem-4 |
Disponible pour tous les utilisateurs | 4 | 26 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-highmem-8 |
Disponible pour tous les utilisateurs | 8 | 52 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-highmem-16 |
Disponible pour tous les utilisateurs | 16 | 104 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-highmem-32 |
Disponible pour tous les utilisateurs | 32 | 208 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-highcpu-2 |
Disponible pour tous les utilisateurs | 2 | 1.8 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-highcpu-4 |
Disponible pour tous les utilisateurs | 4 | 3.6 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-highcpu-8 |
Disponible pour tous les utilisateurs | 8 | 7,2 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-highcpu-16 |
Disponible pour tous les utilisateurs | 16 | 14,4 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
n1-highcpu-32 |
Disponible pour tous les utilisateurs | 32 | 28,8 | Oui | TensorFlow, XGBoost et scikit-learn | 10 Go |
Apprenez-en plus sur la tarification des différents types de machines. Pour obtenir les spécifications détaillées des types de machines Compute Engine (N1), consultez la documentation Compute Engine.
Spécifier un type de machine
Vous pouvez spécifier le type de machine de votre choix lorsque vous créez une version de modèle. Si vous n'indiquez aucun type de machine, la version de modèle utilise le type par défaut n1-standard-2
si vous utilisez un point de terminaison régional et mls1-c1-m2
si vous utilisez le point de terminaison global.
Les instructions suivantes expliquent comment spécifier un type de machine lorsque vous créez une version de modèle. Le type de machine n1-standard-4
y est utilisé à titre d'exemple.
Pour en savoir plus sur le processus complet de création d'une version de modèle, consultez le guide de déploiement des modèles.
console Google Cloud
Dans la page Créer une version, accédez à la liste déroulante Type de machine et sélectionnez Standard > n1-standard-4.
gcloud
Après avoir importé vos artefacts de modèle dans Cloud Storage et créé une ressource de modèle, vous pouvez créer une version de modèle utilisant le type de machine n1-standard-4
:
gcloud ai-platform versions create VERSION_NAME \
--model MODEL_NAME \
--origin gs://model-directory-uri \
--runtime-version 2.11 \
--python-version 3.7 \
--framework ML_FRAMEWORK_NAME \
--region us-central1 \
--machine-type n1-standard-4
Python
Cet exemple utilise la bibliothèque cliente des API Google pour Python. Avant d'exécuter l'exemple de code suivant, vous devez configurer l'authentification.
Après avoir importé vos artefacts de modèle dans Cloud Storage et créé une ressource de modèle, envoyez une requête à la méthode projects.models.versions.create
de votre modèle, en spécifiant le champ machineType
dans le corps de votre requête :
from google.api_core.client_options import ClientOptions
from googleapiclient import discovery
endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)
request_dict = {
'name': 'VERSION_NAME',
'deploymentUri': 'gs://model-directory-uri',
'runtimeVersion': '2.11',
'pythonVersion': '3.7',
'framework': 'ML_FRAMEWORK_NAME',
'machineType': 'n1-standard-4'
}
request = ml.projects().models().versions().create(
parent='projects/PROJECT_NAME/models/MODEL_NAME',
body=request_dict
)
response = request.execute()
Utiliser des GPU pour la prédiction en ligne
Pour certaines configurations, vous pouvez éventuellement ajouter des GPU pour accélérer chaque nœud de prédiction. Pour utiliser des GPU, vous devez tenir compte de plusieurs exigences :
- Vous ne pouvez utiliser des GPU qu'avec des types de machines Compute Engine (N1). Les anciens types de machines (MLS1) ne sont pas compatibles avec les GPU.
- Vous ne pouvez utiliser des GPU que lorsque vous déployez un modèle TensorFlow SavedModel. Vous ne pouvez pas utiliser de GPU pour les modèles scikit-learn ou XGBoost.
- La disponibilité de chaque type de GPU varie en fonction de la région que vous utilisez pour votre modèle. Découvrez les types de GPU disponibles selon les régions.
- Vous ne pouvez utiliser qu'un seul type de GPU pour votre version de modèle, et il existe certaines restrictions sur le nombre de GPU que vous pouvez ajouter suivant le type de machine que vous utilisez. Le tableau suivant décrit ces limitations.
Le tableau suivant illustre les GPU disponibles pour la prédiction en ligne et, pour chaque type de machine Compute Engine, le nombre de GPU de chaque type que vous pouvez utiliser :
Nombre de GPU autorisés pour chaque type de machine | |||||
---|---|---|---|---|---|
Type de machine | NVIDIA Tesla K80 | NVIDIA Tesla P4 | NVIDIA Tesla P100 | NVIDIA Tesla T4 | NVIDIA Tesla V100 |
n1-standard-2 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-standard-4 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-standard-8 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-standard-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 |
n1-standard-32 |
4, 8 | 2, 4 | 2, 4 | 2, 4 | 4, 8 |
n1-highmem-2 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highmem-4 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highmem-8 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highmem-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 |
n1-highmem-32 |
4, 8 | 2, 4 | 2, 4 | 2, 4 | 4, 8 |
n1-highcpu-2 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highcpu-4 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highcpu-8 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highcpu-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 |
n1-highcpu-32 |
4, 8 | 2, 4 | 2, 4 | 2, 4 | 4, 8 |
Les GPU sont facultatifs et entraînent des coûts supplémentaires.
Spécifier des GPU
Vous spécifiez des GPU lorsque vous créez une version de modèle. AI Platform Prediction alloue le nombre et le type de GPU que vous spécifiez pour chaque nœud de prédiction. Vous pouvez mettre à l'échelle automatiquement (aperçu) ou effectuer un scaling manuel (disponibilité générale) des nœuds de prédiction, mais le nombre de GPU utilisés par chaque nœud est corrigé lors de la création de la version de modèle. À moins que vous n'ayez un cas d'utilisation avancé, nous vous recommandons de configurer un GPU sur chaque nœud de prédiction. En d'autres termes, définissez le nombre d'accélérateurs sur 1.
Les instructions suivantes indiquent comment spécifier des GPU pour la prédiction en ligne en créant une version de modèle qui s'exécute sur au moins deux nœuds de prédiction à tout moment.
Chaque nœud utilise le type de machine n1-standard-4
et un GPU NVIDIA Tesla T4.
Les exemples supposent que vous avez déjà importé un modèle SavedModel TensorFlow dans Cloud Storage et créé une ressource de modèle dans une région compatible avec les GPU.
console Google Cloud
Suivez le guide pour créer une version de modèle. Sur la page Créer une version, spécifiez les options suivantes :
- Dans la liste déroulante Scaling, sélectionnez Autoscaling.
- Dans le champ Nombre minimal de nœuds, saisissez
2
. - Dans la liste déroulante Type de machine, sélectionnez Standard > n1-standard-4.
- Dans la liste déroulante Type d'accélérateur, sélectionnez NVIDIA_TESLA_T4.
- Dans la liste déroulante Nombre d'accélérateurs, sélectionnez 1.
gcloud
Créez une version de modèle à l'aide de gcloud CLI. Dans cet exemple, la version s'exécute sur des nœuds de prédiction n1-standard-4 utilisant chacun un GPU NVIDIA Tesla T4. AI Platform Prediction ajuste automatiquement le nombre de nœuds de prédiction à un nombre compris entre 2 et 4, en fonction de l'utilisation du GPU à un moment donné. L'exemple utilise le point de terminaison régional us-central1
:
gcloud beta ai-platform versions create VERSION_NAME \
--model MODEL_NAME \
--origin gs://model-directory-uri \
--runtime-version 2.11 \
--python-version 3.7 \
--framework tensorflow \
--region us-central1 \
--machine-type n1-standard-4 \
--accelerator count=1,type=nvidia-tesla-t4 \
--min-nodes 2 \
--max-nodes 4 \
--metric-targets gpu-duty-cycle=60
Notez que le nom de l'accélérateur est spécifié en minuscules et avec des tirets entre les mots.
Python
Cet exemple utilise la bibliothèque cliente des API Google pour Python. Avant d'exécuter l'exemple de code suivant, vous devez configurer l'authentification.
L'exemple utilise le point de terminaison régional us-central1
.
Envoyez une requête à la méthode projects.models.versions.create
de votre modèle, en spécifiant les champs machineType
, acceleratorConfig
et manualScaling
dans le corps de la requête :
from google.api_core.client_options import ClientOptions
from googleapiclient import discovery
endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)
request_dict = {
'name': 'VERSION_NAME',
'deploymentUri': 'gs://model-directory-uri',
'runtimeVersion': '2.11',
'pythonVersion': '3.7',
'framework': 'TENSORFLOW',
'machineType': 'n1-standard-4',
'acceleratorConfig': {
'count': 1,
'type': 'NVIDIA_TESLA_T4'
},
'autoScaling': {
'minNodes': 2,
'maxNodes': 4,
'metrics': [
{
'name': 'GPU_DUTY_CYCLE',
'target': 60
}
]
}
}
request = ml.projects().models().versions().create(
parent='projects/PROJECT_NAME/models/MODEL_NAME',
body=request_dict
)
response = request.execute()
Notez que le nom de l'accélérateur est spécifié en majuscules et avec des traits de soulignement entre les mots.
Différences entre les types de machines
Outre le fait qu'ils diffèrent au niveau des quantités de ressources de calcul proposées, les types de machines varient également vis-à-vis de leur compatibilité avec certaines fonctionnalités d'AI Platform Prediction. Le tableau suivant présente les différences entre les types de machines Compute Engine (N1) et les anciens types de machines (MLS1) :
Types de machines Compute Engine (N1) | Anciens types de machines (MLS1) | |
---|---|---|
Régions | Toutes les régions des points de terminaison régionaux | Toutes les régions du point de terminaison mondial |
Types d'artefacts de ML |
|
|
Versions d'exécution | Version 1.11 ou ultérieure | Toutes les versions d'exécution d'AI Platform disponibles |
Prise en charge des conteneurs personnalisés | Oui | Non |
Taille maximale du modèle | 10 Go | 500 Mo |
Autoscaling | Nombre minimal de nœuds = 1 | Nombre minimal de nœuds = 0 |
Scaling manuel | Possibilité de mettre à jour le nombre de nœuds | Impossible de mettre à jour le nombre de nœuds après création de la version de modèle |
Compatibilité avec les GPU | Oui (TensorFlow uniquement) | Non |
Compatibilité avec AI Explanations | Oui (TensorFlow uniquement) | Non |
Compatibilité avec VPC Service Controls | Oui | Non |
Couverture du contrat de niveau de service pour les types de machines en disponibilité générale | Oui, dans certains cas | Oui |
Les sections suivantes fournissent des explications détaillées sur les différences entre les types de machines.
Disponibilité en fonction des régions
Les types de machines Compute Engine (N1) sont disponibles lorsque vous déployez votre modèle sur un point de terminaison régional. Lorsque vous utilisez un type de machine Compute Engine (N1), vous ne pouvez pas déployer votre modèle sur le point de terminaison mondial.
Lorsque vous effectuez le scaling d'une version de modèle utilisant des types de machines Compute Engine (N1) vers au moins deux nœuds de prédiction, ceux-ci s'exécutent dans plusieurs zones de la même région. Cela garantit une disponibilité continue en cas de panne dans l'une des zones. Pour en savoir plus, consultez la section sur le scaling de ce document.
Notez que la disponibilité des GPU pour les types de machines Compute Engine (N1) varie selon la région.
Les anciens types de machines (MLS1) sont disponibles sur le point de terminaison mondial dans de nombreuses régions. Les anciens types de machines (MLS1) ne sont pas disponibles sur les points de terminaison régionaux.
Compatibilité avec la prédiction par lot
Les versions de modèle utilisant le type de machine mls1-c1-m2
sont compatibles avec la prédiction par lot. Les versions de modèle qui utilisent d'autres types de machines ne sont pas compatibles avec la prédiction par lot.
Compatibilité avec les frameworks de ML
Si vous utilisez l'un des types de machines Compute Engine (N1), vous pouvez créer votre version de modèle avec tous les artefacts de modèle décrits dans le guide d'exportation de modèles de prédiction, sous réserve de ces deux exceptions :
- Vous ne pouvez pas utiliser un pipeline scikit-learn avec du code personnalisé.
- Vous ne pouvez pas utiliser de routine de prédiction personnalisée.
Pour les anciens types de machines (MLS1), vous pouvez utiliser n'importe quel type d'artefact de modèle compatible avec AI Platform Prediction, y compris un pipeline scikit-learn avec un code personnalisé ou une routine de prédiction personnalisée.
Compatibilité avec les versions d'exécution
Si vous utilisez un type de machine Compute Engine (N1), vous devez utiliser une version d'exécution 1.11 ou ultérieure pour votre version de modèle.
Si vous utilisez un ancien type de machine (MLS1), vous pouvez utiliser n'importe quelle version d'exécution d'AI Platform disponible.
Prise en charge des conteneurs personnalisés
Pour utiliser un conteneur personnalisé pour diffuser des prédictions en ligne, vous devez utiliser un type de machine Compute Engine (N1).
Taille maximale du modèle
Si vous utilisez un ancien type de machine (MLS1), la taille totale des artefacts de modèle que vous fournissez lors de la création d'une version de modèle ne doit pas dépasser 500 Mo. Si vous utilisez un type de machine Compute Engine (N1), la taille totale du fichier peut atteindre 10 Go.
Journalisation des prédictions
Pour les types de machines Compute Engine (N1), la journalisation de la console est en version bêta. Pour les anciens types de machines (MLS1), la journalisation de la console est en disponibilité générale.
Scaling des nœuds de prédiction
Le scaling automatique et le scaling manuel des nœuds de prédiction présentent des contraintes différentes selon que vous utilisez un type de machine Compute Engine (N1) ou un ancien type de machine (MLS1).
Scaling automatique
Si vous utilisez l'un des types de machines Compute Engine (N1) avec scaling automatique, votre version de modèle doit toujours présenter au moins un nœud en cours d'exécution. En d'autres termes, le champ autoScaling.minNodes
de la version prend par défaut la valeur 1 et ne peut pas être inférieur à 1. Si vous définissez autoScaling.minNodes
sur 2 ou plus, les nœuds de prédiction s'exécutent dans plusieurs zones de la même région.
Cela garantit une disponibilité continue en cas de panne dans l'une des zones.
Notez que si vous allouez plus de processeurs virtuels ou de mémoire RAM que nécessaire à votre modèle de machine learning, l'autoscaling peut ne pas fonctionner correctement. Cela peut causer des problèmes de performances du modèle. Testez différents types de machines pour votre modèle afin de ne pas mobiliser trop de ressources de calcul.
Si vous utilisez un ancien type de machine (MLS1), le nombre de nœuds de votre version de modèle peut être réduit à zéro lorsqu'elle ne reçoit aucun trafic : autoScaling.minNodes
peut être défini sur 0, et est défini sur 0 par défaut. Le scaling à zéro instance peut réduire les coûts lorsque votre version de modèle ne reçoit pas de requêtes de prédiction. Toutefois, cela peut également entraîner de la latence ou des erreurs pendant les périodes où AI Platform Prediction alloue un nouveau nœud pour gérer les requêtes après une période sans nœuds. En savoir plus sur le scaling à zéro instance.
Scaling manuel
Si vous utilisez l'un des types de machines Compute Engine (N1) avec scaling manuel, vous pouvez mettre à jour à tout moment le nombre de nœuds de prédiction en cours d'exécution à l'aide de la méthode API projects.models.versions.patch
. Si vous définissez le champ manualScaling.nodes
sur 2 ou plus, les nœuds de prédiction s'exécutent dans plusieurs zones de la même région.
Cela garantit une disponibilité continue en cas de panne dans l'une des zones.
Si vous utilisez un ancien type de machine (MLS1) avec scaling manuel, vous ne pouvez pas mettre à jour le nombre de nœuds de prédiction une fois la version de modèle créée. Si vous souhaitez modifier le nombre de nœuds, vous devez supprimer la version et en créer une nouvelle.
Compatibilité avec VPC Service Controls
Si vous utilisez VPC Service Controls pour protéger AI Platform Prediction, vous ne pouvez pas créer de versions utilisant des anciens types de machines (MLS1). Vous devez utiliser les types de machines Compute Engine (N1).