Cómo configurar tu entorno

Para configurar un entorno antes de iniciar un experimento de Búsqueda neuronal de arquitectura de Vertex, sigue las secciones a continuación.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Enable the Vertex AI API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. Update and install gcloud components:

    gcloud components update
    gcloud components install beta
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  10. Enable the Vertex AI API.

    Enable the API

  11. Install the Google Cloud CLI.
  12. To initialize the gcloud CLI, run the following command:

    gcloud init
  13. Update and install gcloud components:

    gcloud components update
    gcloud components install beta
  14. Para otorgar a todos los usuarios de Neural Architecture Search el rol Usuario de Vertex AI (roles/aiplatform.user), comunícate con el administrador de tu proyecto.
  15. Instala Docker.

    Si usas un sistema operativo basado en Linux, como Ubuntu o Debian, agrega tu nombre de usuario al grupo docker para que puedas ejecutar Docker sin usar sudo:

    sudo usermod -a -G docker ${USER}
    

    Es posible que debas reiniciar tu sistema después de agregarte al grupo docker.

  16. Abre Docker. Para garantizar que Docker esté en funcionamiento, ejecuta el siguiente comando de Docker, que muestra la hora y la fecha actuales:
    docker run busybox date
  17. Usa gcloud como auxiliar de credenciales para Docker:
    gcloud auth configure-docker
  18. Opcional: Si deseas ejecutar el contenedor con GPU de forma local, instala nvidia-docker.

Configura tu bucket de Cloud Storage

En esta sección, se muestra cómo crear un bucket nuevo. Puedes usar un bucket existente, pero debe estar en la misma región en la que ejecutas los trabajos de AI Platform. Además, si no forma parte del proyecto que usas para ejecutar Neural Architecture Search, debes otorgar acceso explícito a las cuentas de servicio de Neural Architecture Search.

  1. Especifica un nombre para el bucket nuevo. El nombre debe ser único en todos los depósitos en Cloud Storage.

    BUCKET_NAME="YOUR_BUCKET_NAME"

    Por ejemplo, usa el nombre de tu proyecto con -vertexai-nas agregado:

    PROJECT_ID="YOUR_PROJECT_ID"
    BUCKET_NAME=${PROJECT_ID}-vertexai-nas
  2. Comprueba el nombre del bucket que creaste.

    echo $BUCKET_NAME
  3. Selecciona una región para tu bucket y establece una variable de entorno REGION.

    Usa la misma región en la que planeas ejecutar los trabajos de Neural Architecture Search.

    Por ejemplo, con el código siguiente, se crea una REGION y se configura como us-central1:

    REGION=us-central1
  4. Crea el bucket nuevo:

    gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION

Solicita una cuota de dispositivo adicional para el proyecto

Los instructivos usan aproximadamente cinco máquinas de CPU y no requieren ninguna cuota adicional. Después de ejecutar los instructivos, ejecuta tu trabajo de Búsqueda de arquitectura neuronal.

El trabajo de Búsqueda de arquitectura neuronal entrena un lote de modelos en paralelo. Cada modelo entrenado corresponde a una prueba. Lee la sección sobre cómo configurar number-of-parallel-trials para estimar la cantidad de CPU y GPU necesarias para un trabajo de búsqueda. Por ejemplo, si cada prueba usa 2 GPUs T4 y estableces number-of-parallel-trials en 20, necesitas una cuota total de 40 GPUs T4 para un trabajo de búsqueda. Además, si cada prueba usa una CPU highmem-16, entonces necesitas 16 unidades de CPU por prueba, que es 320 unidades de CPU para 20 pruebas paralelas. Sin embargo, pedimos un mínimo de 10 cuotas de prueba paralelas (o 20 cuotas de GPU). La cuota inicial predeterminada para las GPUs varía según la región y el tipo de GPU y, por lo general, es 0, 6 o 12 para Tesla_T4, y 0 o 6 para Tesla_V100. La cuota inicial predeterminada para las CPUs varía según la región y, por lo general, se encuentra en 20, 450 o 2,200.

Opcional: Si planeas ejecutar varios trabajos de búsqueda en paralelo, escala el requisito de cuota. Solicita una cuota no te cobra de inmediato. Se te cobrará una vez que ejecutes un trabajo.

Si no tienes suficiente cuota y tratas de iniciar un trabajo que necesita más recursos que tu cuota, el trabajo no se iniciará y mostrará un error como el siguiente:

Exception: Starting job failed: {'code': 429, 'message': 'The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd', 'status': 'RESOURCE_EXHAUSTED', 'details': [{'@type': 'type.googleapis.com/google.rpc.DebugInfo', 'detail': '[ORIGINAL ERROR] generic::resource_exhausted: com.google.cloud.ai.platform.common.errors.AiPlatformException: code=RESOURCE_EXHAUSTED, message=The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd, cause=null [google.rpc.error_details_ext] { code: 8 message: "The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd" }'}]}

En algunos casos, si varios trabajos para el mismo proyecto se iniciaron al mismo tiempo y la cuota no es suficiente para todos ellos, uno de los trabajos permanece en el estado en cola y no comenzará el entrenamiento. En este caso, cancela el trabajo en cola y solicita más cuota o espera hasta que finalice el trabajo anterior.

Luego, puedes solicitar la cuota adicional del dispositivo desde la página Cuotas. Puedes aplicar filtros a fin de buscar la cuota deseada para editar: Filtra cuotas como sigue:

  1. En Servicio, selecciona API de Vertex AI.
  2. En Región, selecciona la región que deseas filtrar.
  3. En Cuota, selecciona un nombre de acelerador cuyo prefijo sea Entrenamiento de modelos personalizados.
    • En el caso de las GPU V100, el valor es GPU Nvidia V100 personalizadas de entrenamiento de modelos por región.
    • En el caso de las CPU, el valor puede ser CPU de entrenamiento de modelos personalizados para tipos de máquinas N1/E2 por región. La cantidad de CPU representa la unidad de CPU. Si deseas 8 CPU highmem-16, realiza la solicitud de cuota para 8 * 16 = 128 unidades de CPU. También ingresa el valor deseado para la región.

Una vez que crees una solicitud de cuota, recibirás un Case number y correos electrónicos de seguimiento sobre el estado de la solicitud. La aprobación de una cuota de GPU puede tardar entre dos y cinco días hábiles en obtenerse. En general, obtener la aprobación de una cuota de alrededor de 20 o 30 GPUs debería ser más rápido en alrededor de dos o tres días, y la aprobación para alrededor de 100 GPUs puede tardar cinco días hábiles. Una aprobación de cuota de CPU puede tardar hasta dos días hábiles en obtenerse. Sin embargo, si una región experimenta una gran escasez de un tipo de GPU, no hay garantía, incluso con una solicitud de cuota pequeña. En este caso, es posible que se te solicite ir a una región diferente o a un tipo de GPU diferente. En general, las GPUs T4 son más fáciles de obtener que V100s. Las GPUs T4 tardan más tiempo, pero son más rentables.

Para obtener más información, consulta Solicita un límite de cuota mayor.

Configura Artifact Registry para tu proyecto

Debes configurar un Artifact Registry para tu proyecto y región en el que envías las imágenes de Docker.

Ve a la página de Artifact Registry de tu proyecto. Si aún no está habilitado, primero habilita la API de Artifact Registry para tu proyecto:

Habilita Artifact Registry

Una vez habilitado, haz clic en CREAR REPOSITORIO para comenzar a crear un repositorio nuevo:

Crea un Artifact Registry

Elige Nombre como nas, Formato como Docker y Tipo de ubicación. como Región. En Región, selecciona la ubicación en la que ejecutas tus trabajos y, luego, haz clic en CREAR.

Configuración de Artifact Registry

Esto debería crear el repositorio de Docker deseado, como se muestra a continuación:

Se creó Artifact Registry

También debes configurar la autenticación para enviar Docker a este repositorio. La sección de configuración del entorno local a continuación contiene este paso.

Cómo configurar tu entorno local

Puedes ejecutar estos pasos mediante la shell de Bash en tu entorno local o en una instancia de notebooks administrados por el usuario de Vertex AI Workbench.

  1. Configura las variables de entorno básicas:

    gcloud config set project PROJECT_ID
    gcloud auth login
    gcloud auth application-default login
    
  2. Configura la autenticación de Docker para Artifact Registry:

    # example: REGION=europe-west4
    gcloud auth configure-docker REGION-docker.pkg.dev
    
  3. Configura un entorno virtual de Python 3 (opcional). Se recomienda el uso de Python 3, pero no es obligatorio:

    sudo apt install python3-pip && \
    pip3 install virtualenv && \
    python3 -m venv --system-site-packages ~/./nas_venv && \
    source ~/./nas_venv/bin/activate
    
  4. Instala bibliotecas adicionales.

    pip install google-cloud-storage==2.6.0
    pip install pyglove==0.1.0
    

Configurar una cuenta de servicio

Se debe configurar una cuenta de servicio para ejecutar trabajos de NAS. Puedes ejecutar estos pasos mediante la shell de Bash en tu entorno local o en una instancia de notebooks administrados por el usuario de Vertex AI Workbench.

  1. Crear una cuenta de servicio:

    gcloud iam service-accounts create NAME \
        --description=DESCRIPTION \
        --display-name=DISPLAY_NAME
    
  2. Asigna los roles aiplatform.user y storage.objectAdmin a la cuenta de servicio:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/aiplatform.user
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/storage.objectAdmin
    

Por ejemplo, con los siguientes comandos, se crea una cuenta de servicio llamada my-nas-sa en el proyecto my-nas-project con los roles aiplatform.user y storage.objectAdmin:

  gcloud iam service-accounts create my-nas-sa \
      --description="Service account for NAS" \
      --display-name="NAS service account"
  gcloud projects add-iam-policy-binding my-nas-project \
      --member=serviceAccount:my-nas-sa@my-nas-project.iam.gserviceaccount.com \
      --role=roles/aiplatform.user
  gcloud projects add-iam-policy-binding my-nas-project \
      --member=serviceAccount:my-nas-sa@my-nas-project.iam.gserviceaccount.com \
      --role=roles/storage.objectAdmin

Descargar el código

Para iniciar un experimento de Neural Architecture Search, debes descargar el código de muestra de Python, que incluye entrenadores compilados previamente, definiciones de espacio de búsqueda y bibliotecas cliente asociadas.

Ejecuta los siguientes pasos para descargar el código fuente.

  1. Abre una nueva terminal de Shell.

  2. Ejecuta el comando de clonación de Git:

    git clone https://github.com/google/vertex-ai-nas.git