Configura l'ambiente

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

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. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. Update and install gcloud components:

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

    Go to project selector

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

  10. Enable the Vertex AI API.

    Enable the API

  11. Install the Google Cloud CLI.
  12. To initialize the gcloud CLI, run the following command:

    gcloud init
  13. Update and install gcloud components:

    gcloud components update
    gcloud components install beta
  14. Per concedere a tutti gli utenti di Neural Architecture Search la funzione 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 gruppo docker in modo da poter eseguire Docker senza utilizzare sudo:

    sudo usermod -a -G docker ${USER}
    

    Potresti dover riavviare il sistema dopo aver aggiunto te stesso al gruppo docker.

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

Configura il bucket Cloud Storage

Questa sezione illustra come creare un nuovo bucket. Puoi utilizzare un bucket esistente, ma deve trovarsi nella stessa regione in cui stai eseguendo i job di AI Platform. Inoltre, se non fa parte del progetto che stai utilizzando per eseguire Neural Architecture Search, devi esplicitamente concedere l'accesso agli account di servizio Neural Architecture Search.

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

    BUCKET_NAME="YOUR_BUCKET_NAME"

    Ad esempio, utilizza il nome del progetto con -vertexai-nas aggiunto:

    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 aggiuntiva per i dispositivi per il progetto

I tutorial utilizzano circa cinque CPU e non richiedono e non c'è una quota aggiuntiva. Dopo aver eseguito i tutorial, esegui del tuo job di Neural Architecture Search.

Il job Neural Architecture Search addestra un gruppo di modelli in parallelo. Ogni modello addestrato corrisponde a un esperimento. 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 Da number-of-parallel-trials a 20, allora ti servono 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à di CPU per 20 prove parallele. Tuttavia chiediamo un minimo di 10 quote di prova in parallelo (o 20 GPU). La quota iniziale predefinita per le GPU varia in base alla regione e al tipo di GPU e in genere è 0, 6 o 12 per Tesla_T4 e 0 o 6 per Tesla_V100. La quota iniziale predefinita per le CPU varia da regione e di solito è 20, 450 o 2.200.

(Facoltativo) Se prevedi di eseguire più job di ricerca in parallelo, e poi scalare il requisito di quota. La richiesta di una quota non comporta alcun addebito immediato. Ti viene addebitato un costo quando esegui un job.

Se non disponi di quota sufficiente e prova ad avviare un job che richiede rispetto alla quota, il job non verrà avviato viene restituito 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 sono stati avviati più job per lo stesso progetto contemporaneamente e la quota non è sufficiente per tutti, uno dei job rimane in stato in coda e non avvia l'addestramento. In questo caso, annulla il job in coda e richiedi più quota o attendi il termine del job precedente.

Puoi richiedere la quota aggiuntiva per i dispositivi dalla pagina Quote. Puoi applicare filtri per trovare la quota da modificare: Filtra quota

  1. Per Servizio, seleziona API Vertex AI.
  2. Per regione, seleziona la regione in base a cui vuoi filtrare.
  3. Per Quota, seleziona il nome di un acceleratore con prefisso Addestramento di modelli personalizzati.
    • 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 di modelli personalizzati per macchina N1/E2 tipi per regione. Il numero della CPU rappresenta l'unità di CPU. Se vuoi 8 CPU highmem-16, quindi effettua la richiesta di quota 8 * 16 = 128 unità CPU. Inserisci anche il valore desiderato region.

Dopo aver creato una richiesta di quota, riceverai un Case number e segui sullo stato della richiesta. Approvazione di una quota GPU potrebbero essere necessari da due a cinque giorni lavorativi per l'approvazione. In generale, l'approvazione di una quota di circa 20-30 GPU dovrebbe essere più rapida in circa due o tre giorni, mentre l'approvazione di circa 100 GPU potrebbe richiedere cinque giorni lavorativi. Una quota di CPU l'approvazione potrebbe richiedere fino a due giorni lavorativi. Tuttavia, se in una regione si sta verificando una grossa carenza di tipi di GPU, non c'è alcuna garanzia nemmeno con una richiesta di quota ridotta. In questo caso, ti potrebbe essere chiesto di scegliere un'altra regione o un altro tipo di GPU. In generale, le GPU T4 più facile da ottenere rispetto alle V100. Le GPU T4 richiedono più tempo reale, sono più convenienti.

Per ulteriori informazioni, consulta la sezione Richiesta di una quota superiore. di sicurezza.

Configura Artifact Registry per il tuo progetto

Devi configurare un registro di pacchetti 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, prima l'API Artifact Registry per il tuo progetto:

Attiva Artifact Registry

Una volta attivata, 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. In Regione, seleziona la località in cui esegui job e fai clic su CREA.

Impostazione Artifact Registry

Dovrebbe essere creato il repository Docker desiderato, come mostrato di seguito:

Artifact Registry creato

Devi anche configurare l'autenticazione per spingere i docker in questo repository. La sezione per la configurazione dell'ambiente locale riportato di seguito contiene questo passaggio.

Configura il tuo ambiente locale

Puoi eseguire questi passaggi utilizzando la shell Bash nel tuo ambiente locale o in un'istanza di notebook 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. Configurare 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

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

  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 dello spazio 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