Cuando ejecutas un trabajo de entrenamiento en AI Platform Training, debes especificar la cantidad y los tipos de máquinas que necesitas. Para facilitar el proceso, puedes elegir entre un conjunto de especificaciones de clúster predefinidas llamadas niveles de escala. Como alternativa, puedes elegir un nivel personalizado y especificar los tipos de máquina tú mismo.
Cómo especificar tu configuración
La forma en la que especificas la configuración de tu clúster depende de cómo planeas ejecutar tu trabajo de entrenamiento:
gcloud
Crea un archivo de configuración YAML que represente el objeto TrainingInput
y especifica el identificador de nivel de escala y los tipos de máquina en el archivo de configuración. Puedes nombrar este archivo como desees. Por regla general, el nombre es config.yaml
.
En el ejemplo siguiente, se muestra el contenido del archivo de configuración, config.yaml
, para un trabajo con un clúster de procesamiento personalizado.
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
Proporciona la ruta al archivo YAML en la marca --config
cuando ejecutes el comando 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
Como alternativa, puedes especificar los detalles de la configuración del clúster con marcas de la línea de comandos, en lugar de un archivo de configuración. Obtén más información sobre cómo usar estas marcas.
En el siguiente ejemplo, se muestra cómo enviar un trabajo de entrenamiento con una configuración similar a la del ejemplo anterior, pero sin usar un archivo de configuración:
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
Consulta más detalles sobre cómo ejecutar un trabajo de entrenamiento.
Python
Especifica el identificador del nivel de escala y los tipos de máquina en el objeto TrainingInput
en la configuración de tu trabajo.
En el ejemplo siguiente, se muestra cómo compilar una representación de trabajo para un trabajo con un clúster de procesamiento personalizado.
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}
Ten en cuenta que training_inputs
y job_spec
son identificadores arbitrarios: puedes nombrar estos diccionarios como desees. Sin embargo, las claves del diccionario se deben nombrar tal como se muestra para que coincidan los nombres de los recursos Job
y TrainingInput
.
Niveles de escala
Google puede optimizar la configuración de los niveles de escala para diferentes trabajos en el tiempo, en función de los comentarios del cliente y de la disponibilidad de los recursos de la nube. Cada nivel de escala se define en términos de su idoneidad para ciertos tipos de trabajos. Generalmente, cuanto más avanzado es el nivel, más máquinas se asignan al clúster y más poderosas son las especificaciones de cada máquina virtual. A medida que aumentas la complejidad del nivel de escala, también aumenta el costo por hora de los trabajos de entrenamiento, que se mide en unidades de entrenamiento. Consulta la página de precios para calcular el costo de tu trabajo.
AI Platform Training no es compatible con el entrenamiento distribuido ni con el entrenamiento con aceleradores para el código de scikit-learn o XGBoost. Si tu trabajo de entrenamiento ejecuta código de scikit-learn o XGBoost, debes configurar el nivel de escala como BASIC
o CUSTOM
.
A continuación, se describen los identificadores de nivel de escala:
Nivel de escala de AI Platform Training | |
---|---|
BASIC
|
Una sola instancia de trabajador Este nivel es adecuado para aprender a usar AI Platform Training y experimentar con modelos nuevos mediante conjuntos de datos pequeños. Nombre de la máquina de Compute Engine: n1-standard-4 |
STANDARD_1
|
Una instancia principal, más cuatro trabajadores y tres servidores de parámetros. Usa este nivel de escala solo si estás entrenando con TensorFlow o si utilizas contenedores personalizados. Nombre de la máquina de Compute Engine, principal: n1-highcpu-8 trabajadores: n1-highcpu-8, servidores de parámetros: n1-standard-4 |
PREMIUM_1
|
Una instancia principal, más 19 trabajadores y 11 servidores de parámetros. Usa este nivel de escala solo si estás entrenando con TensorFlow o si usas contenedores personalizados. Nombre de la máquina de Compute Engine principal: n1-highcpu-16, trabajadores: n1-highcpu-16, servidores de parámetros: n1-highmem-8 |
BASIC_GPU
|
Una sola instancia de trabajador con una GPU. Para obtener más información sobre las unidades de procesamiento de gráficos (GPU), consulta la sección sobre entrenamiento con GPU. Usa este nivel de escala solo si estás entrenando con TensorFlow o si usas un contenedor personalizado. Nombre de la máquina de Compute Engine: n1-standard-8 con una GPU |
BASIC_TPU
|
Una VM principal y un Cloud TPU con ocho núcleos de TPU v2. Consulta cómo usar TPU para tu trabajo de entrenamiento. Usa este nivel de escala solo si estás entrenando con TensorFlow o si usas contenedores personalizados. Nombre de la máquina de Compute Engine principal: n1-standard-4, trabajadores: Cloud TPU (8 núcleos de TPU v2) |
CUSTOM
|
El nivel CUSTOM no es un nivel establecido, sino que te permite usar tu propia especificación de clúster. Cuando usas este nivel, establece valores para configurar tu clúster de procesamiento según estos lineamientos:
|
Tipos de máquina para el nivel de escala personalizado
Usa un nivel de escala personalizado para tener un control más preciso sobre el clúster de procesamiento que usas para entrenar tu modelo. Especifica la configuración en el objeto TrainingInput
en la configuración de tu trabajo. Si usas el comando gcloud ai-platform jobs submit training
para enviar el trabajo de entrenamiento, puedes usar los mismos identificadores:
Establece el nivel de escala (
scaleTier
) enCUSTOM
.Establece valores para la cantidad de trabajadores (
workerCount
), servidores de parámetros (parameterServerCount
) y evaluadores (evaluatorCount
) que necesitas.AI Platform Training solo admite entrenamiento distribuido cuando entrenas con TensorFlow o usas un contenedor personalizado. Si tu trabajo de entrenamiento ejecuta código de scikit-learn o XGBoost, no debes especificar trabajadores, servidores de parámetros ni evaluadores.
Establece el tipo de máquina del trabajador principal (
masterType
). Si elegiste usar trabajadores, servidores de parámetros o evaluadores, configura los tipos de máquinas para ellos en los camposworkerType
,parameterServerType
yevaluatorType
, respectivamente.Puedes especificar diferentes tipos de máquinas para
masterType
,workerType
,parameterServerType
yevaluatorType
, pero no puedes usar diferentes tipos de máquinas con instancias individuales. Por ejemplo, puedes usar un tipo de máquinan1-highmem-8
para tus servidores de parámetros, pero no puedes configurar algunos servidores de parámetros a fin de usarn1-highmem-8
y otros a fin de usarn1-highcpu-16
.Si solo necesitas un trabajador con una configuración personalizada (no un clúster completo), debes especificar un nivel de escala personalizado con un tipo de máquina solo para el principal. Eso te da solo un trabajador. Este es un archivo
config.yaml
de ejemplo:trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16
Tipos de máquina de Compute Engine
Puedes usar los nombres de determinados tipos predefinidos de máquinas de Compute Engine para masterType
, workerType
, parameterServerType
y evaluatorType
de tu trabajo. Si entrenas con TensorFlow o usas contenedores personalizados, puedes usar varios tipos de GPU con estos tipos de máquinas de forma opcional.
A continuación, la lista siguiente contiene los identificadores de tipo de máquina de Compute Engine que puedes usar para tu trabajo de entrenamiento:
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
* (vista previa)a2-highgpu-2g
* (vista previa)a2-highgpu-4g
* (vista previa)a2-highgpu-8g
* (vista previa)a2-megagpu-16g
* (vista previa)
Para obtener más información sobre las especificaciones técnicas de cada tipo de máquina, consulta la documentación de Compute Engine sobre tipos de máquinas.
Tipos de máquina heredada
En lugar de usar los tipos de máquina de Compute Engine para tu trabajo, puedes especificar nombres de los tipos de máquina heredados. Estos tipos de máquinas proporcionan la misma CPU virtual y los recursos de memoria equivalentes a los tipos de máquinas de Compute Engine, pero tienen limitaciones de configuración adicionales:
No puedes personalizar el uso de GPU con una
acceleratorConfig
. Sin embargo, algunos tipos de máquinas heredadas incluyen GPU. Consulta la tabla siguiente:Si la configuración de tu trabajo de entrenamiento usa varias máquinas, no puedes combinar los tipos de máquinas de Compute Engine con los tipos de máquinas heredados. El trabajador principal, los trabajadores, los servidores de parámetros y los evaluadores deben usar tipos de máquinas de un grupo o de otro.
Por ejemplo, si configuras
masterType
para que sean1-highcpu-32
(un tipo de máquina de Compute Engine), no puedes establecerworkerType
encomplex_model_m
(un tipo de máquina heredado), pero puedes configurarlo comon1-highcpu-16
(otro tipo de máquina de Compute Engine).
En la siguiente tabla, se describen los tipos de máquinas heredadas:
Tipos de máquinas heredadas | |
---|---|
standard
|
Una configuración de máquina básica adecuada para el entrenamiento de modelos simples con conjuntos de datos de pequeños a moderados. Nombre de la máquina de Compute Engine: n1-standard-4 |
large_model
|
Una máquina con mucha memoria, especialmente adecuada para servidores de parámetros cuando tu modelo es grande (tiene muchas capas ocultas o capas con un gran número de nodos). Nombre de la máquina de Compute Engine: n1-highmem-8 |
complex_model_s
|
Una máquina adecuada para el principal y los trabajadores del clúster cuando tu modelo requiere más procesamiento de lo que la máquina estándar puede controlar de manera satisfactoria. Nombre de la máquina de Compute Engine: n1-highcpu-8 |
complex_model_m
|
Una máquina con aproximadamente el doble de núcleos y el doble de memoria de complex_model_s. Nombre de la máquina de Compute Engine: n1-highcpu-16 |
complex_model_l
|
Una máquina con aproximadamente el doble de núcleos y el doble de memoria de complex_model_m. Nombre de la máquina de Compute Engine: n1-highcpu-32 |
standard_gpu
|
Una máquina equivalente a la estándar que también incluye una sola GPU. Usa este tipo de máquina solo si estás entrenando con TensorFlow o si utilizas contenedores personalizados. Nombre de la máquina de Compute Engine: n1-standard-8 con una GPU |
complex_model_m_gpu
|
Una máquina equivalente a complex_model_m que también incluye cuatro GPUs. Usa este tipo de máquina solo si estás entrenando con TensorFlow o si usas contenedores personalizados. Nombre de la máquina de Compute Engine: n1-standard-16 con 4 GPUs |
complex_model_l_gpu
|
Una máquina equivalente a complex_model_l que también incluye ocho GPUs. Usa este tipo de máquina solo si estás entrenando con TensorFlow o si usas contenedores personalizados. Nombre de la máquina de Compute Engine: n1-standard-32 con 8 GPUs |
standard_p100
|
Una máquina equivalente a la estándar que también incluye una sola GPU NVIDIA Tesla P100. Usa este tipo de máquina solo si estás entrenando con TensorFlow o si utilizas contenedores personalizados. Nombre de la máquina de Compute Engine: n1-standard-8-p100x1 |
complex_model_m_p100
|
Una máquina equivalente a complex_model_m que también incluye cuatro GPU NVIDIA Tesla P100. Usa este tipo de máquina solo si estás entrenando con TensorFlow o si utilizas contenedores personalizados. Nombre de la máquina de Compute Engine: n1-standard-16-p100x4 |
standard_v100
|
Una máquina equivalente a la estándar que también incluye una sola GPU NVIDIA Tesla V100. Usa este tipo de máquina solo si estás entrenando con TensorFlow o si utilizas contenedores personalizados. Nombre de la máquina de Compute Engine: n1-standard-8-v100x1 |
large_model_v100
|
Una máquina equivalente a large_model que también incluye una sola GPU NVIDIA Tesla V100. Usa este tipo de máquina solo si estás entrenando con TensorFlow o si utilizas contenedores personalizados. Nombre de la máquina de Compute Engine: n1-highmem-8-v100x1 |
complex_model_m_v100
|
Una máquina equivalente a complex_model_m que también incluye cuatro GPU NVIDIA Tesla V100. Usa este tipo de máquina solo si estás entrenando con TensorFlow o si usas contenedores personalizados. Nombre de la máquina de Compute Engine: n1-standard-16-v100x4 |
complex_model_l_v100
|
Una máquina equivalente a complex_model_l que también incluye ocho GPU NVIDIA Tesla V100. Usa este tipo de máquina solo si estás entrenando con TensorFlow o si utilizas contenedores personalizados. Nombre de la máquina de Compute Engine: n1-standard-32-v100x8 |
Entrena con GPU y TPU
Algunos niveles de escala y tipos de máquinas heredadas incluyen unidades de procesamiento de gráficos (GPU). También puedes conectar tu selección de varias GPU si usas un tipo de máquina de Compute Engine. Para obtener más información, lee sobre el entrenamiento con GPU.
Si quieres realizar el entrenamiento con unidades de procesamiento tensorial (TPU), debes usar el nivel de escala BASIC_TPU
o el tipo de máquina cloud_tpu
. El tipo de máquina cloud_tpu
cuenta con opciones de configuración especiales: puedes usarlo con tipos de máquinas de Compute Engine o heredados. También puedes configurar 8 núcleos TPU v2 o, también, 8 núcleos TPU v3. Lee sobre cómo usar TPU para tu trabajo de entrenamiento.