Melatih model ML dengan penampung kustom
AI Platform Training mendukung pelatihan dalam container kustom, yang memungkinkan pengguna membawa container Docker mereka sendiri dengan framework atau algoritma ML yang telah diinstal sebelumnya untuk berjalan di AI Platform Training. Tutorial ini memberikan panduan pengantar yang menunjukkan cara melatih model PyTorch di AI Platform Training dengan container kustom.
Ringkasan
Panduan memulai ini menunjukkan proses pelatihan dengan penampung kustom di AI Platform Training, menggunakan model dasar yang mengklasifikasikan angka tulisan tangan berdasarkan set data MNIST.
Panduan ini membahas langkah-langkah berikut:
- Penyiapan project dan lingkungan lokal
- Membuat penampung kustom
- Menulis Dockerfile
- Membangun dan menguji image Docker secara lokal
- Mengirim image ke Container Registry
- Mengirim tugas pelatihan penampung kustom
- Mengirim tugas penyesuaian hyperparameter
- Menggunakan GPU dengan penampung kustom
Sebelum memulai
Untuk panduan memulai ini, gunakan lingkungan tempat Google Cloud CLI diinstal.Opsional: Tinjau informasi konseptual tentang pelatihan dengan penampung kustom.
Selesaikan langkah-langkah berikut untuk menyiapkan akun GCP, mengaktifkan API yang diperlukan, serta menginstal dan mengaktifkan Cloud SDK.
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction, Compute Engine and Container Registry APIs.
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction, Compute Engine and Container Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Menginstal Docker.
Jika Anda menggunakan sistem operasi berbasis Linux, seperti Ubuntu atau Debian, tambahkan nama pengguna ke grup
docker
agar Anda dapat menjalankan Docker tanpa menggunakansudo
:sudo usermod -a -G docker ${USER}
Anda mungkin perlu memulai ulang sistem setelah menambahkan diri Anda ke grup
docker
. - Buka Docker. Untuk memastikan Docker berjalan, jalankan perintah Docker berikut, yang menampilkan waktu dan tanggal saat ini:
docker run busybox date
- Gunakan
gcloud
sebagai helper kredensial untuk Docker:gcloud auth configure-docker
-
Opsional: Jika Anda ingin menjalankan container menggunakan GPU secara lokal,
instal
nvidia-docker
.
Menyiapkan bucket Cloud Storage
Bagian ini menunjukkan cara membuat bucket baru. Anda dapat menggunakan bucket yang ada, tetapi harus berada di region yang sama dengan tempat Anda berencana menjalankan tugas AI Platform. Selain itu, jika ini bukan bagian dari project yang Anda gunakan untuk menjalankan Pelatihan AI Platform, Anda harus secara eksplisit memberikan akses ke akun layanan Pelatihan AI Platform.
-
Tentukan nama untuk bucket baru Anda. Nama harus unik di semua bucket di Cloud Storage.
BUCKET_NAME="YOUR_BUCKET_NAME"
Misalnya, gunakan nama project Anda dengan tambahan
-aiplatform
:PROJECT_ID=$(gcloud config list project --format "value(core.project)") BUCKET_NAME=${PROJECT_ID}-aiplatform
-
Periksa nama bucket yang Anda buat.
echo $BUCKET_NAME
-
Pilih region untuk bucket Anda dan tetapkan variabel lingkungan
REGION
.Gunakan region yang sama dengan tempat Anda berencana menjalankan tugas Pelatihan AI Platform. Lihat region yang tersedia untuk layanan Pelatihan AI Platform.
Misalnya, kode berikut membuat
REGION
dan menetapkannya keus-central1
:REGION=us-central1
-
Buat bucket baru:
gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION
Mendownload kode untuk tutorial ini
Masukkan perintah berikut untuk mendownload file zip contoh Pelatihan AI Platform:
wget https://github.com/GoogleCloudPlatform/cloudml-samples/archive/master.zip
Ekstrak file untuk mengekstrak direktori
cloudml-samples-master
.unzip master.zip
Buka direktori
cloudml-samples-master > pytorch > containers > quickstart > mnist
. Perintah dalam panduan ini harus dijalankan dari direktorimnist
.cd cloudml-samples-master/pytorch/containers/quickstart/mnist
Membuat container kustom
Untuk membuat penampung kustom, langkah pertamanya adalah menentukan Dockerfile untuk menginstal dependensi yang diperlukan untuk tugas pelatihan. Kemudian, Anda mem-build dan menguji image Docker secara lokal untuk memverifikasinya sebelum menggunakannya dengan AI Platform Training.
Menulis Dockerfile
Contoh Dockerfile yang diberikan dalam tutorial ini menyelesaikan langkah-langkah berikut:
- Menggunakan image dasar Python 2.7 yang memiliki dependensi Python bawaan.
- Menginstal dependensi tambahan, termasuk PyTorch,
gcloud CLI, dan
cloudml-hypertune
untuk penyesuaian hyperparameter. - Menyalin kode untuk aplikasi pelatihan Anda ke dalam penampung.
- Mengonfigurasi titik entri untuk AI Platform Training guna menjalankan kode pelatihan saat penampung dimulai.
Dockerfile Anda dapat menyertakan logika tambahan, bergantung pada kebutuhan Anda. Pelajari lebih lanjut cara menulis Dockerfile.
Membangun dan menguji image Docker secara lokal
Buat URI image yang benar menggunakan variabel lingkungan, dan build image Docker. Flag
-t
memberi nama dan tag pada gambar dengan pilihan Anda untukIMAGE_REPO_NAME
danIMAGE_TAG
. Anda dapat memilih nama dan tag yang berbeda untuk gambar.export PROJECT_ID=$(gcloud config list project --format "value(core.project)") export IMAGE_REPO_NAME=mnist_pytorch_custom_container export IMAGE_TAG=mnist_pytorch_cpu export IMAGE_URI=gcr.io/$PROJECT_ID/$IMAGE_REPO_NAME:$IMAGE_TAG docker build -f Dockerfile -t $IMAGE_URI ./
Verifikasi image dengan menjalankannya secara lokal di penampung baru. Perhatikan bahwa flag
--epochs
diteruskan ke skrip pelatih.docker run $IMAGE_URI --epochs 1
Mengirim image ke Container Registry
Jika proses lokal berfungsi, Anda dapat mengirim image Docker ke Container Registry dalam project Anda.
Pertama, jalankan gcloud auth configure-docker
jika Anda belum melakukannya.
docker push $IMAGE_URI
Kirim dan pantau tugas
Tentukan variabel lingkungan untuk permintaan tugas Anda.
MODEL_DIR
memberi nama direktori baru dengan stempel waktu dalam bucket Cloud Storage tempat file model tersimpan setelah pelatihan selesai.REGION
menentukan region yang valid untuk pelatihan AI Platform Training.
export MODEL_DIR=pytorch_model_$(date +%Y%m%d_%H%M%S) export REGION=us-central1 export JOB_NAME=custom_container_job_$(date +%Y%m%d_%H%M%S)
Kirim tugas pelatihan ke AI Platform Training menggunakan gcloud CLI. Teruskan URI ke image Docker Anda menggunakan flag
--master-image-uri
:gcloud ai-platform jobs submit training $JOB_NAME \ --region $REGION \ --master-image-uri $IMAGE_URI \ -- \ --model-dir=gs://$BUCKET_NAME/$MODEL_DIR \ --epochs=10
Setelah mengirimkan tugas, Anda dapat memantau status tugas dan log streaming:
gcloud ai-platform jobs describe $JOB_NAME gcloud ai-platform jobs stream-logs $JOB_NAME
Mengirim tugas penyesuaian hyperparameter
Ada beberapa penyesuaian yang perlu dilakukan untuk tugas penyesuaian hyperparameter. Perhatikan area ini dalam kode contoh:
- Contoh Dockerfile menyertakan
paket
cloudml-hypertune
untuk menginstalnya di container kustom. - Kode contoh (
mnist.py
):- Menggunakan
cloudml-hypertune
untuk melaporkan hasil setiap uji coba dengan memanggil fungsi bantuannya,report_hyperparameter_tuning_metric
. Kode contoh melaporkan hasil penyesuaian hyperparameter setelah evaluasi, kecuali jika tugas tidak dikirim sebagai tugas penyesuaian hyperparameter. - Menambahkan argumen command line untuk setiap hyperparameter, dan menangani
penguraian argumen dengan
argparse
.
- Menggunakan
- Permintaan tugas menyertakan
HyperparameterSpec
dalam objekTrainingInput
. Dalam hal ini, kita menyesuaikan--lr
dan--momentum
untuk meminimalkan kerugian model.
Buat file
config.yaml
untuk menentukan spesifikasi hyperparameter Anda. Tentukan ulangMODEL_DIR
danJOB_NAME
. TentukanREGION
jika Anda belum melakukannya:export MODEL_DIR=pytorch_hptuning_model_$(date +%Y%m%d_%H%M%S) export REGION=us-central1 export JOB_NAME=custom_container_job_hptuning_$(date +%Y%m%d_%H%M%S) # Creates a YAML file with job request. cat > config.yaml <<EOF trainingInput: hyperparameters: goal: MINIMIZE hyperparameterMetricTag: "my_loss" maxTrials: 20 maxParallelTrials: 5 enableTrialEarlyStopping: True params: - parameterName: lr type: DOUBLE minValue: 0.0001 maxValue: 0.1 - parameterName: momentum type: DOUBLE minValue: 0.2 maxValue: 0.8 EOF
Kirim tugas penyesuaian hyperparameter ke AI Platform Training:
gcloud ai-platform jobs submit training $JOB_NAME \ --scale-tier BASIC \ --region $REGION \ --master-image-uri $IMAGE_URI \ --config config.yaml \ -- \ --epochs=5 \ --model-dir="gs://$BUCKET_NAME/$MODEL_DIR"
Menggunakan GPU dengan container kustom
Untuk mengirimkan tugas penampung kustom menggunakan GPU, Anda harus mem-build image Docker yang berbeda dari yang digunakan sebelumnya. Kami telah menyediakan contoh Dockerfile untuk digunakan dengan GPU yang memenuhi persyaratan berikut:
- Instal toolkit CUDA dan cuDNN terlebih dahulu di penampung Anda. Menggunakan image nvidia/cuda sebagai image dasar adalah cara yang direkomendasikan untuk menangani hal ini, karena image ini telah menginstal toolkit CUDA dan cuDNN terlebih dahulu, dan membantu Anda menyiapkan variabel lingkungan terkait dengan benar.
- Instal dependensi tambahan, seperti
wget
,curl
,pip
, dan dependensi lainnya yang diperlukan oleh aplikasi pelatihan Anda.
Mem-build dan menguji image Docker GPU secara lokal
Build image baru untuk tugas pelatihan GPU menggunakan Dockerfile GPU. Untuk menghindari penggantian image CPU, Anda harus menentukan ulang
IMAGE_REPO_NAME
danIMAGE_TAG
dengan nama yang berbeda dari yang digunakan sebelumnya dalam tutorial.export PROJECT_ID=$(gcloud config list project --format "value(core.project)") export IMAGE_REPO_NAME=mnist_pytorch_gpu_container export IMAGE_TAG=mnist_pytorch_gpu export IMAGE_URI=gcr.io/$PROJECT_ID/$IMAGE_REPO_NAME:$IMAGE_TAG docker build -f Dockerfile-gpu -t $IMAGE_URI ./
Jika memiliki GPU yang tersedia di komputer, dan telah menginstal
nvidia-docker
, Anda dapat memverifikasi image dengan menjalankannya secara lokal:docker run --runtime=nvidia $IMAGE_URI --epochs 1
Kirim image Docker ke Container Registry. Pertama, jalankan
gcloud auth configure-docker
jika Anda belum melakukannya.docker push $IMAGE_URI
Mengirim tugas
Contoh ini menggunakan tingkat skala GPU dasar untuk mengirimkan permintaan tugas pelatihan. Lihat opsi mesin lainnya untuk pelatihan dengan GPU.
Tentukan ulang
MODEL_DIR
danJOB_NAME
. TentukanREGION
jika Anda belum melakukannya:export MODEL_DIR=pytorch_model_gpu_$(date +%Y%m%d_%H%M%S) export REGION=us-central1 export JOB_NAME=custom_container_job_gpu_$(date +%Y%m%d_%H%M%S)
Kirim tugas pelatihan ke AI Platform Training menggunakan gcloud CLI. Teruskan URI ke image Docker Anda menggunakan flag
--master-image-uri
.gcloud ai-platform jobs submit training $JOB_NAME \ --scale-tier BASIC_GPU \ --region $REGION \ --master-image-uri $IMAGE_URI \ -- \ --epochs=5 \ --model-dir=gs://$BUCKET_NAME/$MODEL_DIR
Langkah selanjutnya
- Pelajari lebih lanjut konsep yang terlibat dalam penggunaan penampung.
- Pelajari pelatihan terdistribusi dengan penampung kustom.