Quando esegui un job di addestramento su AI Platform Training, devi specificare il numero e i tipi di macchine di cui hai bisogno. Per semplificare la procedura, puoi scegliere tra un insieme di specifiche predefinite per i cluster, chiamate livelli di scalabilità. In alternativa, puoi scegliere un livello personalizzato e specificare autonomamente i tipi di macchine.
Specificare la configurazione
Il modo in cui specifichi la configurazione del cluster dipende da come prevedi di eseguire il job di addestramento:
gcloud
Crea un file di configurazione YAML che rappresenti l'oggetto
TrainingInput
e specifica l'identificatore del livello di scalabilità
e i tipi di macchine nel file di configurazione. Puoi assegnare al
file il nome che preferisci. Per convenzione, il nome è config.yaml
.
L'esempio seguente mostra i contenuti del file di configurazione config.yaml
per un job con un cluster di elaborazione personalizzato.
trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16 workerType: n1-highcpu-16 parameterServerType: n1-highmem-8 evaluatorType: n1-highcpu-16 workerCount: 9 parameterServerCount: 3 evaluatorCount: 1
Fornisci il percorso del file YAML nel flag --config
quando esegui il comando
gcloud ai-platform jobs submit training
:
gcloud ai-platform jobs submit training $JOB_NAME \ --package-path $TRAINER_PACKAGE_PATH \ --module-name $MAIN_TRAINER_MODULE \ --job-dir $JOB_DIR \ --region $REGION \ --config config.yaml \ -- \ --user_first_arg=first_arg_value \ --user_second_arg=second_arg_value
In alternativa, puoi specificare i dettagli di configurazione del cluster con i flag della riga di comando anziché in un file di configurazione. Scopri di più su come utilizzare questi indicatori.
L'esempio seguente mostra come inviare un job di addestramento con una configurazione simile a quella dell'esempio precedente, ma senza utilizzare un file di configurazione:
gcloud ai-platform jobs submit training $JOB_NAME \
--package-path $TRAINER_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--job-dir $JOB_DIR \
--region $REGION \
--scale-tier custom \
--master-machine-type n1-highcpu-16 \
--worker-machine-type n1-highcpu-16 \
--parameter-server-machine-type n1-highmem-8 \
--worker-count 9 \
--parameter-server-count 3 \
-- \
--user_first_arg=first_arg_value \
--user_second_arg=second_arg_value
Scopri di più su come eseguire un job di addestramento.
Python
Specifica l'identificatore del livello di scalabilità e i tipi di macchine nell'oggetto
TrainingInput
nella configurazione del job.
L'esempio seguente mostra come creare una rappresentazione di un job con un cluster di elaborazione personalizzato.
training_inputs = {'scaleTier': 'CUSTOM', 'masterType': 'n1-highcpu-16', 'workerType': 'n1-highcpu-16', 'parameterServerType': 'n1-highmem-8', 'evaluatorType': 'n1-highcpu-16', 'workerCount': 9, 'parameterServerCount': 3, 'evaluatorCount': 1, 'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'], 'pythonModule': 'trainer.task' 'args': ['--arg1', 'value1', '--arg2', 'value2'], 'region': 'us-central1', 'jobDir': 'gs://my/training/job/directory', 'runtimeVersion': '2.11', 'pythonVersion': '3.7'} job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}
Tieni presente che training_inputs
e job_spec
sono identificatori arbitrari: puoi assegnare a questi dizionari i nomi che preferisci. Tuttavia, le chiavi del dizionario devono essere denominate esattamente come mostrato, in modo che corrispondano ai nomi nelle risorse Job
e TrainingInput
.
Livelli di scalabilità
Google potrebbe ottimizzare la configurazione dei livelli di scalabilità per diversi job nel tempo, in base al feedback dei clienti e alla disponibilità delle risorse cloud. Ogni livello di scala è definito in termini di idoneità per determinati tipi di lavori. In genere, più avanzato è il livello, più macchine vengono allocate al cluster e più potenti sono le specifiche di ogni macchina virtuale. Con l'aumento della complessità del livello di scalabilità, aumenta anche il costo orario dei job di addestramento, misurato in unità di addestramento. Consulta la pagina dei prezzi per calcolare il costo del tuo job.
L'AI Platform Training non supporta l'addestramento distribuito o l'addestramento con acceleratori per il codice scikit-learn o XGBoost. Se il job di addestramento esegue codice scikit-learn o
XGBoost, devi impostare il livello di scala su BASIC
o CUSTOM
.
Di seguito sono riportati gli identificatori dei livelli della scala:
Livello di scalabilità di AI Platform Training | |
---|---|
BASIC
|
Una singola istanza worker. Questo livello è adatto per imparare a utilizzare AI Platform Training e per sperimentare nuovi modelli utilizzando set di dati di piccole dimensioni. Nome della macchina Compute Engine: n1-standard-4 |
STANDARD_1
|
Un'istanza master, più quattro worker e tre server dei parametri. Utilizza questo livello di scalabilità solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati. Nome della macchina Compute Engine, master: n1-highcpu-8, worker: n1-highcpu-8, server di parametri: n1-standard-4 |
PREMIUM_1
|
Un'istanza master, oltre a 19 worker e 11 server dei parametri. Utilizza questo livello di scalabilità solo se esegui l'addestramento con TensorFlow o se utilizzi container personalizzati. Nome della macchina Compute Engine, master: n1-highcpu-16, worker: n1-highcpu-16, server di parametri: n1-highmem-8 |
BASIC_GPU
|
Una singola istanza worker con una GPU. Per scoprire di più sulle unità di elaborazione grafica (GPU), consulta la sezione sull'addestramento con le GPU. Utilizza questo livello di scalabilità solo se esegui l'addestramento con TensorFlow o utilizzi un contenitore personalizzato. Nome della macchina Compute Engine: n1-standard-8 con una GPU |
BASIC_TPU
|
Una VM master e una Cloud TPU con otto core TPU v2. Scopri come utilizzare le TPU per il tuo job di addestramento. Utilizza questo livello di scalabilità solo se esegui l'addestramento con TensorFlow o se utilizzi container personalizzati. Nome della macchina Compute Engine, master: n1-standard-4, worker: Cloud TPU (8 core TPU v2) |
CUSTOM
|
Il livello CUSTOM non è un livello impostato, ma ti consente di utilizzare la tua specifica del cluster. Quando utilizzi questo livello, imposta i valori per configurare il cluster di elaborazione in base a queste linee guida:
|
Tipi di macchine per il livello di scalabilità personalizzato
Utilizza un livello di scala personalizzato per un maggiore controllo sul cluster di elaborazione utilizzato per addestrare il modello. Specifica la configurazione nell'oggetto TrainingInput
nella configurazione del job. Se utilizzi il comando gcloud ai-platform jobs submit training
per inviare il job di addestramento, puoi utilizzare gli stessi identificatori:
Imposta il livello della scala (
scaleTier
) suCUSTOM
.Imposta i valori per il numero di worker (
workerCount
), server dei parametri (parameterServerCount
) e valutatori (evaluatorCount
) di cui hai bisogno.AI Platform Training supporta l'addestramento distribuito solo quando esegui l'addestramento con TensorFlow o utilizzi un container personalizzato. Se il job di addestramento esegue codice scikit-learn o XGBoost, non specificare worker, server di parametri o valutatori.
Imposta il tipo di macchina per il tuo worker master (
masterType
). Se hai scelto di utilizzare worker, server dei parametri o valutatori, imposta i tipi di macchina per ciascuno di questi rispettivamente nei campiworkerType
,parameterServerType
eevaluatorType
.Puoi specificare tipi di macchine diversi per
masterType
,workerType
,parameterServerType
eevaluatorType
, ma non puoi utilizzare tipi di macchine diversi per le singole istanze. Ad esempio, puoi utilizzare un tipo di macchinan1-highmem-8
per i server dei parametri, ma non puoi impostare alcuni server dei parametri in modo che utilizzinon1-highmem-8
e altrin1-highcpu-16
.Se hai bisogno di un solo worker con una configurazione personalizzata (non un cluster completo), devi specificare un livello di scalabilità personalizzato con un tipo di macchina solo per il master. In questo modo ottieni solo il singolo worker. Ecco un esempio di file
config.yaml
:trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16
Tipi di macchine Compute Engine
Puoi utilizzare i nomi di alcuni tipi di macchine predefinite di Compute Engine per masterType
, workerType
, parameterServerType
e evaluatorType
del tuo job. Se esegui l'addestramento con TensorFlow o utilizzi container personalizzati,
se vuoi puoi utilizzare vari tipi di GPU con
questi tipi di macchine.
Il seguente elenco contiene gli identificatori dei tipo di macchina Compute Engine che puoi utilizzare per il job di addestramento:
e2-standard-4
e2-standard-8
e2-standard-16
e2-standard-32
e2-highmem-2
e2-highmem-4
e2-highmem-8
e2-highmem-16
e2-highcpu-16
e2-highcpu-32
n2-standard-4
n2-standard-8
n2-standard-16
n2-standard-32
n2-standard-48
n2-standard-64
n2-standard-80
n2-highmem-2
n2-highmem-4
n2-highmem-8
n2-highmem-16
n2-highmem-32
n2-highmem-48
n2-highmem-64
n2-highmem-80
n2-highcpu-16
n2-highcpu-32
n2-highcpu-48
n2-highcpu-64
n2-highcpu-80
n1-standard-4
n1-standard-8
n1-standard-16
n1-standard-32
n1-standard-64
n1-standard-96
n1-highmem-2
n1-highmem-4
n1-highmem-8
n1-highmem-16
n1-highmem-32
n1-highmem-64
n1-highmem-96
n1-highcpu-16
n1-highcpu-32
n1-highcpu-64
n1-highcpu-96
c2-standard-4
c2-standard-8
c2-standard-16
c2-standard-30
c2-standard-60
m1-ultramem-40
m1-ultramem-80
m1-ultramem-160
m1-megamem-96
a2-highgpu-1g
* (anteprima)a2-highgpu-2g
* (anteprima)a2-highgpu-4g
* (anteprima)a2-highgpu-8g
* (anteprima)a2-megagpu-16g
* (anteprima)
Per conoscere le specifiche tecniche di ogni tipo di macchina, consulta la documentazione di Compute Engine sui tipi di macchine.
Tipi di macchine precedenti
Anziché utilizzare i tipi di macchine Compute Engine per il tuo job, puoi specificare i nomi dei tipo di macchina precedenti. Questi tipi di macchine forniscono le stesse risorse vCPU e di memoria dei tipi di macchine Compute Engine equivalenti, ma hanno limitazioni di configurazione aggiuntive:
Non puoi personalizzare l'utilizzo della GPU utilizzando un
acceleratorConfig
. Tuttavia, alcuni tipi di macchine legacy includono le GPU. Consulta la tabella riportata di seguito.Se la configurazione del job di addestramento utilizza più macchine, non puoi combinare i tipi di macchine Compute Engine con i tipi di macchine precedenti. Il master, i worker, i server dei parametri e gli valutatori devono utilizzare tutti i tipi di macchine di uno o dell'altro gruppo.
Ad esempio, se configuri
masterType
comen1-highcpu-32
(un tipo di macchina Compute Engine), non puoi impostareworkerType
sucomplex_model_m
(un tipo di macchina precedente), ma puoi impostarlo sun1-highcpu-16
(un altro tipo di macchina Compute Engine).
La tabella seguente descrive i tipi di macchine precedenti:
Tipi di macchine precedenti | |
---|---|
standard
|
Una configurazione di base della macchina adatta per l'addestramento di modelli semplici con set di dati da piccoli a medi. Nome della macchina Compute Engine: n1-standard-4 |
large_model
|
Una macchina con molta memoria, particolarmente adatta per i server di parametri quando il modello è di grandi dimensioni (con molti livelli nascosti o livelli con un numero molto elevato di nodi). Nome della macchina Compute Engine: n1-highmem-8 |
complex_model_s
|
Una macchina adatta al master e ai worker del cluster quando il tuo modello richiede più calcoli di quanto possa gestire in modo soddisfacente la macchina standard. Nome della macchina Compute Engine: n1-highcpu-8 |
complex_model_m
|
Una macchina con circa il doppio del numero di core e circa il doppio della memoria di complex_model_s. Nome della macchina Compute Engine: n1-highcpu-16 |
complex_model_l
|
Una macchina con circa il doppio del numero di core e circa il doppio della memoria di complex_model_m. Nome della macchina Compute Engine: n1-highcpu-32 |
standard_gpu
|
Una macchina equivalente a quella standard che include anche una singola GPU. Utilizza questo tipo di macchina solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati. Nome della macchina Compute Engine: n1-standard-8 con una GPU |
complex_model_m_gpu
|
Una macchina equivalente a complex_model_m che include anche quattro GPU. Utilizza questo tipo di macchina solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati. Nome della macchina Compute Engine: n1-standard-16 con 4 GPU |
complex_model_l_gpu
|
Una macchina equivalente a complex_model_l che include anche otto GPU. Utilizza questo tipo di macchina solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati. Nome della macchina Compute Engine: n1-standard-32 con 8 GPU |
standard_p100
|
Una macchina equivalente a quella standard che include anche una singola GPU NVIDIA Tesla P100. Utilizza questo tipo di macchina solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati. Nome della macchina Compute Engine: n1-standard-8-p100x1 |
complex_model_m_p100
|
Una macchina equivalente a complex_model_m che include anche quattro GPU NVIDIA Tesla P100. Utilizza questo tipo di macchina solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati. Nome della macchina Compute Engine: n1-standard-16-p100x4 |
standard_v100
|
Una macchina equivalente a una standard che include anche una singola GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati. Nome della macchina Compute Engine: n1-standard-8-v100x1 |
large_model_v100
|
Una macchina equivalente a large_model che include anche una singola GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati. Nome della macchina Compute Engine: n1-highmem-8-v100x1 |
complex_model_m_v100
|
Una macchina equivalente a complex_model_m che include anche quattro GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati. Nome della macchina Compute Engine: n1-standard-16-v100x4 |
complex_model_l_v100
|
Una macchina equivalente a complex_model_l che include anche otto GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati. Nome della macchina Compute Engine: n1-standard-32-v100x8 |
Addestramento con GPU e TPU
Alcuni livelli di scalabilità e tipi di macchine precedenti includono unità di elaborazione grafica (GPU). Puoi anche collegare più GPU a tua scelta se utilizzi un tipo di macchina Compute Engine. Per scoprire di più, leggi l'articolo sull'addestramento con GPU.
Per eseguire l'addestramento con le Tensor Processing Unit (TPU), devi utilizzare il BASIC_TPU
livello di scalabilità o il tipo di macchina cloud_tpu
. Il tipo di macchina cloud_tpu
offre opzioni di configurazione speciali: puoi utilizzarlo insieme ai tipi di macchine Compute Engine o con i tipi di macchine precedenti e puoi configurarlo per utilizzare 8 core TPU v2 o 8 core TPU v3. Scopri come utilizzare le TPU per il tuo job di addestramento.