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 yang sedikit berbeda dengan menggunakan framework ML lain yang didukung oleh AI Platform Training. Kemudian, tutorial ini 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 penyesuaian 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 bawaan untuk digunakan oleh AI Platform Training.

Mengonfigurasi container bawaan untuk pelatihan menggunakan beberapa sintaksis yang sama dengan mengonfigurasi container kustom. Namun, Anda tidak perlu membuat penampung 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 menyertakan dependensi yang disediakan oleh Deep Learning Containers.

Jika Anda ingin menggunakan versi PyTorch yang tidak tersedia di salah satu container bawaan, ikuti panduan untuk menggunakan container kustom.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the AI Platform Training & Prediction API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the AI Platform Training & Prediction API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Mendownload kode contoh

Jalankan perintah berikut untuk mendownload aplikasi pelatihan PyTorch contoh dan buka direktori dengan 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 yang dipaketkan dan artefak model yang dibuat oleh tugas pelatihan Anda. Jalankan perintah berikut:

gcloud storage buckets create gs://BUCKET_NAME --location=us-central1

Ganti BUCKET_NAME dengan nama unik yang Anda pilih untuk bucket. Pelajari persyaratan untuk nama bucket.

Atau, Anda dapat menggunakan bucket Cloud Storage yang ada di project Google Cloud Anda. Untuk tutorial ini, pastikan untuk menggunakan bucket di region us-central1.

Melatih model PyTorch

Tutorial ini menunjukkan beberapa cara untuk melatih model PyTorch di Pelatihan AI Platform:

  • Pada instance virtual machine (VM) dengan prosesor CPU
  • Di VM dengan prosesor GPU
  • Menggunakan penyesuaian hyperparameter (di VM dengan prosesor CPU)

Pilih salah satu cara ini sekarang, dan ikuti petunjuk di tab yang sesuai untuk tutorial ini selanjutnya. Kemudian, Anda dapat mengulangi bagian ini jika ingin mencoba pelatihan dengan salah satu konfigurasi lainnya.

Bersiap untuk membuat tugas pelatihan

Sebelum membuat tugas pelatihan, pastikan kode pelatihan Anda sudah siap dan tentukan beberapa opsi konfigurasi di lingkungan lokal Anda.

CPU

Tetapkan beberapa variabel Bash yang akan digunakan saat Anda 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 mengetahui GPU di VM yang digunakan oleh tugas pelatihan, sehingga PyTorch memindahkan tensor dan modul ke GPU dengan tepat.

    Jika menggunakan kode contoh yang disediakan, Anda tidak perlu melakukan apa pun, karena kode contoh berisi logika untuk mendeteksi apakah mesin yang menjalankan kode 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 untuk memastikan GPU digunakan.

  2. Tetapkan beberapa variabel Bash yang akan digunakan saat Anda 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 di 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 yang akan digunakan saat Anda 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 AI Platform Training dalam project Google Cloud Anda.
  • JOB_DIR digunakan oleh AI Platform Training untuk menentukan tempat tepat untuk mengupload aplikasi pelatihan Anda. Aplikasi pelatihan juga menggunakan JOB_DIR untuk menentukan tempat mengekspor artefak model saat selesai dilatih.

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 untuk tugas pelatihan guna mempelajari flag konfigurasi dan cara menggunakannya untuk menyesuaikan pelatihan.

Perintah ini 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 selesai, tugas pelatihan akan menyimpan model ML terlatih dalam file bernama model.pth di direktori berstempel waktu dalam direktori Cloud Storage JOB_DIR yang Anda tentukan.

Langkah selanjutnya