Configura l'ambiente

Configura un ambiente prima di avviare un esperimento Neural Architecture Search di Agent Platform.

Prima di iniziare

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Enable the Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  4. Install the Google Cloud CLI.

  5. Configure the gcloud CLI to use your federated identity.

    For more information, see Sign in to the gcloud CLI with your federated identity.

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

    gcloud init
  7. Dopo aver inizializzato gcloud CLI, aggiornala e installa i componenti richiesti:

    gcloud components update
    gcloud components install beta
  8. Per concedere a tutti gli utenti di Agent Platform Neural Architecture Search il ruolo Agent Platform User (roles/aiplatform.user), contatta l'amministratore del progetto.
  9. 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.

  10. 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
  11. Utilizza gcloud come assistente per le credenziali per Docker:
    gcloud auth configure-docker
  12. (Facoltativo) Se vuoi eseguire il container utilizzando la GPU in locale, installa nvidia-docker.

Configura 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 Agent Platform Neural Architecture Search, devi concedere esplicitamente l'accesso ai service account di Agent Platform 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"

    Per garantire un nome del bucket univoco e imprevedibile, utilizza un UUID (Universally Unique Identifier) generato in modo casuale nel nome del bucket, come mostrato nell'esempio seguente. Questa pratica consente di evitare il bucket squatting.

    PROJECT_ID="YOUR_PROJECT_ID"
    BUCKET_NAME="${PROJECT_ID}-vertexai-nas-$(uuidgen)"
  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 Agent Platform 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 di Agent Platform Neural Architecture Search.

Il job di ricerca di architetture neurali di Agent Platform addestra un batch di modelli in parallelo. Ogni modello addestrato corrisponde a una prova. Leggi la sezione sull'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 avviene 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 di dispositivi aggiuntiva dalla pagina Quote. Puoi applicare filtri per trovare la quota che vuoi modificare: Quota filtri

  1. In Service (Servizio), seleziona API Agent Platform.
  2. In 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 è Addestramento di modelli personalizzati GPU Nvidia V100 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, richiedi una quota di 8 * 16 = 128 unità CPU. Inserisci anche il valore desiderato per region.

Una volta creata una richiesta di quota, riceverai un Case number e le 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 una regione o un tipo di GPU diverso. 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 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. In Regione, seleziona la località in cui esegui i job e poi fai clic su CREA.

Impostazione del registro Artifact

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 di seguito.

Configura l'ambiente locale

Puoi eseguire questi passaggi utilizzando la shell Bash nel tuo ambiente locale oppure eseguirli da un notebook in un'istanza di Gemini Enterprise Agent Platform 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
    

Configura un service account

Prima di eseguire i job NAS, devi configurare un service account. Puoi eseguire questi passaggi utilizzando la shell Bash nel tuo ambiente locale oppure eseguirli da un notebook in un'istanza di Gemini Enterprise Agent Platform Workbench.

  1. Crea un service account:

    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.s3ns.iam.gserviceaccount.com \
        --role=roles/aiplatform.user
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:NAME@PROJECT_ID.s3ns.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.s3ns.iam.gserviceaccount.com \
      --role=roles/aiplatform.user
  gcloud projects add-iam-policy-binding my-nas-project \
      --member=serviceAccount:my-nas-sa@my-nas-project.s3ns.iam.gserviceaccount.com \
      --role=roles/storage.objectAdmin

Scarica codice

Per avviare un esperimento di ricerca dell'architettura neurale di Agent Platform, devi scaricare il codice Python di esempio, che include trainer predefiniti, definizioni dello spazio di ricerca e librerie client associate.

Esegui i seguenti 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