Solucionar problemas de Vertex AI Workbench

En esta página, se describen los pasos para solucionar problemas que pueden servirte si tienes dificultades cuando usas Vertex AI Workbench.

Consulta también Solución de problemas de Vertex AI para obtener ayuda sobre cómo usar otros componentes de Vertex AI.

Para filtrar el contenido de esta página, haz clic en un tema:

Procedimientos útiles

En esta sección, se describen los procedimientos que pueden resultarte útiles.

Usa SSH para conectarte a tu instancia de notebooks administrados por el usuario.

Usa ssh a fin de conectarte a tu instancia heredada; para ello, escribe el siguiente comando en Cloud Shell o en cualquier entorno en el que esté instalada la Google Cloud CLI.

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

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • ZONE: La zona Google Cloud en la que se encuentra tu instancia
  • INSTANCE_NAME: el nombre de tu instancia.

También puedes conectarte a tu instancia si abres su página de detalles de Compute Engine y, luego, haces clic en el botón SSH.

Vuelve a registrarte con el servidor proxy de inversión.

Para volver a registrar la instancia de notebook administrado por el usuario con el servidor de proxy de inversión interno, puedes detener y volver a iniciar la VM desde la página de notebook administrados por el usuario o puedes usar SSH para conectarte a tu instancia de notebook administrado por el usuario y, luego, ingresar lo siguiente:

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

Verifica el estado del servicio de Docker

Si deseas verificar el estado del servicio de Docker, puedes usar SSH para conectarte a tu instancia de notebook administrado por el usuario y, luego, ingresar lo siguiente:

sudo service docker status

Verifica que el agente de proxy de inversión esté en ejecución

Para verificar si el agente del proxy de inversión del notebook está en ejecución, usa ssh para conectarte a la instancia de notebook administrado por el usuario y, luego, ingresa lo siguiente:

# 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 el estado del servicio de Jupyter y recopila registros

A fin de verificar el estado del servicio de Jupyter, puedes usar SSH para conectarte a tu instancia de notebook administrado por el usuario y, luego, ingresar lo siguiente:

sudo service jupyter status

Para recopilar registros del servicio de Jupyter, ingresa lo siguiente:

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

Verifica que la API interna de Jupyter esté activa

La API de Jupyter siempre debe ejecutarse en el puerto 8080. Para verificarlo, inspecciona los registros del sistema de la instancia en busca de una entrada similar a la siguiente:

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

Para verificar que la API interna de Jupyter esté activa, también puedes usar SSH para conectarte a tu instancia de notebook administrado por el usuario y, luego, ingresar lo siguiente:

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

También puedes medir el tiempo que tarda la API en responder en caso de que las solicitudes tarden demasiado:

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 ejecutar estos comandos en tu instancia de Vertex AI Workbench, abre JupyterLab y crea una terminal nueva.

Reinicia el servicio de Docker

Para reiniciar el servicio de Docker, puedes detener y volver a iniciar la VM en la página de notebooks administrados por el usuario o puedes usar SSH a fin de conectarte a la instancia de notebooks administrados por el usuario y, luego, ingresar lo siguiente:

sudo service docker restart

Reinicia el agente del proxy de inversión

Para reiniciar el agente de proxy de inversión, puedes detener y volver a iniciar la VM en la página de notebooks administrados por el usuario o puedes usar SSH a fin de conectarte a la instancia de notebooks administrados por el usuario y, luego, ingresar lo siguiente:

sudo docker restart proxy-agent

Reinicia el servicio de Jupyter

Para reiniciar el servicio de Jupyter, puedes detener y volver a iniciar la VM en la página de notebooks administrados por el usuario o puedes usar SSH a fin de conectarte a tu instancia de notebooks administrados por el usuario y, luego, ingresar lo siguiente:

sudo service jupyter restart

Reinicia el agente de recopilación de Notebooks

El servicio Notebooks Collection Agent ejecuta un proceso de Python en segundo plano que verifica el estado de los servicios principales de la instancia de Vertex AI Workbench.

Para reiniciar el servicio del agente de recopilación de notebooks, puedes detener y volver a iniciar la VM desde la consola deGoogle Cloud o puedes usar SSH para conectarte a tu instancia de Vertex AI Workbench y, luego, ingresar lo siguiente:

sudo systemctl stop notebooks-collection-agent.service

seguido de lo siguiente:

sudo systemctl start notebooks-collection-agent.service

Para ejecutar estos comandos en tu instancia de Vertex AI Workbench, abre JupyterLab y crea una terminal nueva.

Modifica la secuencia de comandos del agente de recopilación de Notebooks

Para acceder al script y editarlo, abre una terminal en nuestra instancia o usa SSH para conectarte a tu instancia de Vertex AI Workbench y, luego, ingresa lo siguiente:

nano /opt/deeplearning/bin/notebooks_collection_agent.py

Después de editar el archivo, recuerda guardarlo.

Luego, debes reiniciar el servicio del agente de recopilación de notebooks.

Verifica que la instancia pueda resolver los dominios DNS requeridos

Para verificar que la instancia pueda resolver los dominios DNS requeridos, puedes usar SSH para conectarte a tu instancia de notebooks administrados por el usuario y, luego, ingresar lo siguiente:

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

o:

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

Si la instancia tiene habilitado Dataproc, puedes verificar que la instancia resuelva *.kernels.googleusercontent.com ejecutando el siguiente comando:

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

Para ejecutar estos comandos en tu instancia de Vertex AI Workbench, abre JupyterLab y crea una terminal nueva.

Realiza una copia de los datos del usuario en una instancia

Para almacenar una copia de los datos del usuario de la instancia en Cloud Storage, completa los siguientes pasos.

Crea un bucket de Cloud Storage (opcional)

En el mismo proyecto en el que se encuentra la instancia, crea un bucket de Cloud Storage en el que puedas almacenar tus datos del usuario. Si ya tienes un bucket de Cloud Storage, omite este paso.

  • 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 los datos del usuario

    1. En la interfaz de JupyterLab de tu instancia, selecciona Archivo > Nuevo > Terminal para abrir una ventana de la terminal. En el caso de las instancias de notebooks administrados por el usuario, puedes conectarte a la terminal de tu instancia mediante SSH.

    2. Usa gcloud CLI para copiar tus datos del usuario en un bucket de Cloud Storage. Con el siguiente comando de ejemplo, se copian todos los archivos del directorio /home/jupyter/ de la instancia a un directorio en un bucket de Cloud Storage.

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

      Reemplaza lo siguiente:

      • BUCKET_NAME: el nombre de tu bucket de Cloud Storage.
      • PATH: La ruta de acceso al directorio en el que deseas copiar los archivos, por ejemplo: /copy/jupyter/.

    Investiga una instancia atascada en el aprovisionamiento con gcpdiag

    gcpdiag es una herramienta de código abierto. No es un producto Google Cloud compatible oficialmente. Puedes usar la herramienta gcpdiag para identificar y corregir Google Cloudproblemas del proyecto. Para obtener más información, consulta el proyecto en GitHub.

    En este runbook de gcpdiag, se investigan las posibles causas por las que una instancia de Vertex AI Workbench se queda atascada en el estado de aprovisionamiento, incluidas las siguientes áreas:
    • Estado: Verifica el estado actual de la instancia para asegurarse de que esté atascada en el aprovisionamiento y no detenida ni activa.
    • Imagen del disco de arranque de la VM de Compute Engine de la instancia: Verifica si la instancia se creó con un contenedor personalizado, una imagen oficial de workbench-instances, imágenes de VM de aprendizaje profundo o imágenes no compatibles que podrían hacer que la instancia se quede atascada en el estado de aprovisionamiento.
    • Secuencias de comandos personalizadas: Verifica si la instancia usa secuencias de comandos de inicio o posteriores al inicio personalizadas que cambian el puerto predeterminado de Jupyter o interrumpen dependencias que podrían hacer que la instancia se quede atascada en el estado de aprovisionamiento.
    • Versión del entorno: Verifica si la instancia usa la versión más reciente del entorno comprobando si se puede actualizar. Las versiones anteriores pueden hacer que la instancia se quede atascada en el estado de aprovisionamiento.
    • Rendimiento de la VM de Compute Engine de la instancia: Verifica el rendimiento actual de la VM para garantizar que no se vea afectado por un uso elevado de la CPU, memoria insuficiente o problemas de espacio en disco que puedan interrumpir las operaciones normales.
    • Registro del sistema o del puerto en serie de Compute Engine de la instancia: Verifica si la instancia tiene registros del puerto en serie, que se analizan para garantizar que Jupyter se ejecute en el puerto 127.0.0.1:8080.
    • Acceso a la terminal y a SSH de Compute Engine de la instancia: Verifica si la VM de Compute Engine de la instancia se está ejecutando para que el usuario pueda acceder a ella a través de SSH y abrir una terminal para verificar que el uso del espacio en "home/jupyter" sea inferior al 85%. Si no queda espacio, es posible que la instancia se quede atascada en el estado de aprovisionamiento.
    • IP externa desactivada: Verifica si el acceso a la IP externa está desactivado. Una configuración de red incorrecta puede hacer que la instancia se quede atascada en el estado de aprovisionamiento.

    Google Cloud console

    1. Completa y, luego, copia el siguiente comando.
    2. gcpdiag runbook vertex/workbench-instance-stuck-in-provisioning \
          --parameter project_id=PROJECT_ID \
          --parameter instance_name=INSTANCE_NAME \
          --parameter zone=ZONE
    3. Abre la Google Cloud consola y activa Cloud Shell.
    4. Abre la consola de Cloud
    5. Pega el comando copiado.
    6. Ejecuta el comando gcpdiag, que descarga la imagen de Docker gcpdiag y, luego, realiza verificaciones de diagnóstico. Si corresponde, sigue las instrucciones de salida para corregir las verificaciones que fallaron.

    Docker

    Puedes ejecutar gcpdiag con un wrapper que inicie gcpdiag en un contenedor de Docker. Se debe instalar Docker o Podman.

    1. Copia y ejecuta el siguiente comando en tu estación de trabajo local.
      curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
    2. Ejecuta el comando gcpdiag.
      ./gcpdiag runbook vertex/workbench-instance-stuck-in-provisioning \
          --parameter project_id=PROJECT_ID \
          --parameter instance_name=INSTANCE_NAME \
          --parameter zone=ZONE

    Consulta los parámetros disponibles para este runbook.

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto que contiene el recurso.
    • INSTANCE_NAME: Es el nombre de la instancia de Vertex AI Workbench de destino dentro de tu proyecto.
    • ZONE: Es la zona en la que se encuentra tu instancia de Vertex AI Workbench de destino.

    Marcas útiles:

    Para obtener una lista y una descripción de todas las marcas de la herramienta gcpdiag, consulta las instrucciones de uso de gcpdiag.

    Errores de permisos cuando se usan roles de cuentas de servicio con Vertex AI

    Problema

    Recibes errores generales de permisos cuando usas roles de cuentas de servicio con Vertex AI.

    Estos errores pueden aparecer en Cloud Logging, ya sea en los registros de componentes del producto o en los registros de auditoría. También pueden aparecer en cualquier combinación de los proyectos afectados.

    Estos problemas pueden deberse a uno o ambos de los siguientes motivos:

    • Uso del rol Service Account Token Creator cuando se debería haber usado el rol Service Account User, o viceversa Estos roles otorgan diferentes permisos en una cuenta de servicio y no son intercambiables. Para obtener información sobre las diferencias entre los roles de Service Account Token Creator y Service Account User, consulta Roles de cuentas de servicio.

    • Otorgaste permisos a una cuenta de servicio en varios proyectos, lo que no se permite de forma predeterminada.

    Solución

    Para resolver el problema, prueba una o más de las siguientes opciones:

    • Determina si se necesita el rol de Service Account Token Creator o Service Account User. Para obtener más información, lee la documentación de IAM para los servicios de Vertex AI que usas, así como cualquier otra integración de productos que utilices.

    • Si otorgaste permisos a una cuenta de servicio en varios proyectos, habilita las cuentas de servicio para que se puedan adjuntar en todos los proyectos. Para ello, asegúrate de que iam.disableCrossProjectServiceAccountUsage. no se aplica de manera forzosa. Para asegurarte de que iam.disableCrossProjectServiceAccountUsage no se aplique, ejecuta el siguiente comando:

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