Addestra un modello ML con PyTorch
Questo tutorial descrive come eseguire un job di addestramento che utilizza il framework di machine learning PyTorch. Il tutorial descrive in che modo la configurazione del job per l'uso di PyTorch è leggermente diversa rispetto all'uso di altri framework ML supportati da AI Platform Training. Quindi mostra come eseguire un job di addestramento utilizzando un codice PyTorch di esempio che addestra un modello in base ai dati del set di dati di Chicago Taxi Trips.
Il tutorial mostra anche come utilizzare PyTorch con le GPU e con l'ottimizzazione degli iperparametri.
Container PyTorch
Le versioni di runtime di AI Platform Training non includono PyTorch come dipendenza. Per eseguire un job di addestramento che utilizza PyTorch, specifica un container PyTorch predefinito da utilizzare tramite AI Platform Training.
La configurazione di un container predefinito per l'addestramento utilizza alcune delle stesse sintassi per cui configuri un contenitore personalizzato. Tuttavia, non devi creare il tuo container Docker; specifica invece l'URI di un'immagine container fornita da AI Platform e fornisci un pacchetto di addestramento Python che crei.
AI Platform fornisce i seguenti container PyTorch predefiniti:
URI immagine container | Versione PyTorch | Processori supportati |
---|---|---|
gcr.io/cloud-ml-public/training/pytorch-xla.1-11 |
1.11 | CPU, TPU |
gcr.io/cloud-ml-public/training/pytorch-gpu.1-11 |
1.11 | GPU |
gcr.io/cloud-ml-public/training/pytorch-xla.1-10 |
1,10 | CPU, TPU |
gcr.io/cloud-ml-public/training/pytorch-gpu.1-10 |
1,10 | GPU |
gcr.io/cloud-ml-public/training/pytorch-xla.1-9 |
1.9 | CPU, TPU |
gcr.io/cloud-ml-public/training/pytorch-gpu.1-9 |
1.9 | GPU |
gcr.io/cloud-ml-public/training/pytorch-xla.1-7 |
1,7 | CPU, TPU |
gcr.io/cloud-ml-public/training/pytorch-gpu.1-7 |
1,7 | GPU |
gcr.io/cloud-ml-public/training/pytorch-xla.1-6 |
1.6 | CPU, TPU |
gcr.io/cloud-ml-public/training/pytorch-gpu.1-6 |
1.6 | GPU |
gcr.io/cloud-ml-public/training/pytorch-cpu.1-4 |
1.4 | CPU |
gcr.io/cloud-ml-public/training/pytorch-gpu.1-4 |
1.4 | GPU |
Queste immagini container sono tratte dai container di deep learning e includono le dipendenze fornite dai container di deep learning.
Se vuoi utilizzare una versione di PyTorch non disponibile in uno dei container predefiniti, segui la guida all'utilizzo di un container personalizzato.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
-
Attiva l'API AI Platform Training & Prediction.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
-
Attiva l'API AI Platform Training & Prediction.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
Download del codice campione
Esegui i comandi seguenti per scaricare l'applicazione di addestramento PyTorch di esempio e accedere alla directory con l'applicazione di addestramento:
git clone --depth=1 \
https://github.com/GoogleCloudPlatform/ai-platform-samples.git
cd ai-platform-samples/training/pytorch/structured/python_package
Facoltativamente, esamina la struttura del codice di addestramento:
ls -pR
La directory trainer/
contiene l'applicazione di addestramento PyTorch e setup.py
fornisce i dettagli di configurazione per la pacchettizzazione dell'applicazione di addestramento.
Creazione di un bucket Cloud Storage
Crea un bucket Cloud Storage per archiviare il codice di addestramento pacchettizzato e gli artefatti del modello creati dal job di addestramento. Esegui questo comando:
gsutil mb -l us-central1 gs://BUCKET_NAME
Sostituisci BUCKET_NAME con un nome univoco che scegli per il bucket. Scopri i requisiti per i nomi dei bucket.
In alternativa, puoi utilizzare un bucket Cloud Storage esistente nel progetto Google Cloud. Per questo tutorial, assicurati di utilizzare un bucket nella regione us-central1
.
Addestrare un modello PyTorch
Questo tutorial mostra diversi modi per addestrare un modello PyTorch su AI Platform Training:
- Su un'istanza di macchina virtuale (VM) con un processore CPU
- Su una VM con un processore GPU
- Utilizzo dell'ottimizzazione degli iperparametri (su una VM con un processore CPU)
Scegli uno di questi metodi adesso e segui le istruzioni nelle schede corrispondenti per il resto di questo tutorial. Puoi ripetere questa sezione se vuoi provare l'addestramento con una delle altre configurazioni.
Preparazione per la creazione di un job di addestramento
Prima di creare un job di addestramento, assicurati che il codice di addestramento sia pronto e specifica alcune opzioni di configurazione nel tuo ambiente locale.
CPU
Imposta diverse variabili Bash da utilizzare quando crei il job di addestramento:
BUCKET_NAME=BUCKET_NAME
JOB_NAME=getting_started_pytorch_cpu
JOB_DIR=gs://${BUCKET_NAME}/${JOB_NAME}/models
Sostituisci BUCKET_NAME con il nome del bucket Cloud Storage creato in una sezione precedente.
GPU
Assicurati che il codice di addestramento PyTorch sia a conoscenza della GPU della VM utilizzata dal tuo job di addestramento, in modo che PyTorch trasferisca tensori e moduli alla GPU in modo appropriato.
Se utilizzi il codice campione fornito, non devi fare nulla, perché il codice campione contiene la logica per rilevare se la macchina che esegue il codice ha una GPU:
Se modifichi il codice di addestramento, leggi la guida PyTorch alla semantica CUDA per assicurarti che la GPU venga utilizzata.
Imposta diverse variabili Bash da utilizzare quando crei il job di addestramento:
BUCKET_NAME=BUCKET_NAME JOB_NAME=getting_started_pytorch_gpu JOB_DIR=gs://${BUCKET_NAME}/${JOB_NAME}/models
Sostituisci BUCKET_NAME con il nome del bucket Cloud Storage creato in una sezione precedente.
Ottimizzazione degli iperparametri
Il codice campione per questo tutorial regola i parametri della percentuale di apprendimento e delle dimensioni del batch per ridurre al minimo la perdita di test.
Assicurati che il tuo codice di addestramento sia pronto per l'ottimizzazione degli iperparametri in AI Platform Training:
Il codice deve analizzare i flag di iperparametro che viene trasmesso da AI Platform Training.
Il codice campione gestisce tutto questo in
task.py
, perciò non devi fare nulla a meno che non modifichi il codice.Il codice deve utilizzare la libreria
cloudml-hypertune
per segnalare la metrica di ottimizzazione degli iperparametri per AI Platform Training.Il codice campione gestisce questo aspetto in
experiment.py
, quindi non devi fare nulla a meno che non modifichi il codice.
Esegui il comando seguente per creare un file
config.yaml
che specifichi le opzioni di ottimizzazione degli iperparametri:cat > config.yaml <<END trainingInput: hyperparameters: goal: MINIMIZE hyperparameterMetricTag: test_loss maxTrials: 2 maxParallelTrials: 2 enableTrialEarlyStopping: True params: - parameterName: learning-rate type: DOUBLE minValue: 0.0001 maxValue: 1 scaleType: UNIT_LOG_SCALE - parameterName: batch-size type: INTEGER minValue: 1 maxValue: 256 scaleType: UNIT_LINEAR_SCALE END
Queste opzioni regolano gli iperparametri
--learning-rate
e--batch-size
per ridurre al minimo la perdita del modello.Imposta diverse variabili Bash da utilizzare quando crei il job di addestramento:
BUCKET_NAME=BUCKET_NAME JOB_NAME=getting_started_pytorch_hptuning JOB_DIR=gs://${BUCKET_NAME}/${JOB_NAME}/models
Sostituisci BUCKET_NAME con il nome del bucket Cloud Storage creato in una sezione precedente.
Queste variabili Bash hanno i seguenti scopi:
JOB_NAME
è un identificatore del job di AI Platform Training. Deve essere univoco tra i job di AI Platform Training nel tuo progetto Google Cloud.JOB_DIR
viene utilizzato da AI Platform Training per determinare dove caricare esattamente la tua applicazione di addestramento. L'applicazione di addestramento utilizza ancheJOB_DIR
per determinare dove esportare gli artefatti del modello al termine dell'addestramento.
Creazione di un job di addestramento
Esegui il comando seguente per creare un job di addestramento:
CPU
gcloud ai-platform jobs submit training ${JOB_NAME} \
--region=us-central1 \
--master-image-uri=gcr.io/cloud-ml-public/training/pytorch-xla.1-10 \
--scale-tier=BASIC \
--job-dir=${JOB_DIR} \
--package-path=./trainer \
--module-name=trainer.task \
-- \
--train-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_train.csv \
--eval-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_eval.csv \
--num-epochs=10 \
--batch-size=100 \
--learning-rate=0.001
GPU
gcloud ai-platform jobs submit training ${JOB_NAME} \
--region=us-central1 \
--master-image-uri=gcr.io/cloud-ml-public/training/pytorch-gpu.1-10 \
--scale-tier=CUSTOM \
--master-machine-type=n1-standard-8 \
--master-accelerator=type=nvidia-tesla-p100,count=1 \
--job-dir=${JOB_DIR} \
--package-path=./trainer \
--module-name=trainer.task \
-- \
--train-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_train.csv \
--eval-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_eval.csv \
--num-epochs=10 \
--batch-size=100 \
--learning-rate=0.001
Ottimizzazione degli iperparametri
gcloud ai-platform jobs submit training ${JOB_NAME} \
--region=us-central1 \
--master-image-uri=gcr.io/cloud-ml-public/training/pytorch-xla.1-10 \
--scale-tier=BASIC \
--job-dir=${JOB_DIR} \
--package-path=./trainer \
--module-name=trainer.task \
--config=config.yaml \
-- \
--train-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_train.csv \
--eval-files=gs://cloud-samples-data/ai-platform/chicago_taxi/training/small/taxi_trips_eval.csv \
--num-epochs=10
Leggi la guida ai job di addestramento per ulteriori informazioni sui flag di configurazione e su come utilizzarli per personalizzare l'addestramento.
Il comando restituisce un messaggio simile al seguente:
Job [JOB_NAME] submitted successfully.
Your job is still active. You may view the status of your job with the command
$ gcloud ai-platform jobs describe JOB_NAME
or continue streaming the logs with the command
$ gcloud ai-platform jobs stream-logs JOB_NAME
jobId: JOB_NAME
state: QUEUED
Puoi monitorare lo stato dei job con il comando seguente:
gcloud ai-platform jobs describe ${JOB_NAME}
Puoi avviare il flusso dei log di addestramento del job con il comando seguente:
gcloud ai-platform jobs stream-logs ${JOB_NAME}
Al termine del job di addestramento, il modello ML addestrato viene salvato in un file denominato model.pth
in una directory con timestamp all'interno della directory Cloud Storage JOB_DIR
.
Passaggi successivi
- Scopri come eseguire l'addestramento di PyTorch distribuito su un cluster multinodo.
- Scopri come utilizzare una TPU per l'addestramento con PyTorch su AI Platform Training.
- Scopri come personalizzare la configurazione del job di addestramento.
- Se vuoi utilizzare una versione di PyTorch non disponibile in un container predefinito, scopri come utilizzare un container personalizzato.
- Scopri di più su come utilizzare PyTorch nella documentazione di PyTorch.