Le GPU (Graphics Processing Unit) possono accelerare notevolmente l'addestramento per molti modelli di deep learning. Addestramento di modelli per attività come l'immagine la classificazione, l'analisi video e l'elaborazione del linguaggio naturale implica matriciale ad alta intensità di calcolo e altre operazioni che possono richiedere sfruttare l'architettura altamente parallela delle GPU.
Addestramento di un modello di deep learning che comporta attività di calcolo intensive L'esecuzione di set di dati estremamente grandi può richiedere giorni su un unico processore. Tuttavia, se progetti il tuo programma per trasferire queste attività a una o più GPU, ridurre il tempo dedicato all'addestramento in ore anziché in giorni.
Prima di iniziare
AI Platform Training ti consente di eseguire l'applicazione di addestramento TensorFlow su una GPU di una macchina abilitata. Leggi la guida di TensorFlow all'uso GPU e la sezione di questo documento dedicata alla regolazione del codice da GPU a assicurarti che l'applicazione utilizzi le GPU disponibili.
Puoi anche utilizzare GPU con framework di machine learning diversi da TensorFlow, se utilizzi un container personalizzato addestramento.
Alcuni modelli non traggono vantaggio dall'esecuzione sulle GPU. Consigliamo GPU per applicazioni di grandi dimensioni, modelli complessi con molte operazioni matematiche. Anche in questo caso, testare i vantaggi del supporto delle GPU eseguendo un piccolo campione dei dati tramite addestramento.
Richiesta di macchine abilitate per GPU
Per utilizzare GPU nel cloud, configura il job di addestramento in modo che abbia accesso alle GPU abilitate per GPU in uno dei seguenti modi:
- Utilizza il livello di scalabilità
BASIC_GPU
. - Utilizza i tipi di macchine di Compute Engine e collega le GPU.
- Utilizza tipi di macchine legacy abilitati per GPU.
Macchina abilitata per GPU di base
Se stai imparando a usare AI Platform Training,
a sperimentare con le macchine abilitate per GPU, puoi impostare il livello di scalabilità su
BASIC_GPU
per ottenere una singola istanza worker con una GPU.
Tipi di macchine Compute Engine con collegamenti GPU
Se configuri il job di addestramento con Macchina Compute Engine tipi, puoi allegare un numero personalizzato di GPU per accelerare il job:
- Imposta il livello di scalabilità su
CUSTOM
. - Configura il worker principale e qualsiasi altra attività tipi (worker, server dei parametri, o il responsabile della valutazione) che fanno parte del tuo job per usare Compute Engine tipi di macchine virtuali.
- Aggiungi un campo
acceleratorConfig
con tipo e numero di GPU da utilizzare permasterConfig
,workerConfig
,parameterServerConfig
oevaluatorConfig
, a seconda del modello di Compute Engine (VM) che desideri accelerare. Puoi utilizzare le seguenti opzioni Tipi di GPU:NVIDIA_TESLA_A100
NVIDIA_TESLA_P4
NVIDIA_TESLA_P100
NVIDIA_TESLA_T4
NVIDIA_TESLA_V100
Per creare un acceleratorConfig
valido, devi tenere conto di diverse limitazioni:
Puoi utilizzare solo un determinato numero di GPU nella configurazione. Ad esempio: puoi collegare 2 o 4 NVIDIA Tesla T4, ma non 3. Per visualizzare i conteggi valida per ogni tipo di GPU, consulta la tabella di compatibilità qui sotto.
Devi assicurarti che ciascuna delle configurazioni GPU fornisca sufficienti CPU virtuali e memoria al tipo di macchina alla quale viene collegata. Ad esempio, se che utilizzi
n1-standard-32
per i lavoratori, ogni worker ha 32 CPU e 120 GB di memoria. Poiché ogni NVIDIA Tesla V100 può fornire fino a 12 CPU virtuali e 76 GB di memoria, devi collegarne almeno 4n1-standard-32
worker per soddisfare i relativi requisiti. (2 GPU forniscono risorse insufficienti e non puoi specificare tre GPU.)Consulta l'elenco di tipi di macchina per AI Platform Training e il confronto delle GPU per i carichi di lavoro di computing stabilire queste compatibilità o fare riferimento alla tabella di compatibilità in basso.
Tieni presente le seguenti limitazioni aggiuntive relative alle risorse GPU AI Platform Training in casi specifici:
- Una configurazione con 4 GPU NVIDIA Tesla P100 supporta solo fino a 64 GPU virtuali CPU e fino a 208 GB di memoria in tutte le regioni e le zone.
Devi inviare il job di addestramento a una regione che supporta la tua GPU configurazione. Scopri di più sul supporto per regione di seguito.
La tabella seguente fornisce un riferimento rapido di quanti di ogni tipo acceleratore collegabile a ciascun tipo di macchina Compute Engine:
Numeri validi di GPU per ogni tipo di macchina | ||||||
---|---|---|---|---|---|---|
Tipo di macchina | NVIDIA A100 | NVIDIA Tesla K80 | NVIDIA Tesla P4 | NVIDIA Tesla P100 | NVIDIA Tesla T4 | NVIDIA Tesla V100 |
n1-standard-4 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |
n1-standard-8 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |
n1-standard-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 | |
n1-standard-32 |
4 e 8 | 2, 4 | 2, 4 | 2, 4 | 4 e 8 | |
n1-standard-64 |
4 | 4 | 8 | |||
n1-standard-96 |
4 | 4 | 8 | |||
n1-highmem-2 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |
n1-highmem-4 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |
n1-highmem-8 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |
n1-highmem-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 | |
n1-highmem-32 |
4 e 8 | 2, 4 | 2, 4 | 2, 4 | 4 e 8 | |
n1-highmem-64 |
4 | 4 | 8 | |||
n1-highmem-96 |
4 | 4 | 8 | |||
n1-highcpu-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 | |
n1-highcpu-32 |
4 e 8 | 2, 4 | 2, 4 | 2, 4 | 4 e 8 | |
n1-highcpu-64 |
8 | 4 | 4 | 4 | 8 | |
n1-highcpu-96 |
4 | 4 | 8 | |||
a2-highgpu-1g |
1 | |||||
a2-highgpu-2g |
2 | |||||
a2-highgpu-4g |
4 | |||||
a2-highgpu-8g |
8 | |||||
a2-megagpu-16g |
16 |
Di seguito è riportato un esempio di invio di un job utilizzando Tipi di macchine di Compute Engine con GPU collegate.
Tipi di macchina con GPU incluse
In alternativa, anziché utilizzare un acceleratorConfig
, puoi selezionare una versione precedente
con GPU incluse:
- Imposta il livello di scalabilità su
CUSTOM
. - Configura il worker principale e qualsiasi altra attività
tipi (worker, server dei parametri,
o il responsabile della valutazione) che vuoi accelerare per utilizzare uno dei seguenti
Tipi di macchine abilitati per GPU, in base al numero di GPU e al tipo
acceleratore richiesto per l'attività:
- .
standard_gpu
: una singola GPUcomplex_model_m_gpu
: quattro GPUcomplex_model_l_gpu
: otto GPUstandard_p100
: una singola GPU NVIDIA Tesla P100complex_model_m_p100
: quattro GPU NVIDIA Tesla P100standard_v100
: una singola GPU NVIDIA Tesla V100large_model_v100
: una singola GPU NVIDIA Tesla V100complex_model_m_v100
: quattro GPU NVIDIA Tesla V100complex_model_l_v100
: otto GPU NVIDIA Tesla V100
Di seguito è riportato un esempio di invio di un job con una macchina abilitata per GPU
usando il comando gcloud
.
Leggi ulteriori informazioni sui tipi di macchina per AI Platform Training.
Regioni che supportano le GPU
Devi eseguire il job in una regione che supporta le GPU. Le seguenti regioni che attualmente forniscono accesso alle GPU:
us-west1
us-west2
us-central1
us-east1
us-east4
northamerica-northeast1
southamerica-east1
europe-west1
europe-west2
europe-west4
asia-south1
asia-southeast1
asia-east1
asia-northeast1
asia-northeast3
australia-southeast1
Inoltre, alcune di queste regioni forniscono l'accesso solo a determinati tipi di GPU. Per comprendere appieno le regioni disponibili per i servizi AI Platform Training, tra cui l'addestramento del modello e la previsione online/batch, leggi la guida alle regioni.
Se il job di addestramento utilizza più tipi di GPU, devono essere tutte disponibili in un'unica zona in
regione. Ad esempio, non puoi eseguire un job in us-central1
con un worker master
che utilizzano le GPU NVIDIA Tesla T4, i server dei parametri che utilizzano le GPU NVIDIA Tesla K80 e i lavoratori che utilizzano
GPU NVIDIA Tesla P100. Sebbene tutte queste GPU siano disponibili per i job di addestramento
us-central1
, nessuna singola zona in quella regione fornisce tutti e tre i tipi di GPU. A
scopri di più sulla disponibilità delle GPU per le zone, consulta
confronto delle GPU per i carichi di lavoro di calcolo.
Invio del job di addestramento
Puoi inviare il job di addestramento utilizzando il comando gcloud ai-platform jobs submit
training
.
Definisci un file
config.yaml
che descriva le opzioni GPU desiderate. La del file YAML rappresenta Risorsa job. Di seguito sono riportati due esempi di fileconfig.yaml
.Il primo esempio mostra un file di configurazione per un job di addestramento che utilizza Tipi di macchine Compute Engine, alcune delle quali hanno GPU collegate:
trainingInput: scaleTier: CUSTOM # Configure a master worker with 4 T4 GPUs masterType: n1-highcpu-16 masterConfig: acceleratorConfig: count: 4 type: NVIDIA_TESLA_T4 # Configure 9 workers, each with 4 T4 GPUs workerCount: 9 workerType: n1-highcpu-16 workerConfig: acceleratorConfig: count: 4 type: NVIDIA_TESLA_T4 # Configure 3 parameter servers with no GPUs parameterServerCount: 3 parameterServerType: n1-highmem-8
L'esempio seguente mostra un file di configurazione per un job con un carattere configurazione come quella precedente. Tuttavia, questa configurazione utilizza che includono GPU anziché collegare GPU con un
acceleratorConfig
:trainingInput: scaleTier: CUSTOM # Configure a master worker with 4 GPUs masterType: complex_model_m_gpu # Configure 9 workers, each with 4 GPUs workerCount: 9 workerType: complex_model_m_gpu # Configure 3 parameter servers with no GPUs parameterServerCount: 3 parameterServerType: large_model
Usa il comando
gcloud
per inviare il job, incluso un--config
che rimanda al tuo fileconfig.yaml
. L'esempio seguente presuppone di aver configurato le variabili di ambiente, indicate dal simbolo$
seguito lettere maiuscole per i valori di alcuni argomenti:gcloud ai-platform jobs submit training $JOB_NAME \ --package-path $APP_PACKAGE_PATH \ --module-name $MAIN_APP_MODULE \ --job-dir $JOB_DIR \ --region us-central1 \ --config config.yaml \ -- \ --user_arg_1 value_1 \ ... --user_arg_n value_n
In alternativa, puoi specificare i dettagli di configurazione del cluster tramite riga di comando , invece che in un file di configurazione. Scopri di più su come utilizzarli e i flag facoltativi.
L'esempio seguente mostra come inviare un job con la stessa configurazione di
nel primo esempio (usando tipi di macchine Compute Engine con GPU
allegato), ma lo fa senza utilizzare un file config.yaml
:
gcloud ai-platform jobs submit training $JOB_NAME \
--package-path $APP_PACKAGE_PATH \
--module-name $MAIN_APP_MODULE \
--job-dir $JOB_DIR \
--region us-central1 \
--scale-tier custom \
--master-machine-type n1-highcpu-16 \
--master-accelerator count=4,type=nvidia-tesla-t4 \
--worker-count 9 \
--worker-machine-type n1-highcpu-16 \
--worker-accelerator count=4,type=nvidia-tesla-t4 \
--parameter-server-count 3 \
--parameter-server-machine-type n1-highmem-8 \
-- \
--user_arg_1 value_1 \
...
--user_arg_n value_n
Note:
- Se specifichi un'opzione sia nel file di configurazione
(
config.yaml
) e come flag della riga di comando, il valore nel riga di comando sostituisce il valore nel file di configurazione. - Il flag
--
vuoto segna la fine delgcloud
di segnalazioni specifiche e l'inizio delUSER_ARGS
da trasferire alla tua richiesta. - I flag specifici per AI Platform Training,
--module-name
,--runtime-version
e--job-dir
, deve precedere il flag--
vuoto. Il servizio AI Platform Training interpreta questi flag. - Il flag
--job-dir
, se specificato, deve precedere il carattere flag--
vuoto, perché AI Platform Training utilizza--job-dir
per convalidare il percorso. - La tua applicazione deve gestire anche il flag
--job-dir
se specificato. Anche se la bandiera precede il campo--
vuoto, Inoltre, il--job-dir
viene passato alla tua richiesta come flag della riga di comando. - Puoi definire tutti i
USER_ARGS
di cui hai bisogno. Pass di AI Platform Training:--user_first_arg
,--user_second_arg
e così via fino alla tua domanda.
Per ulteriori dettagli sulle opzioni di invio dei lavori, consulta la guida per l'avvio di un job di addestramento.
Regolazione del codice di addestramento per l'utilizzo delle GPU
Se utilizzi Keras o Estimatori per il tuo job di addestramento TensorFlow e vuoi eseguire l'addestramento utilizzando GPU, non dovrai personalizzare il codice per la GPU.
Se il cluster di addestramento contiene più GPU, utilizza
tf.distribute.Strategy
API nel codice di addestramento:
- Per l'addestramento su una singola VM con più GPU, consigliamo di utilizzare
MirroredStrategy
, che è completamente supportato per Keras in TensorFlow 2.1 e versioni successive. - Per l'addestramento su più VM con GPU, consulta i consigli per i container addestramento.
Per personalizzare il modo in cui TensorFlow assegna operazioni specifiche alle GPU, consulta il
Guida di TensorFlow all'utilizzo
per GPU. In questo
caso, potrebbe anche essere utile scoprire in che modo AI Platform Training imposta TF_CONFIG
su ogni VM.
Stringhe dispositivo GPU
La singola GPU di una macchina standard_gpu
è identificata come "/gpu:0"
.
Le macchine con più GPU utilizzano identificatori che iniziano con "/gpu:0"
, quindi
"/gpu:1"
e così via. Ad esempio, complex_model_m_gpu
macchine hanno quattro
GPU identificate come da "/gpu:0"
a "/gpu:3"
.
Pacchetti Python su macchine abilitate per GPU
Nelle macchine abilitate per GPU sono preinstallate tensorflow-gpu, il pacchetto Python TensorFlow con supporto GPU. Vedi la versione di runtime list per visualizzare un elenco di tutte le app preinstallate .
Eventi di manutenzione
Le VM abilitate per GPU che eseguono job di AI Platform Training sono occasionalmente soggette a
Manutenzione dell'host Compute Engine.
Le VM sono configurate per riavviarsi
automaticamente dopo questi eventi di manutenzione,
ma potresti dover fare del lavoro in più per rendere il tuo lavoro resiliente
queste chiusure. Configura l'applicazione di addestramento per salvare regolarmente il modello
(di solito lungo il percorso di Cloud Storage specificato
l'argomento --job-dir
a gcloud ai-platform jobs submit training
) e a
ripristinare il checkpoint più recente nel caso in cui esista già un checkpoint.
Strumento per la stima di TensorFlow
implementare questa funzionalità per te, purché specifichi un valore model_dir
.
Gli strumenti di stima salvano regolarmente i checkpoint in model_dir
e provano a caricarli
dall'ultimo checkpoint, così non devi preoccuparti degli eventi di manutenzione
sui worker GPU.
Se ti stai addestrando con Keras, utilizza il ModelCheckpoint
callback
per salvare regolarmente i progressi nell'addestramento. Se utilizzi tf.distribute.Strategy
con Keras, le VM utilizzano i checkpoint per il ripristino automatico
si riavvia.
In caso contrario, aggiungi logica al codice di addestramento per verificare l'esistenza di una
posto di blocco
e ripristinare dal checkpoint se
esiste.
Per casi più avanzati, leggi la guida di TensorFlow punti di controllo.
Passaggi successivi
- Leggi una panoramica del funzionamento della formazione.
- Comprendi i limiti delle GPU simultanee dell'audiodescrizione.
- Scopri di più sull'utilizzo delle GPU con TensorFlow.
- Leggi un confronto tra prestazioni e costi delle GPU più recenti, ad esempio NVIDIA Tesla T4.