Configurer votre environnement

Configurez un environnement avant de lancer un test Vertex AI Neural Architecture Search en suivant les sections ci-dessous.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activez Vertex AI API.

    Activer l'API

  5. Installez Google Cloud CLI.
  6. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  7. Mettez à jour et installez les composants gcloud :
    gcloud components update
    gcloud components install beta
  8. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  9. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  10. Activez Vertex AI API.

    Activer l'API

  11. Installez Google Cloud CLI.
  12. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  13. Mettez à jour et installez les composants gcloud :
    gcloud components update
    gcloud components install beta
  14. Pour accorder à tous les utilisateurs de Neural Architecture Search le rôle Utilisateur de Vertex AI (roles/aiplatform.user), contactez votre administrateur de projet.
  15. Installez Docker.

    Si vous utilisez un système d'exploitation Linux, tel qu'Ubuntu ou Debian, ajoutez votre nom d'utilisateur au groupe docker afin de pouvoir exécuter Docker sans utiliser sudo :

    sudo usermod -a -G docker ${USER}
    

    Une fois que vous vous serez ajouté au groupe docker, vous devrez peut-être redémarrer votre système.

  16. Ouvrez Docker. Pour vérifier que Docker est en cours d'exécution, exécutez la commande Docker suivante, qui renvoie la date et l'heure actuelles :
    docker run busybox date
  17. Utilisez gcloud comme assistant d'identification pour Docker :
    gcloud auth configure-docker
  18. Facultatif : Si vous souhaitez exécuter le conteneur à l'aide d'un GPU en local, installez nvidia-docker.

Configurer un bucket Cloud Storage

Vous trouverez dans cette section la procédure à suivre pour créer un bucket. Vous pouvez utiliser un bucket existant, mais il doit se trouver dans la même région que celle où vous exécutez des tâches AI Platform. En outre, s'il ne fait pas partie du projet que vous utilisez pour exécuter Neural Architecture Search, vous devez explicitement accorder l'accès aux comptes de service Neural Architecture Search.

  1. Indiquez un nom pour votre nouveau bucket. Ce nom doit être unique par rapport à tous les buckets dans Cloud Storage.

    BUCKET_NAME="YOUR_BUCKET_NAME"

    Par exemple, vous pouvez utiliser le nom de votre projet en ajoutant -vertexai-nas :

    PROJECT_ID="YOUR_PROJECT_ID"
    BUCKET_NAME=${PROJECT_ID}-vertexai-nas
  2. Vérifiez le nom du bucket que vous avez créé.

    echo $BUCKET_NAME
  3. Sélectionnez une région pour votre bucket, puis définissez une variable d'environnement REGION.

    Utilisez la même région que celle où vous prévoyez d'exécuter des tâches Neural Architecture Search.

    Par exemple, le code suivant crée la variable REGION et la définit sur us-central1 :

    REGION=us-central1
  4. Créez le bucket :

    gsutil mb -l $REGION gs://$BUCKET_NAME

Demander un quota d'appareils supplémentaire pour le projet

Les tutoriels utilisent environ cinq processeurs et ne nécessitent aucun quota supplémentaire. Après avoir exécuté les tutoriels, exécutez votre tâche Neural Architecture Search.

La tâche Neural Architecture Search entraîne un lot de modèles en parallèle. Chaque modèle entraîné correspond à un essai. Lisez la section sur la définition de number-of-parallel-trials pour estimer la quantité de processeurs et de GPU nécessaire à une tâche de recherche. Par exemple, si chaque essai utilise deux GPU T4 et que vous définissez number-of-parallel-trials sur 20, vous avez besoin d'un quota total de 40 GPU T4 pour une tâche de recherche. En outre, si chaque essai utilise un processeur highmem-16, vous avez besoin de 16 unités de processeur par essai, soit 320 unités de processeur pour 20 essais parallèles. Toutefois, nous demandons un minimum de 10 quotas d'essais parallèles (ou 20 quotas de GPU). Le quota initial de GPU par défaut varie selon la région et le type de GPU. Il est généralement égal à 0, 6 ou 12 pour Tesla_T4, et à 0 ou 6 pour Tesla_V100. Le quota initial de processeurs par défaut varie selon les régions. Il est généralement de 20, 450 ou 2 200.

Facultatif: Si vous envisagez d'exécuter plusieurs tâches de recherche en parallèle, effectuez un scaling des exigences de quota. Vous n'êtes pas facturé immédiatement à la demande de quota. Vous êtes facturé une fois que vous avez exécuté une tâche.

Si vous ne disposez pas d'un quota suffisant et que vous essayez de lancer une tâche qui nécessite plus de ressources que votre quota, la tâche ne lancera pas d'erreur semblable à celle-ci:

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" }'}]}

Dans certains cas, si plusieurs tâches du même projet ont été démarrées en même temps et que le quota n'est pas suffisant pour toutes, l'une des tâches reste en file d'attente et ne commence pas l'entraînement. Dans ce cas, annulez la tâche en file d'attente et demandez plus de quota ou attendez la fin de la tâche précédente.

Vous pouvez ensuite demander un quota d'appareils supplémentaire à partir de la page Quotas. Vous pouvez également appliquer des filtres pour trouver le quota à modifier :Quota de filtres

  1. Dans le champ Service, sélectionnez API Vertex AI.
  2. Dans le champ Région, sélectionnez la région dans laquelle vous souhaitez appliquer des filtres.
  3. Dans le champ Quota, sélectionnez un nom d'accélérateur dont le préfixe est Entraînement de modèle personnalisé.
    • Pour les GPU V100, la valeur est définie sur GPU Nvidia V100 pour l'entraînement de modèles personnalisés par région.
    • Pour les processeurs, la valeur peut être Processeurs pour l'entraînement de modèles personnalisés pour les types de machines N1/E2 par région. Le nombre de processeurs représente l'unité de processeur. Si vous voulez huit processeurs highmem-16, envoyez une demande de quota pour 8 * 16 = 128 unités de processeur. Saisissez également la valeur souhaitée pour la région.

Une fois que vous avez créé une demande de quota, vous recevez un Case number ainsi que des e-mails de suivi de l'état de votre demande. L'approbation d'un quota de GPU peut prendre deux à cinq jours ouvrés. En général, l'obtention d'un quota d'environ 20 à 30 GPU est plus rapide et intervient dans un délai de deux à trois jours environ, et l'approbation d'environ 100 GPU peut prendre cinq jours ouvrés. L'approbation d'un quota de processeurs peut prendre jusqu'à deux jours ouvrés. Toutefois, si une région rencontre un manque de ressources GPU, il n'y a aucune garantie, même avec une faible demande de quota. Dans ce cas, vous serez peut-être invité à choisir une autre région ou un autre type de GPU. En général, les GPU T4 sont plus faciles à obtenir que les V100. Les GPU T4 prennent plus de temps, mais sont plus rentables.

Pour plus d'informations, consultez la page Demander une limite de quota supérieure.

Configurer Artifact Registry pour votre projet

Vous devez configurer un dépôt Artifact Registry pour votre projet et la région dans laquelle vous transférez vos images Docker.

Accédez à la page Artifact Registry de votre projet. Si ce n'est pas déjà fait, commencez par activer l'API Artifact Registry pour votre projet :

Activer Artifact Registry

Une fois l'API activée, commencez par créer un dépôt en cliquant sur CRÉER UN DÉPÔT :

Créer un dépôt Artifact Registry

Définissez comme Nom la valeur nas, comme Format la valeur Docker et comme Type d'emplacement la valeur Région. Pour la Région, choisissez l'emplacement où vous exécutez vos tâches, puis cliquez sur CRÉER.

Paramètres pour Artifact Registry

Cela doit créer le dépôt Docker souhaité comme indiqué ci-dessous :

Dépôt Artifact Registry créé

Vous devez également configurer l'authentification pour transférer les images Docker vers ce dépôt. La section Configurer votre environnement local ci-dessous inclut cette étape.

Configurer votre environnement local

Vous pouvez exécuter ces étapes à l'aide du shell Bash dans votre environnement local ou les exécuter dans une instance de notebooks gérés par l'utilisateur Vertex AI Workbench.

  1. Configurez les variables d'environnement de base :

    gcloud config set project PROJECT_ID
    gcloud auth login
    gcloud auth application-default login
    
  2. Configurez l'authentication Docker pour votre dépôt Artifact Registry :

    # example: REGION=europe-west4
    gcloud auth configure-docker REGION-docker.pkg.dev
    
  3. (Facultatif) Configurez un environnement virtuel Python 3. L'utilisation de Python 3 est recommandée, mais pas indispensable :

    sudo apt install python3-pip && \
    pip3 install virtualenv && \
    python3 -m venv --system-site-packages ~/./nas_venv && \
    source ~/./nas_venv/bin/activate
    
  4. Installez des bibliothèques supplémentaires :

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

Configurer un compte de service

Vous devez configurer un compte de service avant d'exécuter des tâches NAS. Vous pouvez exécuter ces étapes à l'aide du shell Bash dans votre environnement local ou les exécuter dans une instance de notebooks gérés par l'utilisateur Vertex AI Workbench.

  1. Créez un compte de service :

    gcloud iam service-accounts create NAME \
        --description=DESCRIPTION \
        --display-name=DISPLAY_NAME
    
  2. Attribuez les rôles aiplatform.user et storage.objectAdmin au compte de service à l'aide des commandes suivantes :

    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
    

Par exemple, les commandes suivantes créent un compte de service nommé my-nas-sa sous le projet my-nas-project avec les rôles aiplatform.user et 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

Télécharger le code

Pour démarrer un test Neural Architecture Search, vous devez télécharger l'exemple de code Python, qui inclut des applications d'entraînement prédéfinies, des définitions d'espace de recherche et des bibliothèques clientes associées.

Pour télécharger le code source, procédez comme suit :

  1. Ouvrez un nouveau terminal Shell.

  2. Exécutez la commande "git clone" :

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