Latar belakang
Workload batch adalah proses yang biasanya dirancang untuk memiliki titik awal dan penyelesaian. Sebaiknya pertimbangkan workload batch di GKE jika arsitektur Anda melibatkan penyerapan, pemrosesan, dan output data, alih-alih menggunakan data mentah. Bidang seperti machine learning, kecerdasan buatan, dan komputasi berperforma tinggi (HPC) memiliki berbagai jenis workload batch, seperti pelatihan model offline, prediksi batch, analisis data, simulasi sistem fisik, dan pemrosesan video.
Dengan mendesain workload batch dalam container, Anda dapat memanfaatkan kelebihan GKE berikut:
- Standar terbuka, komunitas yang luas, dan layanan terkelola.
- Efisiensi biaya dari orkestrasi infrastruktur dan workload yang efektif serta resource komputasi khusus.
- Isolasi dan portabilitas containerization, yang memungkinkan penggunaan cloud sebagai kapasitas tambahan dengan tetap menjaga keamanan data.
- Ketersediaan kapasitas burst, yang diikuti dengan penurunan skala cluster GKE secara cepat.
Tujuan
Tutorial ini ditujukan untuk engineer atau data scientist machine learning yang ingin mempelajari cara menjalankan workload batch machine learning di GKE, dengan arsitektur yang hemat biaya dan skalabel berikut:
Tutorial ini membahas langkah-langkah berikut:
- Membuat cluster GKE Autopilot. Sebagai alternatif, Anda dapat menggunakan cluster GKE Standard untuk tutorial ini.
- Buat volume NFS Filestore.
- Membuat antrean tugas Redis dalam cluster.
- Mentransfer set data ke volume NFS dan memasukkannya ke dalam antrean untuk digunakan oleh workload.
- Menjalankan contoh workload machine learning batch di cluster GKE.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Jika ingin mengikuti panduan langkah demi langkah untuk tugas ini langsung di Konsol Google Cloud, klik Pandu saya:
Sebelum memulai
- 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 Compute Engine, GKE, and Filestore APIs.
-
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 Compute Engine, GKE, and Filestore APIs.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Menyiapkan lingkungan
Clone contoh repositori yang digunakan dalam tutorial ini:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/batch/aiml-workloads
Buat cluster GKE Autopilot:
gcloud container clusters create-auto batch-aiml \ --region=us-central1
Langkah ini dapat memerlukan waktu hingga 5 menit.
Menyiapkan penyimpanan set data dengan Network File System (NFS)
Workload machine learning memerlukan solusi penyimpanan untuk file set data dan output. Di bagian ini, Anda akan membuat instance Filestore dan memberikan akses ke instance tersebut dengan menggunakan PersistentVolume dan PersistentVolumeClaim.
Untuk mempelajari lebih lanjut, lihat cara mendesain strategi penyimpanan yang optimal dan cara mengakses instance Filestore dari cluster GKE.
Membuat instance Filestore
Buat instance Filestore:
gcloud filestore instances create batch-aiml-filestore \ --zone=us-central1-b \ --tier=BASIC_HDD \ --file-share=name="NFSVol",capacity=1TB \ --network=name="default"
Perintah ini menentukan opsi berikut:
tier
: Tingkat layanan untuk instance Filestore. Contoh ini menggunakan paket dasar. Untuk mempelajari opsi lainnya, lihat Tingkat layanan.network=name
: Nama jaringan Virtual Private Cloud (VPC) untuk instance Filestore. Cluster GKE harus berada di jaringan VPC yang sama dengan instance Filestore.capacity
: Ukuran volume yang diinginkan. Tentukan nilai penyimpanan di salah satu unit yang didukung yang dijelaskan dalam Jumlah resource.
Pastikan instance Filestore telah di-deploy:
gcloud filestore instances list \ --project=PROJECT_ID \ --zone=us-central1-b
Ganti
PROJECT_ID
dengan project ID Google Cloud Anda.Output akan mirip dengan yang berikut ini:
INSTANCE_NAME: batch-aiml-filestore LOCATION: us-central1-b TIER: BASIC_HDD CAPACITY_GB: 1024 FILE_SHARE_NAME: NFSVol IP_ADDRESS: 203.0.113.54 STATE: READY CREATE_TIME: 2022-03-15T18:23:51
Catat nilai di kolom
IP_ADDRESS
untuk digunakan di bagian berikut.
Membuat PersistentVolume
Spesifikasi PersistentVolume Kubernetes memungkinkan cluster GKE untuk terhubung ke instance Filestore.
Update file
kubernetes-manifests/persistent-volume.yaml
dengan alamat IP instance Filestore:sed -i "\ s/<FILESTORE_IP_ADDRESS>/IP_ADDRESS/g" \ kubernetes-manifests/persistent-volume.yaml
Ganti
IP_ADDRESS
dengan alamat IP yang Anda catat saat membuat instance Filestore di bagian sebelumnya.Deploy PersistentVolume:
kubectl apply -f kubernetes-manifests/persistent-volume.yaml
Membuat PersistentVolumeClaim
PersistentVolumeClaim Kubernetes memungkinkan Job dan Pod Kubernetes mengakses resource penyimpanan PersistentVolume.
Deploy PersistentVolumeClaim:
kubectl apply -f kubernetes-manifests/persistent-volume-claim.yaml
Menggunakan PersistentVolumeClaim
Dengan menyiapkan PersistentVolume dan PersistentVolumeClaim di cluster GKE, Anda dapat mengonfigurasi server Redis dan tugas batch untuk menggunakan PersistentVolumeClaim. Ini akan muncul sebagai volume penyimpanan yang dapat dipasang.
Periksa file kubernetes-manifests/redis-pod.yaml
dan kubernetes-manifests/workload.yaml
.
Konfigurasi manifes mirip dengan yang berikut ini:
spec:
…
containers:
- name: workload
image: "us-central1-docker.pkg.dev/gke-batch-aiml/batch-aiml-docker-repo/workload"
volumeMounts:
- mountPath: /mnt/fileserver
name: workload-pvc
volumes:
- name: workload-pvc
persistentVolumeClaim:
claimName: fileserver-claim
readOnly: false
Dalam manifes ini:
spec.volumes
menentukan PersistentVolumeClaim yang akan digunakan.spec.containers.volumeMounts
menentukan jalur file lokal tempat Pod dapat mengakses fileshare Filestore.
Menyiapkan antrean tugas Redis
workload memproses data dalam beberapa batch untuk melatih model deteksi penipuan secara iteratif. Untuk mengelola set data yang saat ini sedang diproses atau masih dalam antrean, Anda dapat men-deploy server Redis ke dalam cluster GKE.
Untuk tutorial ini, Anda akan memulai satu instance Redis. Untuk men-deploy Redis secara skalabel dan redundan, lihat Membuat aplikasi web multi-tingkat dengan Redis dan PHP.
Deploy spesifikasi server Redis.
kubectl apply -f kubernetes-manifests/redis-pod.yaml
Verifikasi bahwa Pod sedang berjalan:
kubectl get pods
Output akan mirip dengan yang berikut ini:
NAME READY STATUS RESTARTS AGE redis-leader 1/1 Running 0 118s
Pod mungkin perlu waktu hingga dua menit untuk mulai berjalan.
Transfer file yang berisi set data pelatihan dan pengujian ke volume NFS.
sh scripts/transfer-datasets.sh
Skrip ini menyalin file dari repositori kode contoh ke direktori
/mnt/fileserver/datasets/
di Podredis-leader
.Isi antrean Redis.
sh scripts/queue-jobs.sh
Skrip ini mengirimkan jalur file untuk set data pelatihan ke daftar bernama
datasets
dalam database Redis. Antrean ini akan digunakan oleh workload untuk menemukan set data berikutnya yang akan diproses.Deploy Layanan agar server Redis dapat ditemukan dalam cluster GKE.
kubectl apply -f ./kubernetes-manifests/redis-service.yaml
Menjalankan workload batch
Pada titik ini, Anda telah menyiapkan cluster GKE, antrean tugas Redis, dan fileshare. Sekarang, Anda dapat menjalankan workload batch Anda.
Di bagian ini, Anda akan menggunakan image container contoh workload untuk melatih model deteksi penipuan menggunakan batch data transaksi keuangan. Proses pelatihan dapat diringkas sebagai berikut:
Klien Redis mengklaim tugas (jalur file ke set data) dalam antrean Redis, dan menghapusnya dari antrean jika sudah selesai.
Class pengelola pelatihan model,
FraudDetectionModelTrainer
, akan memuat batch data baru dan, secara opsional, status tersimpan dari model machine learning. Set data digunakan untuk meningkatkan model (proses yang dikenal sebagai pelatihan "warm start").Status baru model serta laporan detail batch dan skor performa disimpan dalam volume NFS Filestore, yang dapat diakses di cluster GKE menggunakan PersistentVolumeClaim.
Untuk mempelajari lebih lanjut, jelajahi kode sumber.
Menentukan tugas
Manifes berikut menjelaskan Job Kubernetes untuk image workload batch.
Men-deploy workload
Deploy Job:
kubectl apply -f ./kubernetes-manifests/workload.yaml
Periksa apakah status Pod
workload-XXX
adalahCompleted
:watch kubectl get pods
Proses ini mungkin memerlukan waktu beberapa detik. Anda dapat kembali ke command line dengan menekan
Ctrl+C
.Output akan mirip dengan yang berikut ini:
NAME READY STATUS RESTARTS AGE redis-leader 1/1 Running 0 16m workload-4p55d 0/1 Completed 0 83s
Periksa log dari Job
workload
:kubectl logs job/workload
Output akan mirip dengan yang berikut ini:
Worker with sessionID: b50f9459-ce7f-4da8-9f84-0ab5c3233a72 Initial queue state: empty=False Processing dataset: datasets/training/2018-04-04.pkl Processing dataset: datasets/training/2018-04-03.pkl Processing dataset: datasets/training/2018-04-02.pkl Processing dataset: datasets/training/2018-04-01.pkl Queue empty, exiting
File
.pkl
adalah serialisasi set data yang berisi sekumpulan transaksi kartu kredit, yang ditandai sebagai valid atau penipuan. Jobworkload
melakukan iterasi pada file ini, mengekstrak set data dan menggunakannya untuk melatih model machine learning, sebelum menghapusnya dari antrean Redis. Workload terus memproses data dalam batch, hingga antrean Redis dikosongkan, sebelum keluar dengan sukses.
Mempelajari volume NFS
Selama operasinya, workload tersebut membuat file dalam volume NFS yang terpasang, yang dapat diakses di seluruh cluster oleh tugas batch lain atau aplikasi online.
Daftar file yang dibuat oleh workload:
kubectl exec --stdin --tty redis-leader -- /bin/sh -c "ls -1 /mnt/fileserver/output"
Output harus berupa yang berikut ini:
model_cpt_2018-04-01.pkl model_cpt_2018-04-02.pkl model_cpt_2018-04-03.pkl model_cpt_2018-04-04.pkl report.txt
Titik pemeriksaan untuk model terlatih (nama file seperti
model_cpt_XXX.pkl
) dan laporan performa model (report.txt
) dibuat di direktori/mnt/fileserver/output
di volume NFS.Periksa laporan performa model:
kubectl exec --stdin --tty redis-leader -- /bin/sh -c "cat /mnt/fileserver/output/report.txt"
Berikut adalah cuplikan dari output:
Report generated on: 2022-02-09 14:19:42.303619 Training dataset: 2018-04-04.pkl Model checkpoint: model_cpt_2018-04-04.pkl --- Accuracy on training data: 0.9981112277019937 Accuracy on testing data: 0.9977204434773599
File berisi entri yang menampilkan detail waktu pelatihan, set data yang digunakan, akurasi yang dicapai, dan nama file checkpoint model yang terkait dengan pelatihan.
Untuk mempelajari volume NFS lebih lanjut, lihat Panduan Filestore.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus setiap resource
Untuk menghapus setiap resource yang dibuat untuk tutorial ini, jalankan perintah berikut.
Hapus kluster:
gcloud container clusters delete batch-aiml \ --region=us-central1
Hapus instance Filestore:
gcloud filestore instances delete batch-aiml-filestore \ --zone=us-central1-b
Menghapus project
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Langkah berikutnya
Lihat dokumentasi GKE.
Pelajari Volume Persisten secara lebih mendetail.
Pelajari lebih lanjut Job di GKE.
Pelajari cara menggunakan Spot VM untuk menjalankan workload fault-tolerant.
Pelajari tutorial Kubernetes Engine lainnya.
Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.