Como solucionar problemas em notebooks

Nada acontece após clicar em "Abrir JupyterLab"

Verifique se o seu navegador bloqueia guias pop-up. O JupyterLab é aberto em uma nova guia do navegador.

Sem acesso por proxy ao JupyterLab

As configurações de instância dos Notebooks da AI Platform, a configuração da rede e outros fatores podem evitar o acesso por proxy ao JupyterLab. Use o SSH para se conectar ao JupyterLab e saber mais sobre por que você não tem acesso por proxy.

Abrir um notebook resulta no erro "403 (Proibido)"

Se não for possível acessar um notebook, tente o seguinte:

  • Verifique se a Conta do Google que está tentando acessar a instância de notebook tem pelo menos os papéis do IAM do AI Platform Notebooks, por exemplo, executor de notebooks ou administrador de notebooks.

  • Quando você clica em Abrir o JupyterLab para abrir um notebook, isso é feito em uma nova guia do navegador. Se você tiver feito login em mais de uma conta do Google, a nova guia será aberta com a conta padrão. Se você não criou a instância de notebook com sua Conta do Google padrão, a nova guia do navegador exibirá o erro 403 (Forbidden).

Abrir um notebook resulta no erro "504 (Tempo limite do gateway)"

Essa é uma indicação de um tempo limite do proxy interno ou de um servidor de back-end (Jupyter).

Se você não conseguir acessar um notebook:

  • Abra um caso de suporte do Google.

Abrir um notebook resulta no erro "524 (Tempo limite atingido)"

O proxy não recebeu uma resposta do agente para a solicitação dentro do tempo limite. Isso geralmente é uma indicação de que o agente não está se conectando ao servidor proxy ou que as solicitações estão demorando muito no lado do servidor de back-end (Jupyter). Um caso típico desse erro está no lado do usuário (por exemplo, um problema na rede. Ou o agente/servidor Jupyter não está em execução).

Se não for possível acessar um notebook, tente o seguinte:

  • Verifique se o notebook foi iniciado.

  • Verifique se o serviço do Docker foi iniciado e se o agente está em execução. Se o agente for iniciado, reinicie-o.

  • Verifique se o serviço do Jupyter está em execução. Se estiver, tente reiniciá-lo.

  • Verifique se você está usando a Deep Learning VM Image do AI Platform versão M55 ou posterior.

Abrir um notebook resulta no erro "598 (Tempo limite de leitura da rede)"

O proxy não recebe informações do agente há mais de 10 minutos. Esse é um indício significativo de um problema com o agente/Jupyter.

Se não for possível acessar um notebook, tente o seguinte:

  • Verifique se o notebook foi iniciado.

  • Verifique se o serviço do Docker foi iniciado e se o agente está em execução. Se estiver, tente reiniciá-lo.

  • Verifique se o serviço do Jupyter está em execução. Se estiver, tente reiniciá-lo.

  • Verifique se você está usando a Deep Learning VM Image do AI Platform versão M55 ou posterior.

O download de arquivos do JupyterLab resulta no erro "403 (Proibido)"

O pacote "notebook" da versão M23 da VM de aprendizado profundo tem um bug que impede o download de arquivos usando a IU do JupyterLab. Leia mais sobre o bug em Não é possível fazer o download de arquivos após a atualização do JL e em funcionalidade de Download e arquivos está corrompida em pacotes "notebook" na versão 5.7.6 ou superior (5.7.7, 5.7.8), ambos os links em inglês.

Se você está usando a versão M23 do Deep Learning VM, é possível resolver o problema de duas maneiras:

  • Use um navegador Safari. A funcionalidade de download funciona nele.

  • Faça o downgrade do pacote "notebook" para a versão 5.7.5.

    Para fazer isso:

    1. Conecte-se ao Deep Learning VM usando o SSH. Para informações sobre como se conectar a uma VM usando SSH, consulte Como se conectar a instâncias.

    2. Execute os comandos a seguir:

      sudo pip3 install notebook==5.7.5
      sudo service jupyter restart
      

Depois de reiniciar a VM, os arquivos locais não poderão ser referenciados no terminal do notebook

Às vezes, depois de reiniciar uma instância do AI Platform Notebooks, os arquivos locais não podem ser referenciados em um terminal de notebook.

Esse é um problema conhecido. Para fazer referência aos arquivos locais a partir de um terminal de notebook, primeiro restabeleça o diretório de trabalho atual usando o seguinte comando:

cd PWD

Neste comando, substitua PWD pelo diretório de trabalho atual. Por exemplo, se o diretório de trabalho atual for /home/jupyter/, use o comando cd /home/jupyter/.

Depois de restabelecer o diretório de trabalho atual, os arquivos locais podem ser referenciados no terminal do notebook.

A cota de GPU foi excedida

Consulte a página de cotas para saber o número de GPUs disponíveis no seu projeto. Se as GPUs não estiverem listadas nessa página ou se você precisar de uma cota maior de GPU, solicite um aumento. Consulte Como solicitar mais cota na página Cotas de recursos do Compute Engine.

Não consigo criar um notebook novo (permissões insuficientes)

Geralmente, leva cerca de um minuto para criar uma instância de notebook. Se a nova instância de notebook permanecer no estado "pendente" por tempo indefinido, pode ser que a conta de serviço usada para iniciá-la não tenha a permissão necessária de Editor no projeto do Google Cloud Platform (GCP).

Inicie uma instância de notebook com uma conta de serviço personalizada ou no modo de usuário único com um código de usuário. Ao iniciar uma instância de notebook no modo de usuário único, ela começará o processo de inicialização usando a conta de serviço padrão do Compute Engine antes de passar o controle para seu código de usuário.

Para verificar se uma conta de serviço tem as permissões apropriadas, siga estas etapas:

Console

  1. Abra a página do IAM no Console do Cloud.

    Abrir a página do IAM

  2. Determine a conta de serviço usada com a instância de notebook, que é uma das seguintes:

    • Uma conta de serviço personalizada especificada ao criar a instância de notebook.

    • A conta de serviço padrão do Compute Engine para o projeto do GCP, usada ao iniciar a instância de notebook no modo de usuário único. Essa conta tem o nome no formato project-number-compute@developer.gserviceaccount.com. Por exemplo: 113377992299-compute@developer.gserviceaccount.com.

  3. Verifique se sua conta de serviço tem o papel de Editor.

  4. Caso contrário, edite a conta de serviço e adicione-a ao papel de Editor.

Para mais informações, consulte Como conceder, alterar e revogar o acesso a recursos na documentação do IAM.

gcloud

  1. Instale a ferramenta de linha de comando gcloud, caso ainda não tenha feito isso.

  2. Busque o nome e número do projeto do GCP com o seguinte comando. Substitua project-id pelo código do projeto do GCP.

    gcloud projects describe project-id
    

    Você verá uma saída semelhante à abaixo, que exibe o nome (name:) e o número (projectNumber:) do seu projeto.

    createTime: '2018-10-18T21:03:31.408Z'
    lifecycleState: ACTIVE
    name: my-project-name
    parent:
     id: '396521612403'
     type: folder
    projectId: my-project-id-1234
    projectNumber: '113377992299'
    
  3. Determine a conta de serviço usada com a instância de notebook, que é uma das seguintes:

    • Uma conta de serviço personalizada especificada ao criar a instância de notebook.

    • A conta de serviço padrão do Compute Engine para o projeto do GCP, usada ao iniciar a instância de notebook no modo de usuário único. Essa conta tem o nome no formato project-number-compute@developer.gserviceaccount.com. Por exemplo: 113377992299-compute@developer.gserviceaccount.com.

  4. Use o comando a seguir para incluir o papel roles/editor na conta de serviço. Substitua project-name pelo nome do projeto e service-account-id pelo ID da conta de serviço da instância do notebook.

    gcloud projects add-iam-policy-binding project-name \
     --member serviceAccount:service-account-id \
     --role roles/editor
    

Criar uma instância resulta em um erro "Permissão negada"

Ao criar uma nova instância, verifique se o usuário que a cria tem a permissão iam.serviceAccounts.ActAs para a conta de serviço definida.

A conta de serviço na instância fornece acesso a outros serviços do Google Cloud. Embora seja possível usar qualquer conta de serviço no mesmo projeto, é necessário ter a permissão do usuário da conta de serviço (iam.serviceAccounts.actAs) para criar a instância. Se não for especificada, a conta de serviço padrão do Compute Engine será usada.

O exemplo a seguir mostra como especificar uma conta de serviço ao criar uma instância:

gcloud beta notebooks instances create nb-1 \
  --vm-image-project=deeplearning-platform-release \
  --vm-image-family=tf2-latest-cpu \
  --machine-type=n1-standard-1 \
  --service-account=your_service_account@project_id.iam.gserviceaccount.com \
  --location=us-west1-a

Para conceder a permissão do usuário da conta de serviço, consulte Como permitir que um membro personifique uma única conta de serviço.

Criar uma nova instância resulta em um erro "já existe"

Ao criar uma nova instância, verifique se uma instância do AI Platform Notebooks com o mesmo nome não foi excluída anteriormente pelo Compute Engine e ainda existe no banco de dados da API AI Platform Notebooks.

No exemplo a seguir, veja como listar instâncias usando a API AI Platform Notebooks e verificar o estado delas.

gcloud beta notebooks instances list --location=LOCATION

Se o estado de uma instância for DELETED, execute o comando a seguir para excluí-la permanentemente.

gcloud beta notebooks instances delete INSTANCE_NAME --location=LOCATION

O notebook não responde

Se a instância do notebook não estiver executando células ou parecer congelada, primeiro reinicie o kernel clicando em Kernel no menu superior e depois em Reiniciar o kernel. Se isso não funcionar, tente o seguinte:

  • Em uma sessão de terminal no notebook, execute top para ver se há processos que consomem a CPU
  • No terminal, verifique a quantidade de espaço livre em disco usando df ou a RAM disponível usando free.
  • Encerre sua instância selecionando-a na página Instâncias de notebook e clicando em Parar. Depois de parar completamente, selecione-o e clique em Iniciar.

Para registrar-se novamente com o serviço de proxy

Para registrar novamente os notebooks com o serviço de proxy, interrompa e inicie a VM na página de "Instâncias de notebook" ou faça login na instância do notebook via SSH 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 Docker, faça login na instância do notebook via SSH e digite:

sudo service docker status

Verifique se o agente do proxy do Docker está em execução

Para verificar se o agente de proxy do Docker dos notebooks está em execução, faça login na instância do notebook via SSH e digite:

# Confirm Docker proxy agent 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, faça login na instância do notebook via SSH 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

Para verificar se a API interna do Jupyter está ativa, faça login na instância do notebook via SSH e digite:

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

Reinicie o serviço do Docker

Para reiniciar o serviço do Docker, interrompa e inicie a VM na página de "Instâncias de notebook" ou faça login na instância do notebook via SSH e digite:

sudo service docker restart

Reinicie o agente de proxy do Docker

Para reiniciar o agente de proxy do Docker, interrompa e inicie a VM na página de "Instâncias de notebook" ou faça login na instância do notebook via SSH e digite:

sudo docker restart proxy-agent

Reiniciar o serviço Jupyter

Para reiniciar o serviço Jupyter, interrompa e inicie a VM na página de "Instâncias de notebook" ou faça login na instância do notebook via SSH e digite:

sudo service jupyter restart