Configura l'ambiente

Configura un ambiente prima di avviare un esperimento Vertex AI Neural Architecture Search.

Prima di iniziare

  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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. After initializing the gcloud CLI, update it and install the required components:

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

    Go to project selector

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

  11. Enable the Vertex AI API.

    Enable the API

  12. Install the Google Cloud CLI.

  13. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  14. To initialize the gcloud CLI, run the following command:

    gcloud init
  15. After initializing the gcloud CLI, update it and install the required components:

    gcloud components update
    gcloud components install beta
  16. Per concedere a tutti gli utenti di Neural Architecture Search il ruolo Vertex AI User (roles/aiplatform.user), contatta l'amministratore del progetto.
  17. Installa Docker.

    Se utilizzi un sistema operativo basato su Linux, come Ubuntu o Debian, aggiungi il tuo nome utente al gruppo docker in modo da poter eseguire Docker senza utilizzare sudo:

    sudo usermod -a -G docker ${USER}
    

    Potresti dover riavviare il sistema dopo esserti aggiunto al gruppo docker.

  18. Apri Docker. Per assicurarti che Docker sia in esecuzione, esegui questo comando Docker, che restituisce la data e l'ora correnti:
    docker run busybox date
  19. Utilizza gcloud come assistente per le credenziali per Docker:
    gcloud auth configure-docker
  20. (Facoltativo) Se vuoi eseguire il container utilizzando la GPU in locale, installa nvidia-docker.
  21. Configurare il bucket Cloud Storage

    Questa sezione mostra come creare un nuovo bucket. Puoi utilizzare un bucket esistente, ma deve trovarsi nella stessa regione in cui esegui i job AI Platform. Inoltre, se non fa parte del progetto che utilizzi per eseguire Neural Architecture Search, devi concedere esplicitamente l'accesso ai service account Neural Architecture Search.

    1. Specifica un nome per il nuovo bucket. Il nome deve essere univoco in tutti i bucket di Cloud Storage.

      BUCKET_NAME="YOUR_BUCKET_NAME"

      Ad esempio, utilizza il nome del progetto con l'aggiunta di -vertexai-nas:

      PROJECT_ID="YOUR_PROJECT_ID"
      BUCKET_NAME=${PROJECT_ID}-vertexai-nas
    2. Controlla il nome del bucket che hai creato.

      echo $BUCKET_NAME
    3. Seleziona una regione per il bucket e imposta una variabile di ambiente REGION.

      Utilizza la stessa regione in cui prevedi di eseguire i job di Neural Architecture Search.

      Ad esempio, il seguente codice crea REGION e lo imposta su us-central1:

      REGION=us-central1
    4. Crea il nuovo bucket:

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

    Richiedi una quota di dispositivi aggiuntiva per il progetto

    I tutorial utilizzano circa cinque macchine CPU e non richiedono alcuna quota aggiuntiva. Dopo aver eseguito i tutorial, esegui il job Neural Architecture Search.

    Il job Neural Architecture Search addestra un batch di modelli in parallelo. Ogni modello addestrato corrisponde a una prova. Leggi la sezione relativa all'impostazione di number-of-parallel-trials per stimare la quantità di CPU e GPU necessarie per un job di ricerca. Ad esempio, se ogni prova utilizza 2 GPU T4 e imposti number-of-parallel-trials su 20, hai bisogno di una quota totale di 40 GPU T4 per un job di ricerca. Inoltre, se ogni prova utilizza una CPU highmem-16, sono necessarie 16 unità CPU per prova, ovvero 320 unità CPU per 20 prove parallele. Tuttavia, chiediamo una quota minima di 10 prove parallele (o 20 quote GPU). La quota iniziale predefinita per le GPU varia in base alla regione e al tipo di GPU e di solito è 0, 6 o 12 per Tesla_T4 e 0 o 6 per Tesla_V100. La quota iniziale predefinita per le CPU varia in base alla regione e di solito è 20, 450 o 2200.

    (Facoltativo) Se prevedi di eseguire più job di ricerca in parallelo, aumenta il requisito di quota. La richiesta di una quota non comporta un addebito immediato. L'addebito viene effettuato una volta eseguito un job.

    Se non disponi di quota sufficiente e provi ad avviare un job che richiede più risorse di quelle disponibili nella tua quota, il job non verrà avviato e verrà visualizzato un errore simile a questo:

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

    In alcuni casi, se sono stati avviati più job per lo stesso progetto contemporaneamente e la quota non è sufficiente per tutti, uno dei job rimane in stato di coda e non inizia l'addestramento. In questo caso, annulla il job in coda e richiedi una quota maggiore o attendi il completamento del job precedente.

    Puoi richiedere la quota aggiuntiva di dispositivi dalla pagina Quote. Puoi applicare filtri per trovare la quota che vuoi modificare: Quota di filtri

    1. Per Servizio, seleziona API Vertex AI.
    2. Per regione, seleziona la regione in base alla quale vuoi filtrare.
    3. In Quota, seleziona un nome di acceleratore il cui prefisso sia Addestramento modello personalizzato.
      • Per le GPU V100, il valore è GPU Nvidia V100 per l'addestramento di modelli personalizzati per regione.
      • Per le CPU, il valore può essere CPU di addestramento del modello personalizzato per i tipi di macchine N1/E2 per regione. Il numero della CPU rappresenta l'unità di CPU. Se vuoi 8 CPU highmem-16, la richiesta di quota deve essere per 8 * 16 = 128 unità CPU. Inserisci anche il valore desiderato per region.

    Una volta creata una richiesta di quota, riceverai un Case number e email di follow-up sullo stato della richiesta. L'approvazione di una quota GPU potrebbe richiedere circa 2-5 giorni lavorativi. In generale, l'approvazione di una quota di circa 20-30 GPU dovrebbe essere più rapida e richiedere circa 2-3 giorni, mentre l'approvazione di circa 100 GPU potrebbe richiedere 5 giorni lavorativi. L'approvazione di una quota CPU potrebbe richiedere fino a due giorni lavorativi. Tuttavia, se una regione sta vivendo una grave carenza di un tipo di GPU, non c'è alcuna garanzia anche con una piccola richiesta di quota. In questo caso, potrebbe esserti chiesto di scegliere un'altra regione o un altro tipo di GPU. In generale, le GPU T4 sono più facili da ottenere rispetto alle V100. Le GPU T4 richiedono più tempo di esecuzione, ma sono più convenienti.

    Per ulteriori informazioni, consulta Richiedi un aggiustamento delle quote.

    Configura Artifact Registry per il tuo progetto

    Devi configurare un registro degli artefatti per il tuo progetto e la tua regione in cui esegui il push delle immagini Docker.

    Vai alla pagina Artifact Registry del tuo progetto. Se non è già abilitata, abilita prima l'API Artifact Registry per il tuo progetto:

    Abilita Artifact Registry

    Una volta attivata, inizia a creare un nuovo repository facendo clic su CREA REPOSITORY:

    Crea registro di artefatti

    Scegli Nome come nas, Formato come Docker e Tipo di località come Regione. Per Regione, seleziona la località in cui esegui i job e poi fai clic su CREA.

    Impostazione del registro degli artefatti

    In questo modo dovrebbe essere creato il repository Docker che ti interessa, come mostrato di seguito:

    Artifact Registry creato

    Devi anche configurare l'autenticazione per eseguire il push dei Docker in questo repository. Questo passaggio è descritto nella sezione Configurazione dell'ambiente locale riportata di seguito.

    Configura l'ambiente locale

    Puoi eseguire questi passaggi utilizzando la shell Bash nel tuo ambiente locale oppure eseguirli in un'istanza di notebook gestiti dall'utente di Vertex AI Workbench.

    1. Imposta le variabili di ambiente di base:

      gcloud config set project PROJECT_ID
      gcloud auth login
      gcloud auth application-default login
      
    2. Configura l'autenticazione Docker per il tuo registro degli artefatti:

      # example: REGION=europe-west4
      gcloud auth configure-docker REGION-docker.pkg.dev
      
    3. (Facoltativo) Configura un ambiente virtuale Python 3. L'utilizzo di Python 3 è consigliato ma non obbligatorio:

      sudo apt install python3-pip && \
      pip3 install virtualenv && \
      python3 -m venv --system-site-packages ~/./nas_venv && \
      source ~/./nas_venv/bin/activate
      
    4. Installa librerie aggiuntive:

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

    Configurare un account di servizio

    È necessario configurare un service account prima di eseguire i job NAS. Puoi eseguire questi passaggi utilizzando la shell Bash nel tuo ambiente locale oppure eseguirli in un'istanza di blocchi note gestiti dall'utente di Vertex AI Workbench.

    1. Crea un account di servizio:

      gcloud iam service-accounts create NAME \
          --description=DESCRIPTION \
          --display-name=DISPLAY_NAME
      
    2. Concedi i ruoli aiplatform.user e storage.objectAdmin al account di servizio:

      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
      

    Ad esempio, i seguenti comandi creano un account di servizio denominato my-nas-sa nel progetto my-nas-project con i ruoli aiplatform.user e 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
    

    Scarica codice

    Per avviare un esperimento Neural Architecture Search, devi scaricare il codice Python di esempio, che include trainer predefiniti, definizioni dello spazio di ricerca e librerie client associate.

    Segui questi passaggi per scaricare il codice sorgente.

    1. Apri un nuovo terminale della shell.

    2. Esegui il comando Git clone:

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