Risoluzione dei problemi di Vertex AI Workbench

Questa pagina descrive i passaggi per la risoluzione dei problemi, utili in caso di problemi nell'utilizzo di Vertex AI Workbench.

Consulta anche la sezione Risoluzione dei problemi di Vertex AI per assistenza nell'utilizzo di altri componenti di Vertex AI.

Per filtrare i contenuti di questa pagina, fai clic su un argomento:

Procedure utili

Questa sezione descrive le procedure che potresti trovare utili.

Utilizzare SSH per connettersi all'istanza di blocchi note gestiti dall'utente

Utilizza ssh per connetterti all'istanza digitando il seguente comando in Cloud Shell o in qualsiasi ambiente in cui è installata Google Cloud CLI.

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

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • ZONE: la Google Cloud zona in cui si trova l'istanza
  • INSTANCE_NAME: il nome dell'istanza

Puoi anche connetterti all'istanza aprendo la pagina dei dettagli di Compute Engine e facendo clic sul pulsante SSH.

Esegui nuovamente la registrazione con il server Inverting Proxy

Per registrare nuovamente l'istanza di blocchi note gestiti dall'utente con il server proxy inverso interno, puoi arrestare e avviare la VM dalla pagina Blocchi note gestiti dall'utente oppure puoi utilizzare SSH per connetterti all'istanza di blocchi note gestiti dall'utente e inserire:

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

Verifica lo stato del servizio Docker

Per verificare lo stato del servizio Docker, puoi utilizzare SSH per connetterti all'istanza di notebook gestiti dall'utente e inserire:

sudo service docker status

Verifica che l'agente Inverting Proxy sia in esecuzione

Per verificare se l'agente Inverting Proxy del notebook è in esecuzione, utilizza SSH per connetterti all'istanza di notebook gestiti dall'utente e inserisci:

# 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

Verifica lo stato del servizio Jupyter e raccogli i log

Per verificare lo stato del servizio Jupyter, puoi utilizzare SSH per connetterti all'istanza di blocchi note gestiti dall'utente e inserire:

sudo service jupyter status

Per raccogliere i log del servizio Jupyter:

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

Verifica che l'API interna Jupyter sia attiva

L'API Jupyter deve essere sempre eseguita sulla porta 8080. Puoi verificarlo controllando i syslogs dell'istanza per una voce simile a:

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

Per verificare che l'API Jupyter interna sia attiva, puoi anche utilizzare SSH per connetterti all'istanza di blocchi note gestiti dall'utente e inserire:

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

Puoi anche misurare il tempo necessario all'API per rispondere nel caso in cui le richieste richiedano troppo 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

Per eseguire questi comandi nell'istanza Vertex AI Workbench, apri JupyterLab e crea un nuovo terminale.

Riavvia il servizio Docker

Per riavviare il servizio Docker, puoi arrestare e avviare la VM dalla pagina Notebook gestiti dall'utente oppure puoi utilizzare SSH per connetterti all'istanza di notebook gestiti dall'utente e inserire:

sudo service docker restart

Riavvia l'agente Inverting Proxy

Per riavviare l'agente proxy inverso, puoi arrestare e avviare la VM dalla pagina User-managed notebooks oppure puoi utilizzare SSH per connetterti all'istanza User-managed notebooks e inserire:

sudo docker restart proxy-agent

Riavvia il servizio Jupyter

Per riavviare il servizio Jupyter, puoi arrestare e avviare la VM dalla pagina Blocchi note gestiti dall'utente oppure puoi utilizzare SSH per connetterti all'istanza di blocchi note gestiti dall'utente e inserire:

sudo service jupyter restart

Riavvia l'agente di raccolta dei notebook

Il servizio Notebooks Collection Agent esegue un processo Python in background che verifica lo stato dei servizi principali dell'istanza Vertex AI Workbench.

Per riavviare il servizio dell'agente di raccolta dei notebook, puoi arrestare e avviare la VM dalla console oppure puoi utilizzare SSH per connetterti all'istanza Vertex AI Workbench e inserire:Google Cloud

sudo systemctl stop notebooks-collection-agent.service

seguito da:

sudo systemctl start notebooks-collection-agent.service

Per eseguire questi comandi nell'istanza Vertex AI Workbench, apri JupyterLab e crea un nuovo terminale.

Modifica lo script dell'agente di raccolta dei notebook

Per accedere allo script e modificarlo, apri un terminale nella nostra istanza o utilizza SSH per connetterti all'istanza di Vertex AI Workbench e inserisci:

nano /opt/deeplearning/bin/notebooks_collection_agent.py

Dopo aver modificato il file, ricordati di salvarlo.

Dopodiché, devi riavviare il servizio dell'agente di raccolta dei blocchi note.

Verifica che l'istanza possa risolvere i domini DNS richiesti

Per verificare che l'istanza possa risolvere i domini DNS richiesti, puoi utilizzare SSH per connetterti all'istanza di blocchi note gestiti dall'utente e inserire:

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

oppure:

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

Se l'istanza ha Dataproc abilitato, puoi verificare che l'istanza risolva *.kernels.googleusercontent.com eseguendo:

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

Per eseguire questi comandi nell'istanza Vertex AI Workbench, apri JupyterLab e crea un nuovo terminale.

Crea una copia dei dati utente su un'istanza

Per archiviare una copia dei dati utente di un'istanza in Cloud Storage, completa i seguenti passaggi.

(Facoltativo) Crea un bucket Cloud Storage

Nello stesso progetto in cui si trova l'istanza, crea un bucket Cloud Storage in cui archiviare i dati utente. Se hai già un bucket Cloud Storage, salta questo passaggio.

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

    Copia i dati utente

    1. Nell'interfaccia JupyterLab della tua istanza, seleziona File > Nuovo > Terminale per aprire una finestra del terminale. Per le istanze di notebook gestiti dall'utente, puoi invece connetterti al terminale dell'istanza utilizzando SSH.

    2. Utilizza gcloud CLI per copiare i dati utente in un bucket Cloud Storage. Il seguente comando di esempio copia tutti i file dalla directory /home/jupyter/ dell'istanza in una directory di un bucket Cloud Storage.

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

      Sostituisci quanto segue:

      • BUCKET_NAME: il nome del bucket Cloud Storage
      • PATH: il percorso della directory in cui vuoi copiare i file, ad esempio: /copy/jupyter/

    Analizza un'istanza bloccata nel provisioning utilizzando gcpdiag

    gcpdiag è uno strumento open source. Non è un prodotto Google Cloud supportato ufficialmente. Puoi utilizzare lo strumento gcpdiag per identificare e risolvere Google Cloud i problemi del progetto. Per maggiori informazioni, consulta il progetto gcpdiag su GitHub.

    Questo gcpdiag runbook esamina le potenziali cause per cui un'istanza di Vertex AI Workbench rimane bloccata nello stato di provisioning, tra cui le seguenti aree:
    • Stato: controlla lo stato attuale dell'istanza per assicurarsi che sia bloccata nel provisioning e non arrestata o attiva.
    • Immagine disco di avvio della VM Compute Engine dell'istanza: Verifica se l'istanza è stata creata con un container personalizzato, un'immagine workbench-instances ufficiale, Deep Learning VM Images o immagini non supportate che potrebbero causare il blocco dell'istanza nello stato di provisioning.
    • Script personalizzati: controlla se l'istanza utilizza script di avvio o post-avvio personalizzati che modificano la porta Jupyter predefinita o interrompono le dipendenze che potrebbero causare il blocco dell'istanza nello stato di provisioning.
    • Versione dell'ambiente: verifica se l'istanza utilizza l'ultima versione dell'ambiente controllando la sua possibilità di upgrade. Le versioni precedenti potrebbero causare il blocco dell'istanza nello stato di provisioning.
    • Prestazioni della VM Compute Engine dell'istanza: Controlla le prestazioni attuali della VM per assicurarsi che non siano compromesse da un elevato utilizzo della CPU, memoria insufficiente o problemi di spazio su disco che potrebbero interrompere le normali operazioni.
    • Porta seriale di Compute Engine o logging di sistema dell'istanza: controlla se l'istanza ha log della porta seriale, che vengono analizzati per assicurarsi che Jupyter sia in esecuzione sulla porta 127.0.0.1:8080.
    • Accesso SSH e al terminale di Compute Engine dell'istanza: verifica se la VM Compute Engine dell'istanza è in esecuzione in modo che l'utente possa utilizzare SSH e aprire un terminale per verificare che l'utilizzo dello spazio in "home/jupyter" sia inferiore all'85%. Se non è rimasto spazio, l'istanza potrebbe bloccarsi nello stato di provisioning.
    • IP esterno disattivato: verifica se l'accesso all'IP esterno è disattivato. Una configurazione di rete errata può causare il blocco dell'istanza nello stato di provisioning.

    Google Cloud console

    1. Completa e copia il seguente comando.
    2. gcpdiag runbook vertex/workbench-instance-stuck-in-provisioning \
          --parameter project_id=PROJECT_ID \
          --parameter instance_name=INSTANCE_NAME \
          --parameter zone=ZONE
    3. Apri la console Google Cloud e attiva Cloud Shell.
    4. Apri Cloud Console
    5. Incolla il comando copiato.
    6. Esegui il comando gcpdiag, che scarica l'immagine Docker gcpdiag e poi esegue i controlli diagnostici. Se applicabile, segui le istruzioni di output per correggere i controlli non riusciti.

    Docker

    Puoi eseguire gcpdiag utilizzando un wrapper che avvia gcpdiag in un container Docker. È necessario installare Docker o Podman.

    1. Copia ed esegui il seguente comando sulla tua workstation locale.
      curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
    2. Esegui il comando gcpdiag.
      ./gcpdiag runbook vertex/workbench-instance-stuck-in-provisioning \
          --parameter project_id=PROJECT_ID \
          --parameter instance_name=INSTANCE_NAME \
          --parameter zone=ZONE

    Visualizza i parametri disponibili per questo runbook.

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto contenente la risorsa.
    • INSTANCE_NAME: il nome dell'istanza di Vertex AI Workbench di destinazione all'interno del progetto.
    • ZONE: la zona in cui si trova l'istanza di Vertex AI Workbench di destinazione.

    Flag utili:

    Per un elenco e una descrizione di tutti i flag dello strumento gcpdiag, consulta le istruzioni per l'utilizzo di gcpdiag.

    Errori di autorizzazione durante l'utilizzo dei ruoli dell'account di servizio con Vertex AI

    Problema

    Quando utilizzi i ruoli del account di servizio con Vertex AI, si verificano errori di autorizzazione generali.

    Questi errori possono essere visualizzati in Cloud Logging nei log dei componenti del prodotto o nei log di controllo. Potrebbero anche essere visualizzati in qualsiasi combinazione dei progetti interessati.

    Questi problemi possono essere causati da uno o entrambi i seguenti motivi:

    • Utilizzo del ruolo Service Account Token Creator quando avrebbe dovuto essere utilizzato il ruolo Service Account User o viceversa. Questi ruoli concedono autorizzazioni diverse su un account di servizio e non sono intercambiabili. Per scoprire le differenze tra i ruoli Service Account Token Creator e Service Account User, consulta Ruoli degli account di servizio.

    • Hai concesso a un account di servizio autorizzazioni per più progetti, il che non è consentito per impostazione predefinita.

    Soluzione:

    Per risolvere il problema, prova una o più delle seguenti soluzioni:

    • Determina se è necessario il ruolo Service Account Token Creator o Service Account User. Per saperne di più, leggi la documentazione di IAM per i servizi Vertex AI che utilizzi, nonché per qualsiasi altra integrazione di prodotto che utilizzi.

    • Se hai concesso a un account di servizio autorizzazioni per più progetti, consenti l'allegato dei service account a più progetti assicurandoti che iam.disableCrossProjectServiceAccountUsage. non è applicata in modo forzato. Per assicurarti che iam.disableCrossProjectServiceAccountUsage non sia applicato, esegui questo comando:

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