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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Update and install
gcloud
components:gcloud components update
gcloud components install beta -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Update and install
gcloud
components:gcloud components update
gcloud components install beta - 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. - 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 usarsudo
:sudo usermod -a -G docker ${USER}
Es posible que debas reiniciar tu sistema después de agregarte al grupo
docker
. - 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
- Usa
gcloud
como auxiliar de credenciales para Docker:gcloud auth configure-docker
- 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.
-
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
-
Comprueba el nombre del bucket que creaste.
echo $BUCKET_NAME
-
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 comous-central1
:REGION=us-central1
-
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: como sigue:
- En Servicio, selecciona API de Vertex AI.
- En Región, selecciona la región que deseas filtrar.
- 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:
Una vez habilitada, comienza a crear un repositorio nuevo haciendo clic en CREAR REPOSITORIO:
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.
Esto debería crear el repositorio de Docker que deseas, como se muestra a continuación:
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.
Configura las variables de entorno básicas:
gcloud config set project PROJECT_ID gcloud auth login gcloud auth application-default login
Configura la autenticación de Docker para Artifact Registry:
# example: REGION=europe-west4 gcloud auth configure-docker REGION-docker.pkg.dev
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
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.
Crear una cuenta de servicio:
gcloud iam service-accounts create NAME \ --description=DESCRIPTION \ --display-name=DISPLAY_NAME
Asigna los roles
aiplatform.user
ystorage.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.
Abre una nueva terminal de Shell.
Ejecuta el comando de clonación de Git:
git clone https://github.com/google/vertex-ai-nas.git