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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  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. Make sure that billing is enabled for your Google Cloud project.

  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, este no se iniciará y mostrará un error similar al 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 a 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 creas una solicitud de cuota, recibes 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 aproximadamente de dos a cinco días hábiles. 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. La aprobación de una cuota de CPU puede demorar hasta dos días hábiles. 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 que elijas una región diferente o 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 Registro de artefactos de tu proyecto. Si aún no está habilitado, primero habilita la API de Artifact Registry para tu proyecto:

Habilita Artifact Registry

Una vez habilitada, comienza a crear un repositorio nuevo haciendo clic en CREAR REPOSITORIO:

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 del registro de artefactos

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

Se creó el registro de artefactos

También debes configurar la autenticación para enviar contenedores a este repositorio. La sección de configuración del entorno local que aparece 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