Lorsque vous exécutez une tâche d'entraînement sur AI Platform Training, vous devez spécifier le nombre et les types de machines dont vous avez besoin. Pour faciliter le processus, vous pouvez choisir parmi un ensemble de spécifications de cluster prédéfinies, appelées niveaux d'évolutivité. Vous pouvez également choisir un niveau personnalisé et spécifier vous-même les types de machines.
Spécifier votre configuration
La manière dont vous spécifiez la configuration d'un cluster dépend de la manière dont vous envisagez d'exécuter la tâche d'entraînement :
gcloud
Créez un fichier de configuration YAML représentant l'objet TrainingInput
, puis spécifiez l'identifiant de niveau d'évolutivité et les types de machines dans le fichier de configuration. Vous pouvez nommer ce fichier comme vous le souhaitez. Par convention, il se nomme config.yaml
.
L'exemple suivant vous montre le contenu du fichier de configuration config.yaml
pour une tâche dotée d'un cluster de traitement personnalisé.
trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16 workerType: n1-highcpu-16 parameterServerType: n1-highmem-8 evaluatorType: n1-highcpu-16 workerCount: 9 parameterServerCount: 3 evaluatorCount: 1
Indiquez le chemin d'accès au fichier YAML dans l'indicateur --config
lors de l'exécution de la commande gcloud ai-platform jobs submit training
:
gcloud ai-platform jobs submit training $JOB_NAME \ --package-path $TRAINER_PACKAGE_PATH \ --module-name $MAIN_TRAINER_MODULE \ --job-dir $JOB_DIR \ --region $REGION \ --config config.yaml \ -- \ --user_first_arg=first_arg_value \ --user_second_arg=second_arg_value
Vous pouvez également spécifier les détails de la configuration du cluster à l'aide d'indicateurs de ligne de commande, plutôt que dans un fichier de configuration. Pour en savoir plus, consultez la documentation sur l'utilisation de ces indicateurs.
L'exemple suivant montre comment envoyer une tâche d'entraînement avec une configuration semblable à celle de l'exemple précédent, mais sans utiliser de fichier de configuration :
gcloud ai-platform jobs submit training $JOB_NAME \
--package-path $TRAINER_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--job-dir $JOB_DIR \
--region $REGION \
--scale-tier custom \
--master-machine-type n1-highcpu-16 \
--worker-machine-type n1-highcpu-16 \
--parameter-server-machine-type n1-highmem-8 \
--worker-count 9 \
--parameter-server-count 3 \
-- \
--user_first_arg=first_arg_value \
--user_second_arg=second_arg_value
Consultez des détails supplémentaires sur l'exécution d'une tâche d'entraînement.
Python
Spécifiez l'identifiant de niveau d'évolutivité et les types de machines dans l'objet TrainingInput
de la configuration de votre tâche.
L'exemple suivant vous montre comment créer une représentation de la ressource "Job" (Tâche) pour une tâche avec un cluster de traitement personnalisé.
training_inputs = {'scaleTier': 'CUSTOM', 'masterType': 'n1-highcpu-16', 'workerType': 'n1-highcpu-16', 'parameterServerType': 'n1-highmem-8', 'evaluatorType': 'n1-highcpu-16', 'workerCount': 9, 'parameterServerCount': 3, 'evaluatorCount': 1, 'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'], 'pythonModule': 'trainer.task' 'args': ['--arg1', 'value1', '--arg2', 'value2'], 'region': 'us-central1', 'jobDir': 'gs://my/training/job/directory', 'runtimeVersion': '2.11', 'pythonVersion': '3.7'} job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}
Notez que training_inputs
et job_spec
sont des identifiants arbitraires. Vous pouvez nommer ces dictionnaires comme vous le souhaitez. Toutefois, les clés de dictionnaire doivent être nommées exactement comme indiqué, afin de correspondre aux noms des ressources Job
et TrainingInput
.
Niveaux d'évolutivité
Nous pouvons être amenés à optimiser la configuration des niveaux d'évolutivité pour différentes tâches au fil du temps, en fonction des commentaires des clients et de la disponibilité des ressources dans le cloud. Chaque niveau d'évolutivité est défini en fonction de sa pertinence pour certains types de tâches. Généralement, plus le niveau d'évolutivité est élevé, plus le nombre de machines attribuées au cluster est important et plus les spécifications de chaque machine virtuelle sont performantes. À mesure que le niveau d'évolutivité augmente, le coût horaire des tâches d'entraînement, mesuré en unités d'entraînement, est également plus élevé. Consultez la page des tarifs pour calculer le coût de votre tâche.
AI Platform Training n'accepte ni l'entraînement distribué, ni l'entraînement avec des accélérateurs pour le code scikit-learn ou XGBoost. Si votre tâche d'entraînement exécute du code scikit-learn ou XGBoost, vous devez définir le niveau d'évolutivité BASIC
ou CUSTOM
.
Vous trouverez ci-dessous les identifiants de niveau d'évolutivité :
Niveau d'évolutivité sur AI Platform Training | |
---|---|
BASIC
|
Une seule instance de nœud de calcul. Ce niveau convient à la découverte d'AI Platform Training et au test de nouveaux modèles à l'aide de petits ensembles de données. Nom de la machine Compute Engine : n1-standard-4 |
STANDARD_1
|
Une instance maître, ainsi que quatre nœuds de calcul et trois serveurs de paramètres. N'utilisez ce niveau d'évolutivité que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine, maître : n1-highcpu-8, nœuds de calcul : n1-highcpu-8, serveurs de paramètres : n1-standard-4 |
PREMIUM_1
|
Une instance maître, ainsi que 19 nœuds de calcul et 11 serveurs de paramètres. N'utilisez ce niveau d'évolutivité que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine, maître : n1-highcpu-16, nœuds de calcul : n1-highcpu-16, serveurs de paramètres : n1-highmem-8 |
BASIC_GPU
|
Une seule instance de nœud de calcul avec un seul GPU. Pour en savoir plus sur les unités de traitement graphique (GPU), consultez la section Réaliser un entraînement à l'aide de GPU et de TPU. N'utilisez ce niveau d'évolutivité que si vous effectuez l'entraînement avec TensorFlow ou un conteneur personnalisé. Nom de la machine Compute Engine:n1-standard-8 avec un GPU |
BASIC_TPU
|
Une VM maître et un Cloud TPU avec huit cœurs TPU v2. Découvrez comment utiliser des TPU pour votre tâche d'entraînement. N'utilisez ce niveau d'évolutivité que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine, maître : n1-standard-4, nœuds de calcul : Cloud TPU (8 cœurs TPU v2) |
CUSTOM
|
Le niveau CUSTOM n'est pas un niveau défini, mais vous permet d'appliquer votre propre spécification de cluster. Lorsque vous utilisez ce niveau, définissez des valeurs pour configurer votre cluster de traitement conformément aux instructions suivantes :
|
Types de machines pour le niveau d'évolutivité personnalisé
Choisissez un niveau d'évolutivité personnalisé pour un contrôle plus précis du cluster de traitement utilisé pour entraîner le modèle. Spécifiez la configuration dans l'objet TrainingInput
de la configuration de votre tâche. Si vous utilisez la commande gcloud ai-platform jobs submit training
pour envoyer votre tâche d'entraînement, vous pouvez utiliser les mêmes identifiants.
Définissez le niveau d'évolutivité (
scaleTier
) surCUSTOM
.Définissez des valeurs pour le nombre de nœuds de calcul (
workerCount
), de serveurs de paramètres (parameterServerCount
) et d'évaluateurs (evaluatorCount
) dont vous avez besoin.AI Platform Training n'accepte que l'entraînement distribué lorsque vous effectuez l'entraînement avec TensorFlow ou un conteneur personnalisé. Si votre tâche d'entraînement exécute du code scikit-learn ou XGBoost, ne spécifiez pas de nœuds de calcul, de serveurs de paramètres ni d'évaluateurs.
Définissez le type de machine du nœud de calcul maître (
masterType
). Si vous avez choisi d'utiliser des nœuds de calcul, des serveurs de paramètres ou des évaluateurs, définissez les types de machines correspondants dans les champsworkerType
,parameterServerType
etevaluatorType
respectivement.Vous pouvez spécifier différents types de machines pour les champs
masterType
,workerType
etparameterServerType
etevaluatorType
, mais vous ne pouvez pas utiliser différents types de machines pour des instances individuelles. Par exemple, vous pouvez utiliser un type de machinen1-highmem-8
pour vos serveurs de paramètres, mais pas le type de machinen1-highmem-8
pour certains et le typen1-highcpu-16
pour d'autres.Si vous avez besoin d'un seul nœud de calcul avec une configuration personnalisée (et non d'un cluster complet), vous devez spécifier un niveau d'évolutivité personnalisé avec un type de machine pour le maître uniquement. Cela vous donne un seul nœud de calcul. Voici un exemple de fichier
config.yaml
:trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16
Types de machines Compute Engine
Vous pouvez utiliser les noms de certains types de machines Compute Engine prédéfinis dans les champs masterType
, workerType
, parameterServerType
et evaluatorType
de votre tâche. Si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés, vous pouvez éventuellement utiliser différents types de GPU avec ces types de machines.
La liste suivante contient les identifiants des types de machines Compute Engine que vous pouvez utiliser pour votre tâche d'entraînement :
e2-standard-4
e2-standard-8
e2-standard-16
e2-standard-32
e2-highmem-2
e2-highmem-4
e2-highmem-8
e2-highmem-16
e2-highcpu-16
e2-highcpu-32
n2-standard-4
n2-standard-8
n2-standard-16
n2-standard-32
n2-standard-48
n2-standard-64
n2-standard-80
n2-highmem-2
n2-highmem-4
n2-highmem-8
n2-highmem-16
n2-highmem-32
n2-highmem-48
n2-highmem-64
n2-highmem-80
n2-highcpu-16
n2-highcpu-32
n2-highcpu-48
n2-highcpu-64
n2-highcpu-80
n1-standard-4
n1-standard-8
n1-standard-16
n1-standard-32
n1-standard-64
n1-standard-96
n1-highmem-2
n1-highmem-4
n1-highmem-8
n1-highmem-16
n1-highmem-32
n1-highmem-64
n1-highmem-96
n1-highcpu-16
n1-highcpu-32
n1-highcpu-64
n1-highcpu-96
c2-standard-4
c2-standard-8
c2-standard-16
c2-standard-30
c2-standard-60
m1-ultramem-40
m1-ultramem-80
m1-ultramem-160
m1-megamem-96
a2-highgpu-1g
* (bêta)a2-highgpu-2g
* (bêta)a2-highgpu-4g
* (bêta)a2-highgpu-8g
* (bêta)a2-megagpu-16g
* (bêta)
Pour en savoir plus sur les caractéristiques techniques de chaque type de machine, consultez la documentation de Compute Engine sur les types de machines.
Anciens types de machines
Au lieu d'utiliser des types de machines Compute Engine pour votre tâche, vous pouvez spécifier les noms d'anciens types de machines. Ces types de machines fournissent le même vCPU et les mêmes ressources de mémoire que les types de machines Compute Engine équivalents, mais présentent des limites de configuration supplémentaires :
Vous ne pouvez pas personnaliser l'utilisation du GPU avec
acceleratorConfig
. Cependant, certains anciens types de machines incluent des GPU. Consultez le tableau ci-dessous pour en savoir plus.Si la configuration de votre tâche d'entraînement utilise plusieurs machines, vous ne pouvez pas mélanger des types de machines Compute Engine avec d'anciens types de machines. Le nœud de calcul maître, les nœuds de calcul, les serveurs de paramètres et les évaluateurs doivent tous utiliser les types de machines d'un même groupe.
Par exemple, si vous configurez
masterType
avecn1-highcpu-32
(un type de machine Compute Engine), vous ne pouvez pas définir le champworkerType
surcomplex_model_m
(ancien type de machine), mais vous pouvez le définir surn1-highcpu-16
(un autre type de machine Compute Engine).
Le tableau suivant décrit les anciens types de machines :
Anciens types de machines | |
---|---|
standard
|
Configuration de machine de base adaptée à l'entraînement de modèles simples avec des ensembles de données de petite à moyenne taille. Nom de la machine Compute Engine : n1-standard-4 |
large_model
|
Machine contenant beaucoup de mémoire et spécialement adaptée aux serveurs de paramètres des modèles volumineux (comportant de nombreuses couches cachées ou des couches avec un très grand nombre de nœuds). Nom de la machine Compute Engine : n1-highmem-8 |
complex_model_s
|
Machine adaptée au maître et aux nœuds de calcul du cluster lorsque votre modèle nécessite plus de calculs que ce que la machine standard pourrait correctement gérer. Nom de la machine Compute Engine : n1-highcpu-8 |
complex_model_m
|
Machine disposant d'environ deux fois le nombre de noyaux et le volume de mémoire de "complex_model_s". Nom de la machine Compute Engine : n1-highcpu-16 |
complex_model_l
|
Machine disposant d'environ deux fois le nombre de noyaux et le volume de mémoire de "complex_model_m". Nom de la machine Compute Engine : n1-highcpu-32 |
standard_gpu
|
Machine équivalente au modèle standard, comprenant également un seul GPU. N'utilisez ce type de machine que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine:n1-standard-8 avec un GPU |
complex_model_m_gpu
|
Machine équivalente à "complex_model_m", comprenant également quatre GPU. N'utilisez ce type de machines que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine:n1-standard-16 avec quatre GPU |
complex_model_l_gpu
|
Machine équivalente à "complex_model_l", comprenant également huit GPU. N'utilisez ce type de machines que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine:n1-standard-32 avec huit GPU |
standard_p100
|
Machine équivalente au modèle standard, comprenant également un seul GPU NVIDIA Tesla P100. N'utilisez ce type de machine que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine : n1-standard-8-p100x1 |
complex_model_m_p100
|
Machine équivalente à "complex_model_m", comprenant également quatre GPU NVIDIA Tesla P100 N'utilisez ce type de machines que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine : n1-standard-16-p100x4 |
standard_v100
|
Machine équivalente au modèle standard, comprenant également un seul GPU NVIDIA Tesla V100. N'utilisez ce type de machine que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine : n1-standard-8-v100x1 |
large_model_v100
|
Machine équivalente à "large_model", comprenant également un seul GPU NVIDIA Tesla V100. N'utilisez ce type de machine que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine : n1-highmem-8-v100x1 |
complex_model_m_v100
|
Machine équivalente à "complex_model_m", comprenant également quatre GPU NVIDIA Tesla V100. N'utilisez ce type de machines que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine : n1-standard-16-v100x4 |
complex_model_l_v100
|
Machine équivalente à "complex_model_l", comprenant également huit GPU NVIDIA Tesla V100. N'utilisez ce type de machines que si vous effectuez l'entraînement avec TensorFlow ou des conteneurs personnalisés. Nom de la machine Compute Engine : n1-standard-32-v100x8 |
Réaliser un entraînement à l'aide de GPU et de TPU
Certains niveaux d'évolutivité et d'anciens types de machines incluent des unités de traitement graphique (GPU). Vous pouvez également associer plusieurs GPU de votre choix si vous utilisez un type de machines Compute Engine. Pour en savoir plus, consultez la documentation sur l'entraînement à l'aide de GPU.
Pour effectuer un entraînement avec Tensor Processing Units (TPU), vous devez utiliser le niveau d'évolutivité BASIC_TPU
ou le type de machines cloud_tpu
. Le type de machines cloud_tpu
possède des options de configuration spéciales. Vous pouvez l'utiliser avec des types de machines Compute Engine ou avec d'anciens types de machines, et avec 8 TPU v2 ou 8 TPU v3. Découvrez comment utiliser des TPU pour l'entraînement.