Como monitorar jobs de treinamento

Dependendo do tamanho do conjunto de dados e da complexidade do modelo, o treinamento pode levar muito tempo. Um treinamento com dados reais pode levar muitas horas, mas você pode monitorar vários aspectos do job durante a execução.

Como verificar o status do job

Para ver o status geral, a maneira mais fácil de verificar o job é acessar a página Jobs do AI Platform Training no console do Google Cloud. É possível receber os mesmos detalhes de maneira programática e com a Google Cloud CLI.

Console

  1. Abra a página Jobs do AI Platform Training no console do Google Cloud.

    Abrir jobs no console do Google Cloud

  2. Clique no nome do job na lista para abrir a página Detalhes do job.

  3. Localize o status do job na parte superior do relatório. O ícone e o texto descrevem o estado atual do job.

    As informações sobre o status do job na parte superior da página "Detalhes do job".

Como filtrar jobs

Na página Jobs, é possível filtrá-los usando vários parâmetros diferentes, incluindo Type, JobID, State e horário de criação do job.

  1. Clique no campo Filtrar por prefixo , localizado acima da lista de jobs. Selecione o prefixo que você quer usar para fazer a filtragem. Por exemplo, selecione o Tipo.
  2. Para concluir o filtro, clique no sufixo que você quer usar. Por exemplo, as opções de sufixo do prefixo Tipo são:

    • Treinamento com código personalizado
    • Treinamento com algoritmos integrados
    • Predição
  3. O filtro é aplicado à lista Jobs e o nome dele é exibido no campo de filtro. Por exemplo, se você selecionou Treinamento com código personalizado, o filtro Tipo: Treinamento com código personalizado é exibido na parte superior e filtra a lista de jobs. É possível adicionar vários filtros, se necessário.

Como visualizar os testes de hiperparâmetro

Na página Detalhes do job, é possível ver as métricas de cada teste na tabela Testes do HyperTune. Essa tabela aparece apenas para jobs que usam ajuste de hiperparâmetro. É possível alternar as métricas para exibir testes por maior ou menor rmse, Training steps e learning_rate.

Para ver os registros de um teste específico, clique no botão more_vert e em Ver registros.

gcloud

Use gcloud ai-platform jobs describe para ver detalhes sobre o estado atual do job na linha de comando:

gcloud ai-platform jobs describe job_name

Você pode ver uma lista de tarefas associadas ao projeto que inclui o status da tarefa e a data/hora de criação com gcloud ai-platform jobs list. Na forma mais simples, esse comando lista todos os jobs já criados para o projeto. Altere o escopo da solicitação para limitar o número de jobs reportados. Veja a seguir alguns exemplos de como começar:

Use o argumento --limit para restringir o número de jobs. Este exemplo lista os 5 jobs mais recentes:

gcloud ai-platform jobs list --limit=5

Use o argumento --filter para restringir a lista de jobs àqueles com um determinado valor de atributo. Você pode filtrar um ou mais atributos do objeto Job. Além dos principais atributos do job, você pode filtrar objetos dentro do job, como o objeto TrainingInput.

Exemplos de filtragem da lista:

  • Liste todos os jobs que foram iniciados após um determinado horário. Este exemplo usa 7 horas da noite de 15 de janeiro de 2017:

    gcloud ai-platform jobs list --filter='createTime>2017-01-15T19:00'
    
  • Liste os últimos três jobs com nomes que começam com uma determinada string. Por exemplo, a string pode representar o nome que você usa para todos os jobs de treinamento para um modelo específico. Este exemplo usa um modelo em que o identificador do job é "census" com um sufixo que é um índice incrementado para cada job:

    gcloud ai-platform jobs list --filter='jobId:census*' --limit=3
    
  • Liste todos os jobs que falharam com nome iniciado por "rnn":

    gcloud ai-platform jobs list --filter='jobId:rnn* AND state:FAILED'
    

Para ver detalhes sobre as expressões compatíveis com a opção de filtro, consulte a documentação do comando gcloud.

Python

  1. Monte a string do identificador de job combinando o nome do projeto e o nome do job no formato: '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. Formule a solicitação para projects.jobs.get:

    request = ml.projects().jobs().get(name=jobId)
    
  3. Execute a solicitação (este exemplo coloca a chamada execute em um bloco try para capturar exceções):

    response = None
    
    try:
        response = request.execute()
    except errors.HttpError, err:
        # Something went wrong. Handle the exception in an appropriate
        #  way for your application.
    
  4. Confira a resposta para garantir que a chamada de serviço retorne os dados, mesmo que tenha erros HTTP.

    if response == None:
        # Treat this condition as an error as best suits your
        # application.
    
  5. Receba os dados de status. O objeto de resposta é um dicionário que contém todos os membros aplicáveis do recurso Job, incluindo o recurso TrainingInput completo e os membros aplicáveis do recurso TrainingOutput. No exemplo a seguir, são impressos o status do job e o número de unidades ML consumidas por ele.

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

Os jobs poderão falhar se houver um problema com o aplicativo de treinamento ou com a infraestrutura do AI Platform Training. É possível usar o Cloud Logging para iniciar a depuração.

Também é possível usar um shell interativo para inspecionar os contêineres de treinamento enquanto o job de treinamento está em execução.

Como monitorar o consumo de recursos

A página Detalhes do job exibe os seguintes gráficos de utilização de recursos dos jobs de treinamento:

  • Utilização agregada da CPU ou GPU e a utilização da memória pelo job. Esses gráficos são detalhados por mestre, worker e servidor de parâmetros.
  • Uso da rede do job, mensurado em bytes por segundo. Há gráficos separados para bytes enviados e bytes recebidos.
  1. Acesse a página Jobs do AI Platform Training no console do Google Cloud.

    Acessar a página "Jobs" do AI Platform Training

  2. Localize o job na lista.

  3. Clique no nome do job na lista para abrir a página Detalhes do job.

  4. Selecione as guias rotuladas CPU, GPU ou Rede para ver os gráficos de utilização de recursos associados.

É possível também acessar informações sobre os recursos on-line que seus jobs de treinamento usam com o Cloud Monitoring. O AI Platform Training exporta metrics para o Cloud Monitoring.

Cada tipo de métrica do AI Platform Training inclui "training" no nome. Por exemplo, ml.googleapis.com/training/cpu/utilization ou ml.googleapis.com/training/accelerator/memory/utilization.

Como monitorar com o TensorBoard

Configure seu aplicativo de treinamento para salvar dados resumidos que possam ser examinados e visualizados com o TensorBoard.

Salve-os em um local do Cloud Storage e aponte o TensorBoard para esse local para examiná-los. Também é possível apontar o TensorBoard para um diretório com subdiretórios que contenham a saída de vários jobs.

Veja mais informações sobre o TensorBoard e o AI Platform Training no guia de primeiros passos.

A seguir