Specifica dei tipi di macchine o dei livelli di scalabilità

Quando esegui un job di addestramento su AI Platform Training, devi specificare il numero e i tipi di macchine necessari. Per semplificare il processo, puoi scegliere tra un insieme di specifiche del cluster predefinite denominate livelli di scalabilità. In alternativa, puoi scegliere un livello personalizzato e specificare manualmente 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 rappresenta 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

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 flag della 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 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 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, le chiavi del dizionario devono essere denominati esattamente come mostrato, per corrispondere ai nomi nelle risorse Job e TrainingInput.

Livelli di scalabilità

Google può ottimizzare la configurazione dei livelli di scalabilità per diversi job nel tempo, in base al feedback dei clienti e alla disponibilità di risorse cloud. Ogni livello di scala è definito in termini di idoneità per determinati tipi di job. In generale, più il livello è avanzato, più sono allocate al cluster le macchine e più potenti sono le specifiche di ogni macchina virtuale. All'aumentare 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.

AI Platform Training non supporta l'addestramento distribuito o l'addestramento con acceleratori per 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 dei livelli di bilancia:

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 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 addestrando con TensorFlow o utilizzando container personalizzati.

Nome macchina Compute Engine, master: n1-highcpu-8, workers: n1-highcpu-8, parameter server: 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 container personalizzati.

Nome macchina Compute Engine, master: n1-highcpu-16, workers: n1-highcpu-16, parameter server: n1-highmem-8

BASIC_GPU

Una singola istanza worker con una GPU. Per scoprire di più sulle GPU, consulta la sezione relativa all'addestramento con GPU. Utilizza questo livello di scalabilità solo se ti stai addestrando con TensorFlow o utilizzando un container 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. Scopri come utilizzare le TPU per il job di addestramento. Utilizza questo livello di scalabilità solo se ti stai addestrando con TensorFlow o utilizzando container personalizzati.

Nome macchina Compute Engine, master: n1-standard-4, worker: Cloud TPU (8 core TPU v2)

CUSTOM

Il livello CUSTOM non è impostato, ma ti consente di utilizzare la specifica del cluster. Quando utilizzi questo livello, imposta i valori per configurare il cluster di elaborazione in base a queste linee guida:

  • Devi impostare TrainingInput.masterType per specificare il tipo di macchina da utilizzare per il nodo master. Questa è l'unica impostazione obbligatoria. Vedi i tipi di macchine descritti di seguito.
  • Puoi impostare TrainingInput.workerCount per specificare il numero di worker da utilizzare. Se specifichi uno o più worker, devi anche impostare TrainingInput.workerType per specificare il tipo di macchina da utilizzare per i nodi worker. Specifica i worker solo se ti stai addestrando con TensorFlow o utilizzando container personalizzati.
  • Puoi impostare TrainingInput.parameterServerCount per specificare il numero di server dei parametri da utilizzare. Se specifichi uno o più server dei parametri, devi impostare anche TrainingInput.parameterServerType per specificare il tipo di macchina da utilizzare per i server dei parametri. Specifica i server dei parametri solo se ti stai addestrando con TensorFlow o utilizzando container personalizzati.
  • Puoi impostare TrainingInput.evaluatorCount per specificare il numero di valutatori da utilizzare. Se specifichi uno o più valutatori, devi anche impostare TrainingInput.evaluatorType per specificare il tipo di macchina da utilizzare per i valutatori. Specifica i valutatori solo se esegui l'addestramento con TensorFlow o utilizzi container personalizzati.

Tipi di macchina per il livello di scalabilità personalizzata

Utilizza un livello di scalabilità personalizzato per un controllo più preciso sul cluster di elaborazione che utilizzi 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 di scalabilità (scaleTier) su CUSTOM.

  • Imposta i valori necessari per il numero di worker (workerCount), server dei parametri (parameterServerCount) e valutatori (evaluatorCount).

    AI Platform Training supporta l'addestramento distribuito solo quando ti addestra con TensorFlow o utilizzi 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 dei parametri o valutatori, imposta i rispettivi tipi di macchina nei campi workerType, parameterServerType e evaluatorType rispettivamente.

    Puoi specificare tipi di macchina diversi per masterType, workerType, parameterServerType e evaluatorType, ma non puoi utilizzare tipi di macchine diversi per le singole istanze. Ad esempio, puoi utilizzare un tipo di macchina n1-highmem-8 per i server dei parametri, ma non puoi impostare alcuni server dei parametri in modo che utilizzino n1-highmem-8 e altri l'utilizzo di n1-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 hai un solo 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 job. Se esegui l'addestramento con TensorFlow o utilizzi container personalizzati, puoi facoltativamente utilizzare vari tipi di GPU con questi tipi di macchine.

Il seguente elenco contiene gli identificatori dei tipo di macchina di 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 ciascun tipo di macchina, leggi la documentazione di Compute Engine sui tipi di macchina.

Tipi di macchina legacy

Anziché utilizzare i tipi di macchine di Compute Engine per il job, puoi specificare i nomi dei tipo di macchina legacy. Questi tipi di macchina forniscono le stesse risorse vCPU e memoria dei tipi di macchine Compute Engine equivalenti, ma presentano 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 di Compute Engine con quelli legacy. Il worker principale, i worker, i server dei parametri e i valutatori devono utilizzare tutti tipi di macchina di un gruppo o dell'altro.

    Ad esempio, se configuri masterType in modo che sia n1-highcpu-32 (un tipo di macchina Compute Engine), non puoi impostare workerType su complex_model_m (un tipo di macchina legacy), ma puoi impostarlo su n1-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 base della macchina adatta per l'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 per i server dei parametri quando il modello è di grandi dimensioni (con molti livelli nascosti o 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 quanto non possa essere gestito in modo soddisfacente dalla macchina standard.

Nome 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 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 macchina Compute Engine: n1-highcpu-32

standard_gpu

Una macchina equivalente allo standard che include anche una singola GPU. Utilizza questo tipo di macchina solo se ti stai addestrando con TensorFlow o utilizzando container personalizzati.

Nome 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 ti stai 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 include anche otto GPU. Utilizza questo tipo di macchina solo se ti stai 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 una singola GPU NVIDIA Tesla P100. Utilizza questo tipo di macchina solo se ti stai addestrando con TensorFlow o utilizzando container personalizzati.

Nome 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 ti stai 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 una singola GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se ti stai addestrando con TensorFlow o utilizzando container personalizzati.

Nome 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 ti stai addestrando con TensorFlow o utilizzando container personalizzati.

Nome 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 ti stai 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 include anche otto GPU NVIDIA Tesla V100. Utilizza questo tipo di macchina solo se ti stai 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 macchina legacy includono GPU (Graphics Processing Unit). Se utilizzi un tipo di macchina Compute Engine, puoi anche collegare diverse GPU che preferisci. Per scoprire di più, leggi la sezione relativa all'addestramento con le GPU.

Per eseguire l'addestramento con le TPU (Tensor Processing Unit), 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 macchina Compute Engine o con i tipi di macchina legacy e puoi configurarlo in modo che utilizzi 8 core TPU v2 o 8 core TPU v3. Scopri come utilizzare le TPU per il tuo job di addestramento.

Passaggi successivi