configura l'ambiente

Configura un ambiente prima di avviare un esperimento Vertex AI Neural Architecture Search seguendo le sezioni riportate di seguito.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Attiva Vertex AI API.

    Abilita l'API

  5. Installa Google Cloud CLI.
  6. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  7. Aggiorna e installa i componenti di gcloud:
    gcloud components update
    gcloud components install beta
  8. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  9. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  10. Attiva Vertex AI API.

    Abilita l'API

  11. Installa Google Cloud CLI.
  12. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  13. Aggiorna e installa i componenti di gcloud:
    gcloud components update
    gcloud components install beta
  14. Per concedere a tutti gli utenti di Neural Architecture Search il ruolo Utente Vertex AI (roles/aiplatform.user), contatta l'amministratore del progetto.
  15. 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}
    

    Potrebbe essere necessario riavviare il sistema dopo esserti aggiunto al gruppo docker.

  16. Apri Docker. Per assicurarti che Docker sia in esecuzione, esegui il comando Docker seguente, che restituisce la data e l'ora correnti:
    docker run busybox date
  17. Usa gcloud come assistente per le credenziali per Docker:
    gcloud auth configure-docker
  18. (Facoltativo) Se vuoi eseguire il container utilizzando GPU localmente, 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 stai utilizzando per eseguire Neural Architecture Search, devi concedere esplicitamente l'accesso agli account di servizio Neural Architecture Search.

  1. Specifica un nome per il nuovo bucket. Il nome deve essere univoco in tutti i bucket in 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 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:

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

Richiedi quota dispositivi aggiuntiva per il progetto

I tutorial utilizzano circa cinque macchine CPU e non richiedono quote aggiuntive. Dopo i tutorial, esegui il job Neural Architecture Search (NAS).

Il job Neural Architecture Search 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, ti serve 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à di CPU per prova, ovvero 320 unità CPU per 20 prove parallele. Tuttavia, chiediamo almeno 10 quota di prova parallela (o 20 quota GPU). La quota iniziale predefinita per le GPU varia in base alla regione e al tipo di GPU e in genere è pari a 0, 6 o 12 per Tesla_T4 e 0 o 6 per Tesla_V100. La quota iniziale predefinita per le CPU varia a seconda della regione e di solito è pari a 20, 450 o 2200.

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

Se non disponi di quota sufficiente e provi ad avviare un job che richiede più risorse rispetto alla tua quota, il job non verrà avviato generando un errore simile al seguente:

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 più job per lo stesso progetto sono stati avviati contemporaneamente e la quota non è sufficiente per tutti, uno dei job rimane in stato in coda e non si avvia 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 dispositivo aggiuntiva dalla pagina Quote. Puoi applicare filtri per trovare la quota da modificare: Quota di filtro

  1. In Servizio, seleziona API Vertex AI.
  2. Per regione, seleziona quella in base alla quale vuoi applicare il filtro.
  3. Per Quota, seleziona un nome acceleratore il cui prefisso è Addestramento di modelli personalizzati.
    • 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 di modelli personalizzati per tipi di macchine N1/E2 per regione. Il numero della CPU rappresenta l'unità di CPU. Se vuoi 8 CPU highmem-16, effettua una richiesta di quota per 8 * 16 = 128 unità di CPU. Inserisci anche il valore desiderato per regione.

Una volta creata una richiesta di quota, riceverai un'email Case number e un'email di follow-up sullo stato della richiesta. L'approvazione di una quota GPU potrebbe richiedere da due a cinque giorni lavorativi. In generale, ottenere una quota di circa 20-30 GPU dovrebbe essere più rapido per ottenere l'approvazione, circa in due o tre giorni, e ottenere l'approvazione per circa 100 GPU potrebbe richiedere cinque giorni lavorativi. L'approvazione di una quota di CPU potrebbe richiedere fino a due giorni lavorativi. Tuttavia, se una regione presenta una grande carenza di un tipo di GPU, non c'è alcuna garanzia anche con una richiesta di quota ridotta. In questo caso, ti potrebbe essere chiesto di scegliere un'altra regione o un tipo di GPU diverso. In generale, le GPU T4 sono più semplici da ottenere rispetto alle V100. Le GPU T4 richiedono più tempo, ma sono più convenienti.

Per ulteriori informazioni, consulta Richiedere un aumento del limite di quota.

Configura Artifact Registry per il tuo progetto

Devi configurare un artifact registry per il 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

Dopo l'abilitazione, inizia a creare un nuovo repository facendo clic su CREA REPOSITORY:

Crea Artifact Registry

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

Impostazione Artifact Registry

Questo dovrebbe creare il repository Docker desiderato, come mostrato di seguito:

Artifact Registry creato

Devi anche configurare l'autenticazione per eseguire il push dei docker a questo repository. La sezione relativa alla configurazione dell'ambiente locale riportata di seguito contiene questo passaggio.

configura l'ambiente locale

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

  1. Configura 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 Artifact Registry:

    # 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

Prima di eseguire i job NAS è necessario configurare un account di servizio. Puoi eseguire questi passaggi utilizzando la shell Bash nel tuo ambiente locale o 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 all'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 comandi seguenti 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 di Neural Architecture Search, devi scaricare il codice Python di esempio, che include trainer predefiniti, definizioni degli spazi di ricerca e le librerie client associate.

Esegui questi passaggi per scaricare il codice sorgente.

  1. Apri un nuovo terminale Shell.

  2. Esegui il comando Git clone:

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