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 il processo, puoi scegliere da un insieme di specifiche del cluster predefinite chiamate livelli di scalabilità. In alternativa, puoi scegliere un livello personalizzato e specificare personalmente i tipi di macchina.
Specificare la configurazione
La modalità di specifica della 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 macchina nel file di configurazione. Puoi assegnare a questo 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
Specifica 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 flag a riga di comando anziché in un file di configurazione. Scopri di più su come utilizzare questi flag.
L'esempio seguente mostra come inviare un job di addestramento con una configurazione simile all'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 ulteriori dettagli su come eseguire un job di addestramento.
Python
Specifica l'identificatore del livello di scalabilità e i tipi di macchina nell'oggetto TrainingInput
nella configurazione del job.
L'esempio seguente mostra come creare una rappresentazione di un job per 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 il nome che preferisci. Tuttavia, i nomi delle chiavi del dizionario devono essere gli stessi mostrati, in modo da corrispondere ai nomi nelle risorse Job
e TrainingInput
.
Livelli di scalabilità
Google potrebbe ottimizzare la configurazione dei livelli di scalabilità per diversi job nel corso del tempo, in base al feedback dei clienti e alla disponibilità di risorse cloud. Ogni livello di scalabilità è definito in termini di idoneità per determinati tipi di job. In generale, più il livello è avanzato, più macchine vengono allocate al cluster e più potenti sono le specifiche di ogni macchina virtuale. Man mano che aumenti la 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 job.
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 scalabilità su BASIC
o CUSTOM
.
Di seguito sono riportati gli identificatori del livello di scalabilità:
Livello di scalabilità AI Platform Training | |
---|---|
BASIC
|
Un'istanza worker singola. Questo livello è adatto per imparare come utilizzare AI Platform Training e per sperimentare nuovi modelli utilizzando piccoli set di dati. Nome 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 ti stai allenando con TensorFlow o utilizzando container personalizzati. Nome macchina di Compute Engine, master: n1-highcpu-8, lavoratori: n1-highcpu-8, server dei parametri: n1-standard-4 |
PREMIUM_1
|
Un'istanza master, più 19 worker e 11 server dei parametri. Utilizza questo livello di scalabilità solo se ti stai allenando con TensorFlow o utilizzando container personalizzati. Nome della macchina Compute Engine, master: n1-highcpu-16, lavoratori: n1-highcpu-16, server dei parametri: n1-highmem-8 |
BASIC_GPU
|
Un'istanza worker singola con una singola GPU NVIDIA Tesla K80. Per ulteriori informazioni sulle unità di elaborazione grafica (GPU), consulta la sezione sull'addestramento con le GPU. Utilizza questo livello di scalabilità solo se addestrati con TensorFlow o utilizzando un container personalizzato. Nome macchina di Compute Engine: n1-standard-8 con una GPU k80 |
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 ti stai allenando con TensorFlow o utilizzando container personalizzati. Nome della macchina Compute Engine, master: n1-standard-4, lavoratori: Cloud TPU (8 core TPU v2) |
CUSTOM
|
Il livello CUSTOM non è un livello impostato, ma consente di utilizzare le specifiche del cluster. Quando utilizzi questo livello, imposta i valori per configurare il cluster di elaborazione in base a queste linee guida:
|
Tipi di macchina per il livello di scalabilità personalizzata
Usa un livello di scalabilità personalizzata per un controllo più preciso sul cluster di elaborazione utilizzato per addestrare il modello. Specificare 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 di scalabilità (
scaleTier
) suCUSTOM
.Imposta i valori relativi al numero di worker (
workerCount
), server dei parametri (parameterServerCount
) e valutatori (evaluatorCount
) necessari.AI Platform Training supporta l'addestramento distribuito solo durante l'addestramento con TensorFlow o l'utilizzo di un container personalizzato. Se il job di addestramento esegue codice scikit-learn o XGBoost, non specificare worker, server dei parametri o valutatori.
Imposta il tipo di macchina per il worker master (
masterType
). Se hai scelto di utilizzare worker, server parametri o valutatori, imposta i rispettivi tipi di macchina 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 alcuni server dei parametri non possono essere impostati conn1-highmem-8
e altri conn1-highcpu-16
.Se ti serve un solo worker con una configurazione personalizzata (non un cluster completo), devi specificare un livello di scalabilità personalizzata con un tipo di macchina solo per il master. Questo ti dà un unico lavoratore. Ecco un file
config.yaml
di esempio:trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16
Tipi di macchina 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 con container personalizzati,
puoi facoltativamente utilizzare diversi tipi di GPU
con questi tipi di macchine.
Il seguente elenco contiene gli identificatori dei tipi di macchine di Compute Engine che puoi utilizzare per il tuo 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 ulteriori informazioni sulle specifiche tecniche di ogni tipo di macchina, consulta la documentazione di Compute Engine sui tipi di macchina.
Tipi di macchina legacy
Invece di utilizzare i tipi di macchine di Compute Engine per il tuo job, puoi specificare i nomi precedenti dei tipi di macchine. Questi tipi di macchina forniscono le stesse risorse di vCPU e memoria dei tipi equivalenti di macchine Compute Engine, ma hanno limitazioni di configurazione aggiuntive:
Non puoi personalizzare l'utilizzo della GPU utilizzando una
acceleratorConfig
. Tuttavia, alcuni tipi di macchina legacy includono le GPU. Consulta la seguente tabella.Se la configurazione del job di addestramento utilizza più macchine, non puoi combinare i tipi di macchine di Compute Engine con i tipi di macchina legacy. I master, i worker, i server dei parametri e i valutatori devono utilizzare tutti i tipi di macchina di un gruppo o dell'altro.
Ad esempio, se configuri
masterType
comen1-highcpu-32
(un tipo di macchina Compute Engine), non puoi impostareworkerType
sucomplex_model_m
(un tipo di macchina legacy), ma puoi impostarlo sun1-highcpu-16
(un altro tipo di macchina Compute Engine).
La tabella seguente descrive i tipi di macchina legacy:
Tipi di macchina legacy | |
---|---|
standard
|
Una configurazione di macchina di base adatta per l'addestramento di modelli semplici con set di dati da piccoli a moderati. Nome macchina Compute Engine: n1-standard-4 |
large_model
|
Macchina con molta memoria, particolarmente adatta per i server dei parametri quando il modello è di grandi dimensioni (con molti livelli nascosti o livelli con un numero molto elevato di nodi). Nome macchina Compute Engine: n1-highmem-8 |
complex_model_s
|
Una macchina adatta al master e ai worker del cluster quando il modello richiede più calcoli di quelli che la macchina standard può gestire in modo soddisfacente. Nome macchina di 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 complesse_model_s. Nome macchina di 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 macchina di Compute Engine: n1-highcpu-32 |
standard_gpu
|
Una macchina equivalente allo standard che include anche una singola GPU NVIDIA Tesla K80. Utilizza questo tipo di macchina solo se ti stai allenando con TensorFlow o utilizzando container personalizzati. Nome macchina di Compute Engine: n1-standard-8 con una GPU k80 |
complex_model_m_gpu
|
Una macchina equivalente a role_model_m che include anche quattro GPU NVIDIA Tesla K80. Utilizza questo tipo di macchina solo se addestrati con TensorFlow o utilizzando container personalizzati. Nome macchina Compute Engine: n1-standard-16-k80x4 |
complex_model_l_gpu
|
Una macchina equivalente a complesse_model_l che include anche otto GPU NVIDIA Tesla K80. Utilizza questo tipo di macchina solo se addestrati con TensorFlow o utilizzando container personalizzati. Nome macchina Compute Engine: n1-standard-32-k80x8 |
standard_p100
|
Una macchina equivalente allo standard che include anche una singola GPU NVIDIA Tesla P100. Utilizza questo tipo di macchina solo se ti stai allenando con TensorFlow o utilizzando container personalizzati. Nome macchina di Compute Engine: n1-standard-8-p100x1 |
complex_model_m_p100
|
Una macchina equivalente a complesse_model_m che include anche quattro GPU NVIDIA Tesla P100. Utilizza questo tipo di macchina solo se addestrati con TensorFlow o utilizzando container personalizzati. Nome macchina Compute Engine: n1-standard-16-p100x4 |
standard_v100
|
Una macchina equivalente a uno standard che include anche una singola GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se ti stai allenando con TensorFlow o utilizzando container personalizzati. Nome macchina di 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 ti stai allenando con TensorFlow o utilizzando container personalizzati. Nome macchina di Compute Engine: n1-highmem-8-v100x1 |
complex_model_m_v100
|
Una macchina equivalente a role_model_m che include anche quattro GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se addestrati con TensorFlow o utilizzando container personalizzati. Nome macchina di Compute Engine: n1-standard-16-v100x4 |
complex_model_l_v100
|
Una macchina equivalente a complesse_model_l che include anche otto GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se addestrati con TensorFlow o utilizzando container personalizzati. Nome macchina Compute Engine: n1-standard-32-v100x8 |
Addestramento con GPU e TPU
Alcuni livelli di scalabilità e tipi di macchine legacy includono unità di elaborazione grafica (GPU). Puoi anche collegare la tua scelta di diverse GPU se utilizzi un tipo di macchina Compute Engine. Per ulteriori informazioni, leggi la pagina relativa all'addestramento con GPU.
Per eseguire l'addestramento con le unità di elaborazione Tensor (TPU), devi utilizzare il
livello di scalabilità BASIC_TPU
o il tipo di macchina cloud_tpu
. Il tipo di macchina cloud_tpu
ha opzioni di configurazione speciali: puoi utilizzarlo insieme ai tipi di macchine di Compute Engine o con i tipi di macchina legacy e puoi configurarlo per l'utilizzo di 8 core TPU v2 o 8 core TPU v3. Scopri come utilizzare le TPU per il tuo job di addestramento.