Especifica tipos de máquina o niveles de escala

Cuando ejecutes un trabajo de entrenamiento en AI Platform, debes especificar la cantidad y los tipos de máquina 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
  workerCount: 9
  parameterServerCount: 3

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 ejemplo siguiente, se muestra cómo enviar un trabajo de entrenamiento con la misma configuración que en el 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-server-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',
    'workerCount': 9,
    'parameterServerCount': 3,
    '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': '1.14',
    'pythonVersion': '3.5'}

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.

Aquí tienes los identificadores del nivel de escala:

Nivel de escala de AI Platform
BASIC

Una sola instancia de trabajador Este nivel es adecuado para aprender a usar AI Platform y experimentar con nuevos modelos usando 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 sola GPU NVIDIA Tesla K80. 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 k80

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 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, debes establecer valores para configurar tu clúster de procesamiento según estos lineamientos:

  • Debe configurar TrainingInput.masterType a fin de especificar el tipo de máquina que usarás para tu nodo principal. Esta es la única configuración obligatoria. Consulta los tipos de máquinas que se describen a continuación.
  • Puedes configurar TrainingInput.workerCount para especificar la cantidad de trabajadores que usarás. Si especificas uno o más trabajadores, también debes configurar TrainingInput.workerType a fin de especificar el tipo de máquina que usarás para tus nodos trabajadores. Especifica trabajadores solo si entrenas con TensorFlow o si usas contenedores personalizados.
  • Puedes configurar TrainingInput.parameterServerCount a fin de especificar la cantidad de servidores de parámetros que usarás. Si especificas uno o más servidores de parámetros, también debes configurar TrainingInput.parameterServerType a fin de especificar el tipo de máquina que usarás para tus servidores de parámetros. Especifica servidores de parámetros solo si estás entrenando con TensorFlow o si usas contenedores personalizados.

Tipos de máquina para el nivel de escala personalizado

Usa un nivel de escala personalizado a fin de 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 tu trabajo de entrenamiento, puedes usar los mismos identificadores:

  • Establece el nivel de escala (scaleTier) en CUSTOM.

  • Establece los valores para la cantidad de servidores de parámetros (parameterServerCount) y trabajadores (workerCount) 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 ni servidores de parámetros.

  • Configura el tipo de máquina para tu trabajador principal (masterType). Si decidiste usar servidores de parámetros o trabajadores, configura los tipos de máquina para ellos en los campos parameterServerType y workerType.

    Puedes especificar diferentes tipos de máquinas para masterType, parameterServerType y workerType, pero no puedes usar diferentes tipos de máquinas con instancias individuales. Por ejemplo, puedes usar un tipo de máquina n1-highmem-8 para tus servidores de parámetros, pero no puedes configurar algunos servidores de parámetros a fin de usar n1-highmem-8 y otros para usar n1-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 de máquina predefinidos de Compute Engine para masterType, workerType y parameterServerType de tu trabajo. Si entrenas con TensorFlow o usas contenedores personalizados, puedes usar varios tipos de GPU con estos tipos de máquina 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:

  • 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

Para obtener más información, lee sobre la CPU virtual (vCPU) y los recursos de memoria que proporcionan los tipos de máquina de Compute Engine o consulta la tabla de comparación al final de esta página.

Tipos de máquinas heredadas

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 un 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. Tu trabajador principal, los servidores de parámetros y los trabajadores deben usar los tipos de máquina de uno de los grupos.

    Por ejemplo, si configuras masterType para que sea n1-highcpu-32 (un tipo de máquina de Compute Engine), no puedes establecer workerType ni parameterServerType en complex_model_m (un tipo de máquina heredado), pero puedes configurarlos en n1-highcpu-16 (otro tipo de máquina de Compute Engine).

En la tabla siguiente, se describe 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, propicia en especial 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 alrededor del 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 alrededor del 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 NVIDIA Tesla K80. 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-8 con una GPU k80

complex_model_m_gpu

Una máquina equivalente a complex_model_m que también incluye cuatro GPU NVIDIA Tesla K80. 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-k80x4

complex_model_l_gpu

Una máquina equivalente a complex_model_l que también incluye ocho GPU NVIDIA Tesla K80. 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-k80x8

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 usas 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 usas 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 usas 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

Entrenamiento 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.

Compara tipos de máquinas

Las tablas siguientes proporcionan información que puedes usar a fin de comparar los tipos de máquina de Compute Engine y los tipos de máquina heredados disponibles para el entrenamiento cuando configuras tu nivel de escala en CUSTOM.

Las especificaciones exactas de los tipos de máquina están sujetas a modificaciones en cualquier momento.

Si tu trabajo de entrenamiento usa TensorFlow o contenedores personalizados, puedes usar tipos de máquinas con aceleradores. De lo contrario, no uses tipos de máquinas con aceleradores.

Nombre del tipo de máquina Categoría de tipo de máquina Aceleradores CPU virtuales Memoria (GB)
n1-standard-4 Compute Engine Personalizable 4 15
n1-standard-8 Compute Engine Personalizable 8 30
n1-standard-16 Compute Engine Personalizable 16 60
n1-standard-32 Compute Engine Personalizable 32 120
n1-standard-64 Compute Engine Personalizable 64 240
n1-standard-96 Compute Engine Personalizable 96 360
n1-highmem-2 Compute Engine Personalizable 2 13
n1-highmem-4 Compute Engine Personalizable 4 26
n1-highmem-8 Compute Engine Personalizable 8 52
n1-highmem-16 Compute Engine Personalizable 16 104
n1-highmem-32 Compute Engine Personalizable 32 208
n1-highmem-64 Compute Engine Personalizable 64 416
n1-highmem-96 Compute Engine Personalizable 96 624
n1-highcpu-16 Compute Engine Personalizable 16 14.4
n1-highcpu-32 Compute Engine Personalizable 32 28.8
n1-highcpu-64 Compute Engine Personalizable 64 57.6
n1-highcpu-96 Compute Engine Personalizable 96 86.4
cloud_tpu TPU 8 (núcleos de TPU v2 o TPU v3)
standard heredada - 4 15
large_model heredada - 8 52
complex_model_s heredada - 8 7.2
complex_model_m heredada - 16 14.4
complex_model_l heredada - 32 28.8
standard_gpu heredada 1 (GPU K80) 8 30
complex_model_m_gpu heredada 4 (GPU K80) 16 60
complex_model_l_gpu heredada 8 (GPU K80) 32 120
standard_p100 heredada 1 (GPU P100) 8 30
complex_model_m_p100 heredada 4 (GPU P100) 16 60
standard_v100 heredada 1 (GPU V100) 8 30
large_model_v100 heredada 1 (GPU V100) 16 52
complex_model_m_v100 heredada 4 (GPU V100) 16 60
complex_model_l_v100 heredada 8 (GPU V100) 32 120

Próximos pasos

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.