Addestra un modello ML con PyTorch
Questo tutorial descrive come eseguire un job di addestramento che utilizza Framework di machine learning PyTorch. La il tutorial descrive come la configurazione del job per l'utilizzo di PyTorch differisce leggermente da utilizzando altri framework ML supportati da AI Platform Training. Poi ti mostra come di eseguire un job di addestramento utilizzando il codice PyTorch di esempio che addestra un modello in base dati di Viaggi in taxi a Chicago del set di dati.
Il tutorial mostra anche come utilizzare PyTorch con le GPU e con l'ottimizzazione degli iperparametri.
Container PyTorch
Versioni di runtime di AI Platform Training non includere PyTorch come dipendenza. Per eseguire invece un job di addestramento che utilizza PyTorch, specifica un container PyTorch predefinito per consentire ad AI Platform Training di per gli utilizzi odierni.
La configurazione di un container predefinito per l'addestramento utilizza una parte della stessa sintassi configurando un container personalizzato. Tuttavia, non devi creare un container Docker, specificare invece l'URI di un un'immagine container fornita da AI Platform e fornisce un addestramento Python pacchetto che hai creato.
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 derivano da Deep Learning Containers e includi le dipendenze fornita da Container di deep learning.
Se vuoi utilizzare una versione di PyTorch non disponibile in una delle di container, segui la guida all'utilizzo di una container.
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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva l'API AI Platform Training & Prediction.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Attiva l'API AI Platform Training & Prediction.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Download codice campione corso...
Esegui questi comandi per scaricare l'applicazione di addestramento PyTorch di esempio e passa 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 pacchettizzare l'addestramento
un'applicazione.
Creazione di un bucket Cloud Storage
Crea un bucket Cloud Storage per archiviare il codice di addestramento pacchettizzato gli artefatti del modello creati dal job di addestramento. Esegui questo comando:
gcloud storage buckets create gs://BUCKET_NAME --location=us-central1
Sostituisci BUCKET_NAME con un nome univoco di tua scelta per il tuo di sincronizzare la directory di una VM con un bucket. Scopri di più sui requisiti per il bucket personalizzati.
In alternativa, puoi utilizzare un bucket Cloud Storage esistente
progetto Google Cloud. Per questo tutorial, assicurati di utilizzare un bucket
Regione us-central1
.
Addestramento di un modello PyTorch
Questo tutorial mostra diversi modi per addestrare un modello PyTorch su AI Platform Training:
- Su un'istanza di una 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 ora e segui le istruzioni nella per il resto del tutorial. Poi puoi ripetere questa sezione se vuoi di provare ad eseguire 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 specificare 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 dell'istanza di Cloud Storage che hai creato in una sezione precedente.
GPU
Assicurati che il codice di addestramento PyTorch sia a conoscenza della GPU sulla VM che utilizzato dal job di addestramento, in modo che PyTorch sposti tensori e moduli 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 ha una GPU:
Se modifichi il codice di addestramento, leggi la guida di PyTorch a CUDA. semantica a per assicurarti che venga utilizzata la GPU.
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 dell'istanza di Cloud Storage che hai creato in una sezione precedente.
Ottimizzazione degli iperparametri
Il codice campione per questo tutorial ottimizza il tasso di apprendimento e la dimensione del batch parametri per ridurre al minimo la perdita di test.
Assicurati che il codice di addestramento sia pronto per l'ottimizzazione degli iperparametri AI Platform Training:
Il codice deve analizzare l'iperparametro flag che AI Platform Training passa.
Il codice campione gestisce questa operazione in
task.py
, quindi non è necessario eseguire l'operazione nulla, a meno che non modifichi il codice.Il codice deve utilizzare
cloudml-hypertune
libreria per segnalare la propria ottimizzazione degli iperparametri metrica ad AI Platform Training.Il codice campione gestisce questa operazione in
experiment.py
, quindi non è necessario fare nulla, a meno che non modifichi il codice.
Esegui questo comando per creare un file
config.yaml
che specifichi 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 ottimizzano 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 dell'istanza di Cloud Storage che hai creato in una sezione precedente.
Queste variabili Bash servono ai seguenti scopi:
JOB_NAME
è un identificatore per il job di AI Platform Training. Deve essere è univoco tra i job AI Platform Training nel tuo progetto Google Cloud.JOB_DIR
viene utilizzato da AI Platform Training per determinare dove esattamente per caricare 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 questo comando 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 formazione per informazioni sul di configurazione e 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 del job con il seguente comando:
gcloud ai-platform jobs describe ${JOB_NAME}
Puoi trasmettere i log di addestramento del job con il seguente comando:
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 di JOB_DIR
della directory Cloud Storage specificata.
Passaggi successivi
- Scopri come eseguire PyTorch distribuito l'addestramento su un cluster multinodo.
- Scopri come utilizzare una TPU per l'addestramento con PyTorch su AI Platform Training.
- Scopri come personalizzare configurazione.
- Se vuoi utilizzare una versione di PyTorch non disponibile in un ambiente un container, imparerai a utilizzare un container.
- Scopri di più su come utilizzare PyTorch in PyTorch documentazione.