Melatih dalam container menggunakan Google Kubernetes Engine

Halaman ini menunjukkan cara menjalankan tugas pelatihan di instance Deep Learning Containers, dan menjalankan image container tersebut di cluster Google Kubernetes Engine.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menyelesaikan langkah-langkah berikut.

  1. Selesaikan langkah-langkah penyiapan di bagian Sebelum memulai pada Memulai penampung deep learning lokal.

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

    Pelajari cara mengaktifkan penagihan

  3. Aktifkan Google Kubernetes Engine, Compute Engine, dan Container Registry API.

    Mengaktifkan API

Membuka alat command line

Anda dapat mengikuti panduan ini menggunakan Cloud Shell atau alat command line secara lokal. Cloud Shell dilengkapi dengan alat command line gcloud, docker, dan kubectl yang digunakan dalam tutorial ini. Jika menggunakan Cloud Shell, Anda tidak perlu menginstal alat command line ini di workstation Anda.

Cloud Shell

Untuk menggunakan Cloud Shell, selesaikan langkah-langkah berikut.

  1. Buka Konsol Google Cloud.

  2. Klik tombol Activate Cloud Shell di bagian atas jendela konsol.

    Konsol Google Cloud Platform

    Sesi Cloud Shell akan terbuka di dalam frame baru di bagian bawah konsol dan menampilkan perintah command line.

    Sesi Cloud Shell

Command line lokal

Untuk menggunakan command line lokal, selesaikan langkah-langkah berikut.

  1. Dengan menggunakan gcloud CLI, instal alat command line Kubernetes. kubectl digunakan untuk berkomunikasi dengan Kubernetes, yang merupakan sistem orkestrasi cluster dari cluster Deep Learning Containers:

    gcloud components install kubectl
    

    Anda sudah menginstal Google Cloud CLI dan Docker setelah menyelesaikan langkah-langkah memulai.

Membuat cluster GKE

Jalankan perintah berikut untuk membuat cluster dua node di GKE dengan nama pytorch-training-cluster:

gcloud container clusters create pytorch-training-cluster \
    --num-nodes=2 \
    --zone=us-west1-b \
    --accelerator="type=nvidia-tesla-p100,count=1" \
    --machine-type="n1-highmem-2" \
    --scopes="gke-default,storage-rw"

Untuk mengetahui informasi selengkapnya tentang setelan ini, lihat dokumentasi tentang membuat cluster untuk menjalankan penampung.

Pembuatan cluster memerlukan waktu beberapa menit.

Atau, daripada membuat cluster, Anda dapat menggunakan cluster yang sudah ada di project Google Cloud Anda. Jika melakukannya, Anda mungkin perlu menjalankan perintah berikut untuk memastikan alat command line kubectl memiliki kredensial yang tepat untuk mengakses cluster:

gcloud container clusters get-credentials YOUR_EXISTING_CLUSTER

Selanjutnya, instal driver perangkat GPU NVIDIA.

Membuat Dockerfile

Ada banyak cara untuk mem-build image container. Langkah-langkah ini akan menunjukkan cara mem-build skrip untuk menjalankan skrip Python bernama trainer.py.

Untuk melihat daftar image container yang tersedia:

gcloud container images list \
  --repository="gcr.io/deeplearning-platform-release"

Sebaiknya buka Memilih penampung untuk membantu memilih penampung yang Anda inginkan.

Contoh berikut akan menunjukkan cara menempatkan skrip Python bernama trainer.py ke dalam jenis container deep learning PyTorch tertentu.

Untuk membuat dockerfile, tulis perintah berikut ke file bernama Dockerfile. Langkah ini mengasumsikan bahwa Anda memiliki kode untuk melatih model machine learning dalam direktori bernama model-training-code dan bahwa modul Python utama dalam direktori tersebut diberi nama trainer.py. Dalam skenario ini, container akan dihapus setelah tugas selesai, sehingga skrip pelatihan Anda harus dikonfigurasi untuk menghasilkan output ke Cloud Storage (lihat contoh skrip yang menghasilkan output ke Cloud Storage) atau ke penyimpanan persisten.

FROM gcr.io/deeplearning-platform-release/pytorch-gpu
COPY model-training-code /train
CMD ["python", "/train/trainer.py"]

Membangun dan mengupload image container

Untuk mem-build dan mengupload image container ke Container Registry, gunakan perintah berikut:

export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export IMAGE_REPO_NAME=pytorch_custom_container
export IMAGE_TAG=$(date +%Y%m%d_%H%M%S)
export IMAGE_URI=gcr.io/$PROJECT_ID/$IMAGE_REPO_NAME:$IMAGE_TAG

docker build -f Dockerfile -t $IMAGE_URI ./

docker push $IMAGE_URI

Men-deploy aplikasi Anda

Buat file bernama pod.yaml dengan konten berikut dan ganti IMAGE_URI dengan URI image Anda.

apiVersion: v1
kind: Pod
metadata:
  name: gke-training-pod
spec:
  containers:
  - name: my-custom-container
    image: IMAGE_URI
    resources:
      limits:
        nvidia.com/gpu: 1

Gunakan alat command line kubectl untuk menjalankan perintah berikut dan men-deploy aplikasi Anda:

kubectl apply -f ./pod.yaml

Untuk melacak status pod, jalankan perintah berikut:

kubectl describe pod gke-training-pod