Resolução de problemas do Vertex AI Workbench

Esta página descreve os passos de resolução de problemas que podem ser úteis se tiver problemas quando usa o Vertex AI Workbench.

Consulte também o artigo Resolução de problemas do Vertex AI para obter ajuda na utilização de outros componentes do Vertex AI.

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

Procedimentos úteis

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

Use o SSH para se ligar à instância de blocos de notas geridos pelo utilizador

Use o SSH para se ligar à sua instância escrevendo o seguinte comando no Cloud Shell ou em qualquer ambiente onde a CLI Google Cloud esteja instalada.

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

Substitua o seguinte:

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

Também pode ligar-se à sua instância abrindo a página de detalhes do Compute Engine da instância e, de seguida, clicando no botão SSH.

Volte a registar-se no servidor proxy inverso

Para voltar a registar a instância de blocos de notas geridos pelo utilizador no servidor proxy inverso interno, pode parar e iniciar a VM na página Blocos de notas geridos pelo utilizador ou usar o SSH para estabelecer ligação à instância de blocos de notas geridos pelo utilizador e introduzir:

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

Valide o estado do serviço Docker

Para verificar o estado do serviço Docker, pode usar o SSH para estabelecer ligação à sua instância de blocos de notas gerida pelo utilizador e introduzir:

sudo service docker status

Verifique se o agente de proxy invertido está em execução

Para verificar se o agente do proxy inverso do bloco de notas está em execução, use o SSH para estabelecer ligação à instância de blocos de notas geridos pelo utilizador e introduza:

# 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 estado do serviço Jupyter e recolha registos

Para verificar o estado do serviço Jupyter, pode usar o SSH para se ligar à instância de blocos de notas geridos pelo utilizador e introduzir:

sudo service jupyter status

Para recolher registos de serviços do Jupyter:

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

Verifique se a API interna do Jupyter está ativa

A API Jupyter deve ser sempre executada na porta 8080. Pode verificar esta situação inspecionando os registos do sistema da instância para ver se existe uma entrada semelhante à seguinte:

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

Para verificar se a API interna do Jupyter está ativa, também pode usar o SSH para se ligar à instância de blocos de notas gerida pelo utilizador e introduzir:

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

Também pode medir o tempo que a API demora a responder caso os pedidos estejam a demorar demasiado tempo:

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 estes comandos na sua instância do Vertex AI Workbench, abra o JupyterLab e crie um novo terminal.

Reinicie o serviço Docker

Para reiniciar o serviço Docker, pode parar e iniciar a VM na página Notebooks geridos pelo utilizador ou pode usar o SSH para se ligar à instância de notebooks geridos pelo utilizador e introduzir:

sudo service docker restart

Reinicie o agente de proxy invertido

Para reiniciar o agente de proxy invertido, pode parar e iniciar a VM na página Notebooks geridos pelo utilizador ou pode usar o SSH para se ligar à instância de notebooks geridos pelo utilizador e introduzir:

sudo docker restart proxy-agent

Reinicie o serviço Jupyter

Para reiniciar o serviço Jupyter, pode parar e iniciar a VM na página Blocos de notas geridos pelo utilizador ou pode usar o SSH para estabelecer ligação à instância de blocos de notas geridos pelo utilizador e introduzir:

sudo service jupyter restart

Reinicie o agente de recolha do Notebooks

O serviço Notebooks Collection Agent executa um processo Python em segundo plano que verifica o estado dos serviços principais da instância do Vertex AI Workbench.

Para reiniciar o serviço do agente da coleção de notebooks, pode parar e iniciar a VM a partir da Google Cloud consola ou pode usar o SSH para se ligar à instância do Vertex AI Workbench e introduzir:

sudo systemctl stop notebooks-collection-agent.service

seguido de:

sudo systemctl start notebooks-collection-agent.service

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

Modifique o script do agente de recolha do Notebooks

Para aceder e editar o guião, abra um terminal na nossa instância ou use ssh para estabelecer ligação à sua instância do Vertex AI Workbench, e introduza:

nano /opt/deeplearning/bin/notebooks_collection_agent.py

Depois de editar o ficheiro, lembre-se de o guardar.

Em seguida, tem de reiniciar o serviço do agente de recolha de blocos de notas.

Verifique se a instância consegue resolver os domínios DNS necessários

Para verificar se a instância consegue resolver os domínios DNS necessários, pode usar o SSH para se ligar à instância de blocos de notas geridos pelo utilizador e introduzir:

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, pode verificar se a instância 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 estes comandos na sua instância do Vertex AI Workbench, abra o JupyterLab e crie um novo terminal.

Crie uma cópia dos dados do utilizador numa instância

Para armazenar uma cópia dos dados do utilizador de uma instância no Cloud Storage, conclua os seguintes passos.

Crie um contentor do Cloud Storage (opcional)

No mesmo projeto onde a sua instância está localizada, crie um contentor do Cloud Storage onde possa armazenar os dados do utilizador. Se já tiver um contentor do Cloud Storage, ignore este passo.

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

    Copie os seus dados do utilizador

    1. Na interface do JupyterLab da sua instância, selecione Ficheiro > Novo > Terminal para abrir uma janela de terminal. Para instâncias de notebooks geridas pelo utilizador, pode, em alternativa, usar o SSH para se ligar ao terminal da instância.

    2. Use a CLI gcloud para copiar os dados do utilizador para um contentor do Cloud Storage. O comando de exemplo seguinte copia todos os ficheiros do diretório /home/jupyter/ da sua instância para um diretório num contentor do Cloud Storage.

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

      Substitua o seguinte:

      • BUCKET_NAME: o nome do seu contentor do Cloud Storage
      • PATH: o caminho para o diretório onde quer copiar os seus ficheiros, por exemplo: /copy/jupyter/

    Investigue uma instância bloqueada no aprovisionamento através do gcpdiag

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

    Este gcpdiagrunbook investiga as potenciais causas de uma instância do Vertex AI Workbench ficar bloqueada no estado de aprovisionamento, incluindo as seguintes áreas:
    • Estado: verifica o estado atual da instância para garantir que está bloqueada no aprovisionamento e não parada nem ativa.
    • Imagem do disco de arranque da VM do Compute Engine da instância: Verifica se a instância foi criada com um contentor personalizado, uma imagem workbench-instances oficial, imagens de VMs de aprendizagem avançada ou imagens não suportadas que podem fazer com que a instância fique bloqueada no estado de aprovisionamento.
    • Scripts personalizados: verifica se a instância está a usar scripts de arranque ou pós-arranque personalizados que alteram a porta Jupyter predefinida ou quebram dependências que podem fazer com que a instância fique bloqueada no estado de aprovisionamento.
    • Versão do ambiente: verifica se a instância está a usar a versão mais recente do ambiente, verificando a respetiva capacidade de atualização. As versões anteriores podem fazer com que a instância fique bloqueada no estado de aprovisionamento.
    • Desempenho da VM do Compute Engine da instância: Verifica o desempenho atual da VM para garantir que não está prejudicado por uma utilização elevada da CPU, memória insuficiente ou problemas de espaço em disco que possam interromper as operações normais.
    • Porta série do Compute Engine da instância ou registo do sistema: verifica se a instância tem registos da porta série, que são analisados para garantir que o Jupyter está em execução na porta 127.0.0.1:8080.
    • Acesso ao terminal e ao SSH do Compute Engine da instância: verifica se a VM do Compute Engine da instância está em execução para que o utilizador possa usar o SSH e abrir um terminal para verificar se a utilização do espaço em "home/jupyter" é inferior a 85%. Se não restar espaço, isto pode fazer com que a instância fique bloqueada no estado de aprovisionamento.
    • IP externo desativado: verifica se o acesso ao IP externo está desativado. Uma configuração de rede incorreta pode fazer com que a instância fique bloqueada no estado de aprovisionamento.

    Docker

    Pode executar o gcpdiag usando um wrapper que inicia o gcpdiag num contentor do Docker. O Docker ou o Podman têm de estar instalados.

    1. Copie e execute o seguinte comando na sua 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 manual de procedimentos.

    Substitua o seguinte:

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

    Sinalizações úteis:

    Para ver uma lista e uma descrição de todas as flags da ferramenta gcpdiag, consulte as gcpdiag instruções de utilização.

    Erros de autorizações ao usar funções de contas de serviço com o Vertex AI

    Problema

    Recebe erros de autorizações gerais quando usa funções de contas de serviço com o Vertex AI.

    Estes erros podem aparecer no Cloud Logging nos registos de componentes do produto ou nos registos de auditoria. Também podem aparecer em qualquer combinação dos projetos afetados.

    Estes problemas podem dever-se a uma ou ambas das seguintes situações:

    • Uso da função Service Account Token Creator quando devia ter sido usada a função Service Account User ou vice-versa. Estas funções concedem autorizações diferentes numa conta de serviço e não são intercambiáveis. Para saber mais sobre as diferenças entre as funções de Service Account Token Creator e Service Account User, consulte o artigo Funções da conta de serviço.

    • Concedeu autorizações de uma conta de serviço em vários projetos, o que não é permitido por predefinição.

    Solução

    Para resolver o problema, experimente uma ou mais das seguintes opções:

    • Determine se é necessária a função de Service Account Token Creator ou Service Account User. Para saber mais, leia a documentação da IAM para os serviços do Vertex AI que está a usar, bem como quaisquer outras integrações de produtos que esteja a usar.

    • Se concedeu autorizações a uma conta de serviço em vários projetos, certifique-se de que iam.disableCrossProjectServiceAccountUsage para permitir que as contas de serviço sejam anexadas em vários projetos. não está aplicada. Para garantir que iam.disableCrossProjectServiceAccountUsage não é aplicada, execute o seguinte comando:

      gcloud resource-manager org-policies disable-enforce \
        iam.disableCrossProjectServiceAccountUsage \
        --project=PROJECT_ID