Configura un ambiente prima di lanciare un esperimento Vertex AI Neural Architecture Search seguendo le sezioni riportate di seguito.
Prima di iniziare
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Update and install
gcloud
components:gcloud components update
gcloud components install beta -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Update and install
gcloud
components:gcloud components update
gcloud components install beta - Per concedere a tutti gli utenti di Neural Architecture Search il ruolo Utente Vertex AI (
roles/aiplatform.user
), contatta l'amministratore del progetto. - Installa Docker.
Se utilizzi un sistema operativo basato su Linux, ad esempio Ubuntu o Debian, aggiungi il tuo nome utente al gruppo
docker
in modo da poter eseguire Docker senza utilizzaresudo
:sudo usermod -a -G docker ${USER}
Potresti dover riavviare il sistema dopo aver aggiunto te stesso al gruppo
docker
. - Apri Docker. Per assicurarti che Docker sia in esecuzione, esegui il seguente comando Docker, che restituisce la data e l'ora correnti:
docker run busybox date
- Utilizza
gcloud
come assistente per le credenziali per Docker:gcloud auth configure-docker
-
(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 stai eseguendo i job di AI Platform. Inoltre, se non fa parte del progetto che utilizzi per eseguire Neural Architecture Search, devi concedere esplicitamente l'accesso agli account di servizio di Neural Architecture Search.
-
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
-vertexai-nas
aggiunto:PROJECT_ID="YOUR_PROJECT_ID" BUCKET_NAME=${PROJECT_ID}-vertexai-nas
-
Controlla il nome del bucket che hai creato.
echo $BUCKET_NAME
-
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 suus-central1
:REGION=us-central1
-
Crea il nuovo bucket:
gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION
Richiedere 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 tuo job di ricerca di architetture neurali.
Il job di ricerca di architetture neurali addestra un batch 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 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à di CPU per prova, ovvero 320 unità di CPU per 20 prove in parallelo.
Tuttavia, richiediamo una quota minima di 10 prove 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 varía in base alla regione e in genere è 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'importo ti viene addebitato dopo l'esecuzione di un job.
Se non disponi di quota sufficiente e provi a lanciare un job che richiede più risorse della tua quota, il job non verrà lanciato e verrà visualizzato 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:
- Per Servizio, seleziona API Vertex AI.
- In regione, seleziona la regione in base alla quale vuoi applicare il filtro.
- In Quota, seleziona il nome di un acceleratore il cui prefisso è
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 per l'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
, invia la richiesta di quota per 8 * 16 = 128 unità di CPU. Inserisci anche il valore desiderato per region.
Dopo aver creato una richiesta di quota, riceverai un'email Case number
e email di follow-up sullo stato della richiesta. L'approvazione di una quota GPU può richiedere da due a cinque giorni lavorativi circa. 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. L'approvazione di una quota CPU può richiedere fino a due giorni lavorativi.
Tuttavia, se una regione sta riscontrando una grave carenza di un tipo di GPU,
non ci sono garanzie anche 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 sono più facili da ottenere rispetto alle V100. Le GPU T4 richiedono più tempo, ma sono più convenienti.
Per ulteriori informazioni, consulta Richiedere un limite di quota più alto.
Configurare Artifact Registry per il 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 progetto. Se non è già abilitata, abilita prima l'API Artifact Registry per il tuo progetto:
Una volta attivata, inizia a creare un nuovo repository facendo clic su CREA REPOSITORY:
Scegli Nome come nas, Formato come Docker e Tipo di località come Regione. In Regione, seleziona la località in cui esegui i job, quindi fai clic su CREA.
Dovresti creare il repository Docker desiderato come mostrato di seguito:
Devi anche configurare l'autenticazione per spingere i docker in questo repository. La sezione sulla configurazione dell'ambiente locale di seguito contiene questo passaggio.
Configura l'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.
Configura le variabili di ambiente di base:
gcloud config set project PROJECT_ID gcloud auth login gcloud auth application-default login
Configura l'autenticazione Docker per il tuo registry di pacchetti:
# example: REGION=europe-west4 gcloud auth configure-docker REGION-docker.pkg.dev
(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
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 la shell Bash nel tuo ambiente locale o in un'istanza di blocchi note gestiti dall'utente di Vertex AI Workbench.
Crea un account di servizio:
gcloud iam service-accounts create NAME \ --description=DESCRIPTION \ --display-name=DISPLAY_NAME
Concedi i ruoli
aiplatform.user
estorage.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 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 di ricerca di architetture neurali, devi scaricare il codice Python di esempio, che include trainer predefiniti, definizioni dello spazio di ricerca e librerie client associate.
Per scaricare il codice sorgente, svolgi i passaggi che seguono.
Apri un nuovo terminale Shell.
Esegui il comando Git clone:
git clone https://github.com/google/vertex-ai-nas.git