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

  1. 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.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Aktifkan API AI Platform Training & Prediction.

    Mengaktifkan API

  5. Menginstal Google Cloud CLI.
  6. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  7. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  8. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  9. Aktifkan API AI Platform Training & Prediction.

    Mengaktifkan API

  10. Menginstal Google Cloud CLI.
  11. 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

  1. 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:

    cuda_availability = torch.cuda.is_available()
    if cuda_availability:
      device = torch.device('cuda:{}'.format(torch.cuda.current_device()))
    else:
      device = 'cpu'

    Jika Anda mengubah kode pelatihan, baca panduan PyTorch untuk semantik CUDA guna memastikan bahwa GPU digunakan.

  2. 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.

  1. Pastikan kode pelatihan Anda siap untuk penyesuaian hyperparameter pada Pelatihan AI Platform:

  2. 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.

  3. 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 menggunakan JOB_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