Melatih model ML dengan container kustom
AI Platform Training mendukung pelatihan dalam container kustom, sehingga pengguna dapat membawa container Docker mereka sendiri dengan framework atau algoritma ML yang telah diinstal sebelumnya untuk dijalankan di Pelatihan AI Platform. Tutorial ini memberikan panduan pengantar yang menunjukkan cara melatih model PyTorch di Pelatihan AI Platform dengan container kustom.
Ringkasan
Panduan memulai ini menunjukkan proses pelatihan dengan container kustom pada Pelatihan AI Platform, menggunakan model dasar yang mengklasifikasikan digit 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 container kustom
- Mengirim tugas penyesuaian hyperparameter
- Menggunakan GPU dengan container kustom
Sebelum memulai
Untuk panduan memulai ini, gunakan lingkungan apa pun tempat Google Cloud CLI diinstal.Opsional: Tinjau informasi konseptual tentang pelatihan dengan container kustom.
Selesaikan langkah-langkah berikut untuk menyiapkan akun GCP, mengaktifkan API yang diperlukan, serta menginstal dan mengaktifkan Cloud SDK.
- 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, Compute Engine and Container Registry.
- 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, Compute Engine and Container Registry.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
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 bucket tersebut harus berada di region yang sama dengan tempat Anda berencana menjalankan tugas AI Platform. Selain itu, jika bukan bagian dari project yang Anda gunakan untuk menjalankan AI Platform Training, Anda harus secara eksplisit memberikan akses ke akun layanan AI Platform Training.
-
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 tempat Anda berencana menjalankan tugas Pelatihan AI Platform. Lihat region yang tersedia untuk layanan AI Platform Training.
Misalnya, kode berikut membuat
REGION
dan menetapkannya keus-central1
:REGION=us-central1
-
Buat bucket baru:
gsutil mb -l $REGION gs://$BUCKET_NAME
Download 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 ini 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 container kustom, langkah pertamanya adalah menentukan Dockerfile untuk menginstal dependensi yang diperlukan untuk tugas pelatihan. Kemudian, Anda akan mem-build dan menguji image Docker secara lokal untuk memverifikasinya sebelum menggunakannya dengan AI Platform Training.
Menulis Dockerfile
Contoh Dockerfile yang disediakan 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 container.
- Mengonfigurasi titik entri untuk Pelatihan AI Platform guna menjalankan kode pelatihan Anda saat container dimulai.
Dockerfile Anda dapat menyertakan logika tambahan, tergantung pada kebutuhan Anda. Pelajari lebih lanjut cara menulis Dockerfile.
Membangun dan menguji image Docker secara lokal
Buat URI gambar yang benar dengan menggunakan variabel lingkungan, dan bangun image Docker. Flag
-t
memberi nama dan memberi tag pada gambar dengan pilihan Anda untukIMAGE_REPO_NAME
danIMAGE_TAG
. Anda dapat memilih nama dan tag yang berbeda untuk gambar Anda.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 container baru. Perhatikan bahwa flag
--epochs
diteruskan ke skrip pelatih.docker run $IMAGE_URI --epochs 1
Mengirim image ke Container Registry
Jika operasi lokal berfungsi, Anda dapat mengirim image Docker ke Container Registry di project Anda.
Pertama-tama, 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 Anda disimpan setelah pelatihan selesai.REGION
menentukan wilayah yang valid untuk pelatihan Pelatihan AI Platform.
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 Pelatihan AI Platform menggunakan gcloud CLI. Teruskan URI ke image Docker 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 harus dilakukan untuk tugas penyesuaian hyperparameter. Perhatikan area ini dalam kode contoh:
- Contoh Dockerfile menyertakan paket
cloudml-hypertune
untuk menginstalnya di penampung khusus. - Kode contoh (
mnist.py
):- Menggunakan
cloudml-hypertune
untuk melaporkan hasil dari setiap uji coba dengan memanggil fungsi helpernya,report_hyperparameter_tuning_metric
. Kode contoh melaporkan hasil penyesuaian hyperparameter setelah evaluasi, kecuali jika tugas tersebut 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 akan 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 Pelatihan AI Platform:
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 container kustom menggunakan GPU, Anda harus membangun image Docker yang berbeda dari yang Anda gunakan sebelumnya. Kami telah menyediakan contoh Dockerfile untuk digunakan dengan GPU yang memenuhi persyaratan berikut:
- Prainstal toolkit CUDA dan cuDNN di container Anda. Menggunakan image nvidia/cuda sebagai image dasar adalah cara yang direkomendasikan untuk menangani hal ini, karena toolkit CUDA dan cuDNN sudah terinstal sebelumnya, serta membantu Anda menyiapkan variabel lingkungan terkait dengan benar.
- Instal dependensi tambahan, seperti
wget
,curl
,pip
, dan lainnya yang diperlukan oleh aplikasi pelatihan Anda.
Membangun dan menguji image Docker GPU secara lokal
Buat image baru untuk tugas pelatihan GPU Anda menggunakan GPU Dockerfile. Untuk menghindari penggantian image CPU, Anda harus menentukan ulang
IMAGE_REPO_NAME
danIMAGE_TAG
dengan nama yang berbeda dari yang Anda gunakan 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 di komputer, dan telah menginstal
nvidia-docker
, Anda dapat memverifikasi gambar dengan menjalankannya secara lokal:docker run --runtime=nvidia $IMAGE_URI --epochs 1
Mengirim 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 Pelatihan AI Platform menggunakan gcloud CLI. Teruskan URI ke image Docker 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 container.
- Pelajari pelatihan terdistribusi dengan container kustom.