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 i tipi di macchina per te.
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 il contenuto 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
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 usare questi e i flag facoltativi.
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 macchina nella
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: tu
puoi assegnare a questi dizionari il nome che preferisci. Tuttavia, le chiavi del dizionario
deve essere denominato esattamente come mostrato, affinché corrisponda a quelli in Job
e TrainingInput
.
Livelli di scalabilità
Google può ottimizzare la configurazione dei livelli di scalabilità per job diversi nel 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 di lavoro. In genere, più il livello è avanzato, più macchine vengono allocate al cluster e più potenti saranno le specifiche di ogni in una 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 le pagina dei prezzi per calcolare il costo il tuo lavoro.
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 scikit-learn o
Nel codice XGBoost, impostare il livello di scalabilità su BASIC
o CUSTOM
.
Di seguito sono riportati gli identificatori dei livelli di scalabilità:
Livello di scalabilità di AI Platform Training | |
---|---|
BASIC
|
Una singola istanza worker. Questo livello è adatto per scoprire come utilizzare AI Platform Training e sperimentare nuovi modelli utilizzando e set di dati di piccole dimensioni. Nome macchina Compute Engine: n1-standard-4 |
STANDARD_1
|
un'istanza master, più quattro worker e tre parametri server web. Usa questo livello di scalabilità solo se ti stai addestrando con TensorFlow o l'uso di container personalizzati. Nome macchina Compute Engine, master: n1-highcpu-8, workers: 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 addestrando con TensorFlow o utilizzando di container personalizzati. Nome macchina Compute Engine, master: n1-highcpu-16, workers: n1-highcpu-16, server dei 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 macchina Compute Engine: n1-standard-8 con una GPU |
BASIC_TPU
|
Una VM master e una Cloud TPU con otto core TPU v2. Consulta come utilizzare le TPU per il job di addestramento. Utilizza questo livello di scalabilità solo se ti stai addestrando con TensorFlow o utilizzando di container personalizzati. Nome della macchina Compute Engine, master: n1-standard-4, worker: Cloud TPU (8 core TPU v2) |
CUSTOM
|
Il livello CUSTOM non è impostato su un livello ma ti consente per utilizzare le tue specifiche del cluster. Quando utilizzi questo livello, imposta per configurare il cluster di elaborazione in base a questi linee guida:
|
Tipi di macchina 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 nel
TrainingInput
nella configurazione del job. Se
utilizzando 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 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 TensorFlow o utilizzare 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 utilizzare worker, server dei parametri o valutatori, quindi imposta i tipi di macchina nei campiworkerType
,parameterServerType
eevaluatorType
rispettivamente.Puoi specificare diversi tipi di macchina per
masterType
,workerType
,parameterServerType
eevaluatorType
, ma non puoi usare criteri diversi per le singole istanze. Ad esempio, puoi utilizzaren1-highmem-8
tipo di macchina per i server dei parametri, ma non puoi impostarne alcuni server dei parametri per usaren1-highmem-8
e altri per usaren1-highcpu-16
.Se hai bisogno di un solo worker con una configurazione personalizzata (non di un cluster completo), devi specificare un livello di scalabilità personalizzato con un tipo di macchina per l'istanza . In questo modo si ottiene il singolo worker. Ecco un esempio di file
config.yaml
:trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16
Tipi di macchine di Compute Engine
Puoi utilizzare i nomi di alcuni tipi di macchine predefinite di Compute Engine per
masterType
, workerType
, parameterServerType
e
evaluatorType
. 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 tipi di macchine 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 conoscere le specifiche tecniche di ciascun tipo di macchina, consulta Documentazione di Compute Engine sulla macchina di classificazione.
Tipi di macchine legacy
Anziché utilizzare i tipi di macchine Compute Engine per il tuo job, puoi specificare i nomi dei tipi di macchine precedenti. Questi tipi di macchine forniscono le stesse vCPU di memoria come tipi di macchine equivalenti di Compute Engine, ma presentano ulteriori limitazioni di configurazione:
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 Tipi di macchine di Compute Engine con tipi di macchine legacy. Il tuo master worker, worker, server dei parametri e valutatori devono tutti usare tipi di macchina di un gruppo o dell'altro.
Ad esempio, se configuri
masterType
comen1-highcpu-32
(un di 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 macchina di base adatta all'addestramento di modelli semplici con set di dati da piccoli a moderati. Nome macchina Compute Engine: n1-standard-4 |
large_model
|
Una macchina con molta memoria, particolarmente adatta ai parametri se il modello è di grandi dimensioni (con molti strati nascosti o nascosti) 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ù calcolo di quello che può fare la macchina standard gestire in modo soddisfacente. Nome macchina Compute Engine: n1-highcpu-8 |
complex_model_m
|
Una macchina con circa il doppio dei core e circa il doppio la memoria di modelli_complessi. Nome della macchina Compute Engine: n1-highcpu-16 |
complex_model_l
|
Una macchina con circa il doppio dei core e circa il doppio la memoria di Complex_model_m. Nome macchina Compute Engine: n1-highcpu-32 |
standard_gpu
|
Una macchina equivalente allo standard che include anche un oggetto con una singola GPU. Utilizza questo tipo di macchina solo se l'addestramento con TensorFlow o l'uso di container personalizzati. Nome macchina Compute Engine: n1-standard-8 con una GPU |
complex_model_m_gpu
|
Una macchina equivalente a Complex_model_m include quattro GPU. Usa questo tipo di macchina solo se addestrando con TensorFlow o utilizzando container personalizzati. Nome macchina Compute Engine: n1-standard-16 con 4 GPU |
complex_model_l_gpu
|
Una macchina equivalente a Complex_model_l, che a sua volta include otto GPU. Usa questo tipo di macchina solo se addestrando con TensorFlow o utilizzando container personalizzati. Nome macchina Compute Engine: n1-standard-32 con 8 GPU |
standard_p100
|
Una macchina equivalente allo standard che include anche un oggetto con una singola GPU NVIDIA Tesla P100. Utilizza questo tipo di macchina solo se l'addestramento con TensorFlow o l'uso di container personalizzati. Nome macchina Compute Engine: n1-standard-8-p100x1 |
complex_model_m_p100
|
Una macchina equivalente a Complex_model_m include quattro GPU NVIDIA Tesla P100. Usa questo tipo di macchina solo se addestrando 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 un oggetto con una singola GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se l'addestramento con TensorFlow o l'uso di container personalizzati. Nome macchina Compute Engine: n1-standard-8-v100x1 |
large_model_v100
|
Una macchina equivalente a large_model che include anche un con una singola GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se l'addestramento con TensorFlow o l'uso di container personalizzati. Nome macchina Compute Engine: n1-highmem-8-v100x1 |
complex_model_m_v100
|
Una macchina equivalente a Complex_model_m include quattro GPU NVIDIA Tesla V100. Usa questo tipo di macchina solo se addestrando con TensorFlow o utilizzando container personalizzati. Nome macchina Compute Engine: n1-standard-16-v100x4 |
complex_model_l_v100
|
Una macchina equivalente a Complex_model_l, che a sua volta include otto GPU NVIDIA Tesla V100. Usa questo tipo di macchina solo se addestrando 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 le unità di elaborazione grafica (GPU). Puoi anche collegare diverse GPU a tua scelta se utilizzi un del tipo di macchina Compute Engine. Per ulteriori informazioni, leggi l'articolo sull'addestramento con per GPU.
Per eseguire l'addestramento con le TPU (Tensor Processing Unit), devi utilizzare il metodo
livello di scalabilità BASIC_TPU
o tipo di macchina cloud_tpu
. La macchina cloud_tpu
ha opzioni di configurazione speciali: puoi utilizzarlo insieme a
di Compute Engine o con tipi di macchine legacy,
configuralo per l'utilizzo di 8 core TPU v2 o 8 core TPU v3. Leggi come utilizzare
TPU per l'addestramento
Google Cloud.