Solução de problemas do Vertex AI Workbench

Nesta página, descrevemos as etapas de solução de problemas que podem ser úteis se você tiver problemas ao usar o Vertex AI Workbench.

Consulte também Solução de problemas da Vertex AI para receber ajuda ao usar outros componentes da Vertex AI.

Para filtrar o conteúdo desta página, clique em um tópico:

Procedimentos úteis

Esta seção descreve procedimentos que podem ser úteis.

Use SSH para se conectar à instância de notebooks gerenciados pelo usuário

Use o SSH para se conectar à instância digitando o seguinte comando no Cloud Shell ou em qualquer ambiente em que a Google Cloud CLI esteja instalada.

gcloud compute ssh --project PROJECT_ID \
  --zone ZONE \
  INSTANCE_NAME -- -L 8080:localhost:8080

Substitua:

  • PROJECT_ID: o ID do projeto
  • ZONE: a zona do Google Cloud em que sua instância está localizada
  • INSTANCE_NAME: o nome da instância

Também é possível conectar-se à instância abrindo a página de detalhes do Compute Engine dela e clicando no botão SSH.

Registrar novamente com o servidor Inverting Proxy

Para registrar novamente a instância de notebooks gerenciados pelo usuário no servidor Inverting Proxy interno, interrompa e inicie a VM na página de notebooks gerenciados pelo usuário ou use SSH para se conectar à instância de notebooks gerenciados pelo usuário e digite:

cd /opt/deeplearning/bin
sudo ./attempt-register-vm-on-proxy.sh

Verificar o status do serviço do Docker

Para verificar o status do serviço do Docker, use ssh para se conectar a instância de notebooks gerenciados pelo usuário e digite:

sudo service docker status

Verifique se o agente do Inverting Proxy está em execução

Para verificar se o agente Inverting Proxy do notebook está em execução, use SSH para se conectar à instância de notebooks gerenciados pelo usuário e digite:

# Confirm Inverting Proxy agent Docker container is running (proxy-agent)
sudo docker ps

# Verify State.Status is running and State.Running is true.
sudo docker inspect proxy-agent

# Grab logs
sudo docker logs proxy-agent

Verifique o status do serviço Jupyter e colete os registros

Para verificar o status do serviço Jupyter, use ssh para se conectar à instância de notebooks gerenciados pelo usuário e digite:

sudo service jupyter status

Para coletar os registros do serviço Jupyter:

sudo journalctl -u jupyter.service --no-pager

Verificar se a API interna do Jupyter está ativa

A API Jupyter precisa ser executada sempre na porta 8080. Para verificar se isso está acontecendo, inspecione os syslogs da instância em busca de uma entrada semelhante a esta:

Jupyter Server ... running at:
http://localhost:8080

Para verificar se a API interna do Jupyter está ativa, use SSH para se conectar à instância de notebooks gerenciados pelo usuário e digite:

curl http://127.0.0.1:8080/api/kernelspecs

Também é possível medir o tempo que a API leva para responder, caso as solicitações estejam demorando muito:

time curl -V http://127.0.0.1:8080/api/status
time curl -V http://127.0.0.1:8080/api/kernels
time curl -V http://127.0.0.1:8080/api/connections

Para executar esses comandos na instância do Vertex AI Workbench, abra o JupyterLab e crie um terminal.

Reinicie o serviço do Docker

Para reiniciar o serviço do Docker, interrompa e inicie a VM na página de notebooks gerenciados pelo usuário ou use o SSH para se conectar à instância de notebooks gerenciados pelo usuário e digite:

sudo service docker restart

Reiniciar o agente do Inverting Proxy

Para reiniciar o agente Inverting Proxy, interrompa e inicie a VM na página de notebooks gerenciados pelo usuário ou use o SSH para se conectar à instância de notebooks gerenciados pelo usuário e digite:

sudo docker restart proxy-agent

Reiniciar o serviço Jupyter

Para reiniciar o serviço do Jupyter, interrompa e inicie a VM na página de notebooks gerenciados pelo usuário ou use o SSH para se conectar à instância de notebooks gerenciados pelo usuário e digite:

sudo service jupyter restart

Reiniciar o agente de coleta de notebooks

O serviço do agente de coleta de notebooks executa um processo Python em segundo plano que verifica o status dos principais serviços da instância do Vertex AI Workbench.

Para reiniciar o serviço do agente de coleta de notebooks, interrompa e inicie a VM no console do Google Cloud ou use SSH para se conectar à instância do Vertex AI Workbench e digite:

sudo systemctl stop notebooks-collection-agent.service

seguido por:

sudo systemctl start notebooks-collection-agent.service

Para executar esses comandos na instância do Vertex AI Workbench, abra o JupyterLab e crie um terminal.

Modificar o script do agente de coleta de notebooks

Para acessar e editar o script, abra um terminal na instância ou use SSH para se conectar à instância do Vertex AI Workbench e digite:

nano /opt/deeplearning/bin/notebooks_collection_agent.py

Depois de editar o arquivo, salve-o.

Em seguida, reinicie o serviço do agente de coleta de notebooks.

Verificar se a instância pode resolver os domínios DNS necessários

Para verificar se a instância pode resolver os domínios DNS necessários, use SSH para se conectar à instância de notebooks gerenciados pelo usuário e digite:

host notebooks.googleapis.com
host *.notebooks.cloud.google.com
host *.notebooks.googleusercontent.com
host *.kernels.googleusercontent.com

ou

curl --silent --output /dev/null "https://notebooks.cloud.google.com"; echo $?

Se a instância tiver o Dataproc ativado, você poderá verificar se ela resolve *.kernels.googleusercontent.com executando o seguinte:

curl --verbose -H "Authorization: Bearer $(gcloud auth print-access-token)" https://${PROJECT_NUMBER}-dot-${REGION}.kernels.googleusercontent.com/api/kernelspecs | jq .

Para executar esses comandos na instância do Vertex AI Workbench, abra o JupyterLab e crie um terminal.

Fazer uma cópia dos dados do usuário em uma instância

Para armazenar uma cópia dos dados do usuário da sua instância no Cloud Storage, conclua as etapas a seguir.

Criar um bucket do Cloud Storage (opcional)

No mesmo projeto em que sua instância está localizada, crie um bucket do Cloud Storage para armazenar os dados do usuário. Caso você já tenha um bucket do Cloud Storage, pule esta etapa.

  • Create a Cloud Storage bucket:
    gcloud storage buckets create gs://BUCKET_NAME
    Replace BUCKET_NAME with a bucket name that meets the bucket naming requirements.

Copiar dados do usuário

  1. Na interface da instância do JupyterLab, selecione File > New > Terminal para abrir uma janela de terminal. Para instâncias de notebooks gerenciados pelo usuário, é possível se conectar ao terminal da instância usando SSH.

  2. Use a gcloud CLI para copiar os dados do usuário para um bucket do Cloud Storage. O exemplo de comando a seguir copia todos os arquivos do diretório /home/jupyter/ da instância para um diretório em um bucket do Cloud Storage.

    gcloud storage cp /home/jupyter/* gs://BUCKET_NAMEPATH --recursive
    

    Substitua:

    • BUCKET_NAME: o nome do bucket do Cloud Storage
    • PATH: o caminho para o diretório em que você quer copiar os arquivos, por exemplo: /copy/jupyter/

Investigar uma instância que está com problemas de provisionamento usando o gcpdiag

gcpdiag é uma ferramenta de código aberto. Não é um produto do Google Cloud oficialmente compatível. Use a ferramenta gcpdiag para identificar e corrigir problemas no projeto do Google Cloud. Para mais informações, consulte o projeto gcpdiag no GitHub.

Este runbook gcpdiag investiga as possíveis causas de uma instância do Vertex AI Workbench ficar presa no status de provisionamento, incluindo as seguintes áreas:
  • Status: verifica o status atual da instância para confirmar se ela está travada no provisionamento e não interrompida ou ativa.
  • Imagem de disco de inicialização da VM do Compute Engine da instância: verifica se a instância foi criada com um contêiner personalizado, uma imagem workbench-instances oficial, Deep Learning VM Images ou imagens sem suporte que podem causar o travamento dela no status de provisionamento.
  • Scripts personalizados: verifica se a instância está usando scripts personalizados de inicialização ou pós-inicialização que mudam a porta padrão do Jupyter ou quebram dependências que podem fazer com que a instância fique presa no status de provisionamento.
  • Versão do ambiente: verifica se a instância está usando a versão mais recente do ambiente, verificando a capacidade de upgrade dela. Versões anteriores podem fazer com que a instância fique presa no status de provisionamento.
  • Desempenho da VM do Compute Engine da instância: verifica o desempenho atual da VM para garantir que ela não esteja prejudicada pelo uso de CPU alto, por memória insuficiente ou por problemas de espaço em disco que possam interromper as operações normais.
  • Porta serial do Compute Engine ou geração de registros do sistema da instância: verifica se a instância tem registros de porta serial, que são analisados para garantir que o Jupyter esteja em execução na porta 127.0.0.1:8080.
  • Acesso SSH e de terminal do Compute Engine da instância: verifica se a VM do Compute Engine da instância está em execução para que o usuário possa usar SSH e abrir um terminal para verificar se o uso de espaço em home/jupyter é inferior a 85%. Quando não há espaço, a instância pode ficar presa no status de provisionamento.
  • IP externo desativado: verifica se o acesso a IPs externos está desativado. Uma configuração de rede incorreta pode fazer com que a instância fique presa no status de provisionamento.

Console do Google Cloud

  1. Preencha e copie o comando a seguir.
  2. gcpdiag runbook vertex/workbench-instance-stuck-in-provisioning \
        --parameter project_id=PROJECT_ID \
        --parameter instance_name=INSTANCE_NAME \
        --parameter zone=ZONE
  3. Abra o console do Google Cloud e ative o Cloud Shell.
  4. Abrir Console do Cloud
  5. Cole o comando copiado.
  6. Execute o comando gcpdiag, que faz o download da imagem Docker gcpdiag. e realiza verificações de diagnóstico. Se aplicável, siga as instruções de saída para corrigir verificações com falha.

Docker

Você pode executar gcpdiag usando um wrapper que inicia gcpdiag em um contêiner do Docker. Docker ou Podman precisa ser instalado.

  1. Copie e execute o seguinte comando na estação de trabalho local.
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. Execute o comando gcpdiag.
    ./gcpdiag runbook vertex/workbench-instance-stuck-in-provisioning \
        --parameter project_id=PROJECT_ID \
        --parameter instance_name=INSTANCE_NAME \
        --parameter zone=ZONE

Veja os parâmetros disponíveis para este runbook.

Substitua:

  • PROJECT_ID: o ID do projeto que contém o recurso.
  • INSTANCE_NAME: o nome da instância de destino do Vertex AI Workbench no projeto.
  • ZONE: a zona em que a instância de destino do Vertex AI Workbench está.

Flags úteis

Para conferir uma lista e descrição de todas as flags da ferramenta gcpdiag, consulte Instruções de uso do gcpdiag.