Supervisa trabajos de entrenamiento

Según el tamaño de tu conjunto de datos y la complejidad de tu modelo, el entrenamiento puede tardar mucho tiempo. El entrenamiento a partir de datos del mundo real puede durar varias horas. Puedes supervisar varios aspectos de tu trabajo mientras se ejecuta.

Verifica el estado del trabajo

La manera más sencilla de verificar tu trabajo para ver el estado general es a través de la página Trabajos de Cloud ML Engine en Google Cloud Platform Console. Puedes obtener los mismos detalles de manera programática y con la herramienta de línea de comandos de gcloud.

Console

  1. Abre la página Trabajos de Cloud ML Engine en GCP Console.

    Abrir Trabajos en GCP Console

  2. Haz clic en el nombre de tu trabajo en la lista para abrir la página de detalles del trabajo.

  3. Busca el estado de tu trabajo en la parte superior del informe. En el ícono y el texto, se describe el estado actual del trabajo.

    La información del estado del trabajo en la parte superior de la página de detalles del trabajo.

gcloud

Usa gcloud ml-engine jobs describe para obtener detalles sobre el estado actual del trabajo en la línea de comandos:

gcloud ml-engine jobs describe job_name

Puedes obtener una lista de los trabajos asociados con tu proyecto en la que se incluye el estado del trabajo y la hora de la creación con gcloud ml-engine jobs list. Ten en cuenta que, con este comando en su forma más sencilla, se enumeran todos los trabajos creados para tu proyecto. Debes definir el alcance de tu solicitud para limitar la cantidad de trabajos informados. Con los siguientes ejemplos, obtendrás ayuda para comenzar:

Usa el argumento --limit para restringir la cantidad de trabajos. En este ejemplo, se enumeran los 5 trabajos más recientes:

gcloud ml-engine jobs list --limit=5

Usa el argumento --filter a fin de restringir la lista de trabajos para aquellos que cuenten con un valor de atributo. Puedes filtrar uno o más atributos del objeto de trabajo. Además de los atributos principales del trabajo, puedes filtrar objetos en el trabajo, como el objeto TrainingInput.

Ejemplos de cómo filtrar la lista:

  • Enumera todos los trabajos que se iniciaron después de una hora determinada. En este ejemplo, se usan las 7:00 p.m. del 15 de enero de 2017:

    gcloud ml-engine jobs list --filter='createTime>2017-01-15T19:00'
    
  • Enumera los tres trabajos más recientes con nombres que comiencen con una string determinada. Por ejemplo, la string puede representar el nombre que usas para todos los trabajos de entrenamiento de un modelo en particular. En este ejemplo, se usa un modelo en el que el identificador de trabajos es "census" con un sufijo que es un índice incrementado para cada trabajo:

    gcloud ml-engine jobs list --filter='jobId:census*' --limit=3
    
  • Enumera todos los trabajos con errores y con nombres que comienzan con "rnn":

    gcloud ml-engine jobs list --filter='jobId:rnn* AND state:FAILED'
    

Para obtener más detalles sobre las expresiones que se admiten en la opción de filtro, consulta la documentación del comando de gcloud.

Python

  1. Establece la string del identificador de tu trabajo con la combinación del nombre de tu proyecto y el nombre del trabajo con la forma 'projects/your_project_name/jobs/your_job_name':

    projectName = 'your_project_name'
    projectId = 'projects/{}'.format(projectName)
    jobName = 'your_job_name'
    jobId = '{}/jobs/{}'.format(projectId, jobName)
    
  2. Crea la solicitud a projects.jobs.get:

    request = ml.projects().jobs().get(name=jobId)
    
  3. Ejecuta la solicitud (en este ejemplo, se coloca la llamada execute en un bloque try para detectar excepciones):

    response = None
    
    try:
        response = request.execute()
    except errors.HttpError, err:
        # Something went wrong. Handle the exception in an appropriate
        #  way for your application.
    
  4. Verifica la respuesta para asegurarte de que la llamada de servicio muestre los datos, independientemente de los errores HTTP.

    if response == None:
        # Treat this condition as an error as best suits your
        # application.
    
  5. Obtén datos de estado. El objeto de respuesta es un diccionario que contiene todos los miembros aplicables del recurso de trabajo, incluido el recurso TrainingInput completo y los miembros aplicables del recurso TrainingOutput. En el siguiente ejemplo, se imprime el estado del trabajo y la cantidad de unidades del AA que consume el trabajo.

    print('Job status for {}.{}:'.format(projectName, jobName))
    print('    state : {}'.format(response['state']))
    print('    consumedMLUnits : {}'.format(
        response['trainingOutput']['consumedMLUnits']))
    

Puede haber errores en los trabajos si hay un problema con tu aplicación de entrenamiento o con la infraestructura de Cloud ML Engine. Puedes usar Stackdriver Logging para iniciar la depuración.

Supervisa el consumo de recursos

Puedes encontrar gráficos del uso agregado de CPU y memoria de tu trabajo en la página Detalles del trabajo:

  1. Ve a la página Trabajos de Cloud ML Engine en GCP Console.

    Ir a la página Trabajos de Cloud ML Engine

  2. Busca tu trabajo en la lista.

  3. Haz clic en el nombre del trabajo para abrir la página de detalles del trabajo.

  4. Desplázate hacia abajo para ver los gráficos del uso de recursos.

    Gráficos del uso de CPU y memoria en la página de detalles del trabajo de Cloud ML Engine

Puedes obtener información más detallada sobre los recursos en línea que se usan en tus trabajos de entrenamiento con Stackdriver Monitoring. Cloud ML Engine exporta dos métricas a Stackdriver:

  • En ml/training/memory/utilization, se muestra la fracción de memoria asignada que actualmente está en uso.

  • En ml/training/cpu/utilization, se muestra la fracción de CPU asignada que actualmente está en uso.

Con estas métricas, puedes ver el uso de CPU y memoria para cada tarea (trabajador, instancia principal y servidor de parámetros) en un trabajo.

¿Qué sigue?

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

Enviar comentarios sobre…

Cloud ML Engine para XGBoost y scikit-learn