Especifica tipos de máquinas o niveles de escala

Cuando ejecutas un trabajo de entrenamiento en Cloud ML Engine, 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áquinas tú mismo.

Especifica tu configuración

La forma en que especificas la configuración del 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 del nivel de escala y los tipos de máquinas en el archivo de configuración. Puedes darle el nombre que desees a este archivo. Por regla general, el nombre es config.yaml.

En el siguiente ejemplo se muestran los contenidos del archivo de configuración, config.yaml, para un trabajo con un clúster de procesamiento personalizado.

trainingInput:
  scaleTier: CUSTOM
  masterType: complex_model_m

Proporciona la ruta al archivo YAML en el marcador --config cuando ejecutes el comando gcloud ml-engine jobs submit training:

gcloud ml-engine 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

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áquinas en el objeto TrainingInput en la configuración de tu trabajo.

En el siguiente ejemplo 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': 'complex_model_m',
    '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.12',
    '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 exactamente como se muestra para que coincidan con los nombres en los recursos Job y TrainingInput.

Niveles de escala

Google puede optimizar la configuración de los niveles de escala para diferentes trabajos a lo largo del 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 potentes 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.

Aquí tienes los identificadores del nivel de escala:

Nivel de escala de Cloud ML Engine
BASIC

Una sola instancia de trabajador. Este nivel es adecuado para aprender cómo usar Cloud ML Engine y experimentar con modelos nuevos usando conjuntos de datos pequeños.

Nombre de la máquina de Compute Engine: n1-standard-4

CUSTOM El nivel CUSTOM no es un nivel establecido, sino que te permite usar tu propia especificación de máquina.
  • Debes 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 compatible para scikit-learn y XGBoost. Consulta los tipos de máquinas que se describen a continuación.

Tipos de máquinas para el nivel de escala personalizado

Usa un nivel de escala personalizado si deseas tener un control más preciso del tipo de máquina que utilizas para entrenar tu modelo. Especifica la configuración en el objeto TrainingInput en la configuración de tu trabajo. Si usas el comando gcloud ml-engine jobs submit training para enviar tu trabajo de entrenamiento, puedes usar los mismos identificadores:

  • Configura el nivel de escala (scaleTier) en CUSTOM.
  • Configura el tipo de máquina para tu trabajador principal (masterType).
  • Dado que la capacitación distribuida no es compatible con scikit-learn y XGBoost, no especifiques parameterServerType ni workerType.

Este es un archivo config.yaml de ejemplo:

trainingInput:
  scaleTier: CUSTOM
  masterType: complex_model_m

Aquí tienes los identificadores del tipo de máquina:

Nombre de la máquina de Cloud ML Engine
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 una gran cantidad 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 que el 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

Compara tipos de máquinas

Las especificaciones exactas de los tipos de máquinas están sujetas a cambios en cualquier momento. En la tabla a continuación se proporciona información que puedes usar para comparar los tipos de máquinas en términos de capacidad relativa.

Tipo de máquina Nombre de la máquina de Compute Engine CPU virtuales GPU/TPU Memoria (GB)
standard n1-standard-4 4 - 15
large_model n1-highmem-8 8 - 52
complex_model_s n1-highcpu-8 8 - 7.20
complex_model_m n1-highcpu-16 16 - 14.4
complex_model_l n1-highcpu-32 32 - 28.8

¿Qué sigue?

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

Enviar comentarios sobre…

Cloud ML Engine para XGBoost y scikit-learn