Melatih model ML dengan PyTorch
Tutorial ini menjelaskan cara menjalankan tugas pelatihan yang menggunakan framework machine learning PyTorch. Tutorial ini menjelaskan cara mengonfigurasi tugas Anda untuk menggunakan PyTorch sedikit berbeda dengan menggunakan framework ML lain yang didukung oleh AI Platform Training. Kemudian, codelab ini akan menunjukkan cara menjalankan tugas pelatihan menggunakan contoh kode PyTorch yang melatih model berdasarkan data dari set data Perjalanan Taksi Chicago.
Tutorial ini juga menunjukkan cara menggunakan PyTorch dengan GPU dan dengan penyelarasan hyperparameter.
Container PyTorch
Versi runtime AI Platform Training tidak menyertakan PyTorch sebagai dependensi. Sebagai gantinya, untuk menjalankan tugas pelatihan yang menggunakan PyTorch, tentukan container PyTorch yang telah dibuat sebelumnya untuk digunakan oleh AI Platform Training.
Mengonfigurasi container yang telah dibangun untuk pelatihan menggunakan beberapa sintaksis yang sama dengan mengonfigurasi container kustom. Namun, Anda tidak perlu membuat container Docker sendiri. Sebagai gantinya, tentukan URI image container yang disediakan oleh AI Platform dan berikan paket pelatihan Python yang Anda buat.
AI Platform menyediakan container PyTorch bawaan berikut:
URI image container | Versi PyTorch | Prosesor yang didukung |
---|---|---|
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 |
Image container ini berasal dari Deep Learning Containers dan mencakup dependensi yang disediakan oleh Deep Learning Containers.
Jika Anda ingin menggunakan versi PyTorch yang tidak tersedia dalam salah satu container yang telah dibuat sebelumnya, ikuti panduan menggunakan penampung kustom.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API AI Platform Training & Prediction.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API AI Platform Training & Prediction.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
Mendownload kode contoh
Jalankan perintah berikut untuk mendownload contoh aplikasi pelatihan PyTorch dan membuka direktori yang berisi aplikasi pelatihan:
git clone --depth=1 \
https://github.com/GoogleCloudPlatform/ai-platform-samples.git
cd ai-platform-samples/training/pytorch/structured/python_package
Secara opsional, periksa struktur kode pelatihan:
ls -pR
Direktori trainer/
berisi aplikasi pelatihan PyTorch, dan
setup.py
memberikan detail konfigurasi untuk memaketkan aplikasi
pelatihan.
Membuat bucket Cloud Storage
Buat bucket Cloud Storage untuk menyimpan kode pelatihan terpaket dan artefak model yang dibuat oleh tugas pelatihan Anda. Jalankan perintah berikut:
gsutil mb -l us-central1 gs://BUCKET_NAME
Ganti BUCKET_NAME dengan nama unik yang Anda pilih untuk bucket. Pelajari persyaratan untuk nama bucket.
Atau, Anda dapat menggunakan bucket Cloud Storage yang sudah ada di project Google Cloud. Untuk tutorial ini, pastikan untuk menggunakan bucket di region us-central1
.
Melatih model PyTorch
Tutorial ini menunjukkan beberapa cara untuk melatih model PyTorch pada Pelatihan AI Platform:
- Pada instance virtual machine (VM) dengan prosesor CPU
- Di VM dengan prosesor GPU
- Menggunakan penyesuaian hyperparameter (pada VM dengan prosesor CPU)
Pilih salah satu dari cara ini sekarang, lalu ikuti petunjuk di tab yang sesuai selama tutorial ini. Kemudian, Anda dapat mengulangi bagian ini jika ingin mencoba pelatihan dengan salah satu konfigurasi lainnya.
Bersiap membuat tugas pelatihan
Sebelum Anda membuat tugas pelatihan, pastikan kode pelatihan Anda sudah siap dan tentukan beberapa opsi konfigurasi di lingkungan lokal Anda.
CPU
Tetapkan beberapa variabel Bash untuk digunakan saat membuat tugas pelatihan:
BUCKET_NAME=BUCKET_NAME
JOB_NAME=getting_started_pytorch_cpu
JOB_DIR=gs://${BUCKET_NAME}/${JOB_NAME}/models
Ganti BUCKET_NAME dengan nama bucket Cloud Storage yang Anda buat di bagian sebelumnya.
GPU
Pastikan kode pelatihan PyTorch Anda mengenali GPU pada VM yang digunakan tugas pelatihan Anda, sehingga PyTorch memindahkan tensor dan modul ke GPU dengan tepat.
Jika menggunakan kode contoh yang diberikan, Anda tidak perlu melakukan apa pun, karena kode contoh tersebut berisi logika untuk mendeteksi apakah mesin yang menjalankan kode tersebut memiliki GPU:
Jika Anda mengubah kode pelatihan, baca panduan PyTorch untuk semantik CUDA guna memastikan bahwa GPU digunakan.
Tetapkan beberapa variabel Bash untuk digunakan saat membuat tugas pelatihan:
BUCKET_NAME=BUCKET_NAME JOB_NAME=getting_started_pytorch_gpu JOB_DIR=gs://${BUCKET_NAME}/${JOB_NAME}/models
Ganti BUCKET_NAME dengan nama bucket Cloud Storage yang Anda buat di bagian sebelumnya.
Penyesuaian hyperparameter
Kode contoh untuk tutorial ini menyesuaikan parameter kecepatan pembelajaran dan ukuran batch untuk meminimalkan kerugian pengujian.
Pastikan kode pelatihan Anda siap untuk penyesuaian hyperparameter pada Pelatihan AI Platform:
Kode tersebut harus mengurai tanda hyperparameter yang diteruskan oleh Pelatihan AI Platform.
Kode contoh menangani hal ini di
task.py
, sehingga Anda tidak perlu melakukan apa pun kecuali jika Anda mengubah kode.Kode tersebut harus menggunakan library
cloudml-hypertune
untuk melaporkan metrik penyesuaian hyperparameternya ke Pelatihan AI Platform.Kode contoh menangani hal ini di
experiment.py
, sehingga Anda tidak perlu melakukan apa pun kecuali jika Anda mengubah kode.
Jalankan perintah berikut untuk membuat file
config.yaml
yang menentukan opsi penyesuaian hyperparameter: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
Opsi ini menyesuaikan hyperparameter
--learning-rate
dan--batch-size
untuk meminimalkan kerugian model.Tetapkan beberapa variabel Bash untuk digunakan saat membuat tugas pelatihan:
BUCKET_NAME=BUCKET_NAME JOB_NAME=getting_started_pytorch_hptuning JOB_DIR=gs://${BUCKET_NAME}/${JOB_NAME}/models
Ganti BUCKET_NAME dengan nama bucket Cloud Storage yang Anda buat di bagian sebelumnya.
Variabel Bash ini memiliki tujuan berikut:
JOB_NAME
adalah ID untuk tugas Pelatihan AI Platform Anda. Nama ini harus unik di antara tugas Pelatihan AI Platform dalam project Google Cloud Anda.JOB_DIR
digunakan oleh AI Platform Training untuk menentukan lokasi upload aplikasi pelatihan Anda secara tepat. Aplikasi pelatihan juga menggunakanJOB_DIR
untuk menentukan tempat ekspor artefak model saat pelatihan selesai.
Membuat tugas pelatihan
Jalankan perintah berikut untuk membuat tugas pelatihan:
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
Penyesuaian hyperparameter
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
Baca panduan tugas pelatihan untuk mempelajari tanda konfigurasi dan cara menggunakannya untuk menyesuaikan pelatihan.
Perintah akan menampilkan pesan yang mirip dengan berikut ini:
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
Anda dapat memantau status tugas dengan perintah berikut:
gcloud ai-platform jobs describe ${JOB_NAME}
Anda dapat melakukan streaming log pelatihan tugas dengan perintah berikut:
gcloud ai-platform jobs stream-logs ${JOB_NAME}
Setelah tugas pelatihan selesai, tugas pelatihan akan menyimpan model ML terlatih dalam file bernama model.pth
di direktori yang diberi stempel waktu dalam direktori Cloud Storage JOB_DIR
yang Anda tentukan.
Langkah selanjutnya
- Pelajari cara melakukan pelatihan PyTorch terdistribusi di cluster multinode.
- Pelajari cara menggunakan TPU untuk pelatihan dengan PyTorch di Pelatihan AI Platform.
- Pelajari cara menyesuaikan konfigurasi tugas pelatihan.
- Jika Anda ingin menggunakan versi PyTorch yang tidak tersedia dalam container yang telah dibuat sebelumnya, pelajari cara menggunakan container kustom.
- Pelajari cara menggunakan PyTorch lebih lanjut dalam dokumentasi PyTorch.