Men-deploy Ray yang diakselerasi GPU untuk workload AI di GKE
Halaman ini menunjukkan cara menyiapkan dan menjalankan cluster Ray yang mendukung GPU di Google Kubernetes Engine (GKE) untuk menskalakan workload AI/ML Anda.
Mengapa menggunakan Ray?
Dengan menggunakan Ray di GKE, yang difasilitasi oleh KubeRay, Anda dapat menskalakan aplikasi Python dan AI. Ray menangani penskalaan aplikasi, dan GKE mengelola server dan resource yang mendasarinya.
Kombinasi ini mempermudah pengelolaan resource, penyesuaian kapasitas secara otomatis, memastikan keandalan, dan men-deploy aplikasi Anda di berbagai lingkungan. Dengan menghubungkan aplikasi Ray terdistribusi dengan infrastruktur dan alat cloud yang ada di GKE, Anda dapat menyederhanakan operasi dan menyediakan platform yang andal dan skalabel untuk tugas-tugas kompleks menggunakan metode Kubernetes standar.
Untuk mengetahui informasi selengkapnya, lihat postingan blog Why GKE for your Ray AI workloads.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
-
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 GKE API.
-
Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Instal
kubectl
:kubectl
adalah alat command line utama untuk berinteraksi dengan cluster GKE. Jika Anda menggunakan Cloud Shell,kubectl
sudah diinstal. Jika tidak, instal di terminal Anda dengan menjalankan perintahgcloud components install kubectl
.Untuk memverifikasi penginstalan, jalankan perintah ini:
kubectl version --client
- Instal Ray: sebaiknya buat dan masukkan
lingkungan virtual Python (
venv
) sebelum menginstal Ray agar Anda dapat mengisolasi dependensinya.- Instal Python.
- Buat dan aktifkan lingkungan virtual baru.
- Instal versi stabil Ray terbaru dengan menjalankan perintah ini di dalam
lingkungan virtual Anda:
pip install -U "ray[default]"
. - Untuk memverifikasi penginstalan, jalankan perintah ini:
ray --version
. Perhatikan versi Ray (misalnya, 2.44.1) dalam output.
- Pastikan project Anda memiliki kuota yang cukup untuk GPU L4. Google Cloud Untuk informasi selengkapnya, lihat Tentang GPU dan Kuota alokasi.
Membuat cluster GKE
Anda dapat men-deploy workload di cluster GKE Autopilot atau Standard. Sebaiknya gunakan cluster Autopilot untuk mendapatkan pengalaman Kubernetes yang terkelola sepenuhnya. Untuk memilih mode operasi GKE yang paling sesuai untuk workload Anda, lihat Memilih mode operasi GKE.
Autopilot
Dalam mode Autopilot, Google mengelola konfigurasi cluster Anda, termasuk penskalaan, keamanan, dan setelan lainnya yang telah dikonfigurasi sebelumnya. Cluster Autopilot dioptimalkan untuk menjalankan sebagian besar workload produksi dan menyediakan resource komputasi berdasarkan manifes Kubernetes Anda.
Di terminal, jalankan perintah
gcloud container clusters create-auto
berikut:gcloud container clusters create-auto my-ray-enabled-cluster \ --enable-ray-operator \ --enable-ray-cluster-monitoring \ --enable-ray-cluster-logging \ --location=us-central1
Perintah Google Cloud CLI ini membuat cluster Autopilot bernama
my-ray-enabled-cluster
, dengan setelan berikut:--enable-ray-operator
: menginstal Ray Operator di cluster, yang menyederhanakan pengelolaan cluster Ray dalam Kubernetes.--enable-ray-cluster-monitoring
: menyiapkan integrasi dengan Cloud Monitoring untuk metrik cluster Ray.--enable-ray-cluster-logging
: mengonfigurasi integrasi dengan Cloud Logging untuk mengumpulkan log dari cluster Ray Anda.--location=us-central1
: menentukan region geografis tempat cluster GKE akan dibuat. Perhatikan bahwa ketersediaan dan jenis akselerator yang didukung berbeda-beda menurut lokasi. Untuk mengetahui informasi selengkapnya, lihat Region dan zona GPU.
Cluster Autopilot secara otomatis menyediakan dan menskalakan node (termasuk yang mendukung GPU yang menggunakan class komputasi) berdasarkan permintaan workload, sehingga mengoptimalkan pemanfaatan dan biaya. Penyediaan dan penskalaan resource otomatis ini di cluster Autopilot menyederhanakan pengelolaan resource, dan memungkinkan Anda berfokus pada model, bukan infrastruktur.
Jika Anda menggunakan cluster GKE Standard, flag dan setelan untuk mengaktifkan Ray mungkin berbeda. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan Ray Operator di GKE.
Konfigurasi
kubectl
untuk berkomunikasi dengan cluster Anda:gcloud container clusters get-credentials my-ray-enabled-cluster \ --region=us-central1
Standar
Dalam mode Standard, Anda memiliki lebih banyak kontrol atas infrastruktur dasar cluster GKE Anda. Anda mengelola node pool, ukuran node, dan konfigurasi lainnya secara langsung, sehingga memungkinkan penyesuaian yang lebih besar. Cluster Standard cocok untuk workload yang memerlukan konfigurasi tertentu atau kontrol ketat atas resource.
Di terminal, jalankan perintah
gcloud container clusters create
berikut:gcloud container clusters create my-ray-enabled-cluster \ --addons=RayOperator \ --enable-ray-cluster-monitoring \ --enable-ray-cluster-logging \ --region=us-central1 \ --enable-autoprovisioning \ --max-cpu=10 \ --max-memory=64
Perintah Google Cloud CLI ini membuat cluster Standard bernama
my-ray-enabled-cluster
, dengan setelan berikut:--addons=RayOperator
: menginstal Ray Operator di cluster, yang menyederhanakan pengelolaan cluster Ray dalam Kubernetes.--enable-ray-cluster-monitoring
: menyiapkan integrasi dengan Cloud Monitoring untuk metrik cluster Ray.--enable-ray-cluster-logging
: mengonfigurasi integrasi dengan Cloud Logging untuk mengumpulkan log dari cluster Ray Anda.--region=us-central1
: menentukan region geografis tempat cluster GKE akan dibuat. Perhatikan bahwa ketersediaan dan jenis akselerator yang didukung berbeda-beda menurut lokasi. Untuk mengetahui informasi selengkapnya, lihat Region dan zona GPU.--enable-autoprovisioning
: membuat dan menghapus node pool secara otomatis serta menskalakan node dalam kumpulan tersebut berdasarkan permintaan workload Anda.--max-cpu
: jumlah maksimum core yang dapat diskalakan oleh cluster.--max-memory
: jumlah maksimum gigabyte memori yang dapat diskalakan oleh cluster.
Konfigurasi
kubectl
untuk berkomunikasi dengan cluster Anda:gcloud container clusters get-credentials my-ray-enabled-cluster \ --region=us-central1
Instal plugin KubeRay kubectl ray
Plugin kubectl ray
menyederhanakan alur kerja Ray umum di Kubernetes. Untuk
petunjuk penginstalan terbaru, lihat dokumentasi KubeRay.
Buka halaman rilis dan download biner untuk platform Anda. Misalnya, untuk menginstal plugin
kubectl ray
versi 1.3.2 di Linux amd64, jalankan perintah berikut:curl -LO https://github.com/ray-project/kuberay/releases/download/v1.3.2/kubectl-ray_v1.3.2_linux_amd64.tar.gz tar -xvf kubectl-ray_v1.3.2_linux_amd64.tar.gz cp kubectl-ray ~/.local/bin
Ganti
~/.local/bin
dengan direktori diPATH
Anda.Verifikasi penginstalan Anda:
kubectl ray version
Jika Anda melihat peringatan seperti
KubeRay operator installation cannot be found: no KubeRay operator deployments found in any namespace.
, Anda dapat mengabaikannya dengan aman. Jika penginstalan berhasil, outputnya adalah versi pluginkubectl ray
.
Buat class komputasi kustom di cluster Anda
Kelas komputasi kustom di GKE memungkinkan Anda menentukan persyaratan hardware tertentu, seperti jenis dan jumlah GPU, berdasarkan prioritas. GKE menggunakan prioritas ini saat menyediakan node untuk workload Anda.
Untuk membuat contoh class komputasi kustom untuk panduan ini, ikuti langkah-langkah berikut:
Simpan spesifikasi class komputasi berikut sebagai
nvidia-l4-compute-class.yaml
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: gpu-compute-class spec: priorities: - gpu: type: nvidia-l4 count: 1 spot: true - gpu: type: nvidia-l4 count: 1 spot: false nodePoolAutoCreation: enabled: true whenUnsatisfiable: DoNotScaleUp
Buat class komputasi dengan menjalankan perintah ini:
kubectl apply -f nvidia-l4-compute-class.yaml
Apa yang terjadi setelah Anda menerapkan class komputasi kustom? Setelah menerapkan file YAML class komputasi, GKE akan otomatis menyediakan node dengan satu GPU NVIDIA L4 saat cluster Ray Anda memintanya. Hal ini akan memprioritaskan Spot VM seperti yang ditentukan dalam manifes Anda. Setelan
whenUnsatisfiable: DoNotScaleUp
menginstruksikan GKE untuk tidak membuat node yang tidak memenuhi persyaratan yang ditentukan.
Membuat dan memverifikasi cluster Ray
Sekarang Anda dapat membuat cluster Ray di cluster GKE.
Buat cluster Ray. Gunakan perintah
kubectl ray create cluster
untuk menentukan dan membuat cluster Ray. Perintah ini menyederhanakan proses dengan menangani pembuatan resource Kubernetes yang mendasarinya.kubectl ray create cluster my-ray-cluster \ --worker-replicas=1 \ --worker-cpu=2 \ --worker-memory=4Gi \ --worker-gpu=1 \ --worker-node-selectors="cloud.google.com/compute-class=gpu-compute-class"
Perintah
kubectl ray create cluster
menggunakan plugin KubeRay untuk menerjemahkan spesifikasi Anda ke dalam definisi resource kustom RayCluster dan mengirimkannya ke Kubernetes API untuk membuat objek RayCluster. Objek ini berfungsi sebagai cetak biru, yang memberi tahu Ray Operator cara menyediakan dan mengelola komponen cluster Ray yang sebenarnya (node head dan pekerja) dalam GKE. Secara default, GKE menjadwalkan Pod head pada node dari seri mesin E2.Perintah contoh menggunakan setelan berikut:
kubectl ray create cluster my-ray-cluster
: menentukan nama cluster Ray yang ingin Anda buat.--worker-node-selectors
: memberi tahu Kubernetes untuk menjadwalkan Pod pekerja di node yang diberi labelcloud.google.com/compute-class=gpu-compute-class
.
Verifikasi status cluster Ray. Gunakan perintah ini untuk memverifikasi bahwa cluster Ray Anda sudah aktif dan berjalan.
Periksa resource RayCluster dengan menjalankan perintah ini:
kubectl ray get cluster
Perintah ini mencantumkan semua cluster Ray di namespace Kubernetes Anda. Anda akan melihat
my-ray-cluster
tercantum. Mungkin perlu waktu beberapa menit hingga cluster diinisialisasi.Periksa Pod Kubernetes dengan menjalankan perintah ini:
kubectl get pods
Perintah ini mencantumkan semua Pod yang berjalan di namespace Kubernetes Anda. Anda akan melihat Pod yang terkait dengan cluster Ray Anda:
- Pod untuk node head Ray, dengan nama seperti
my-ray-cluster-head-0
. - Satu atau beberapa Pod untuk node pekerja Ray, dengan nama seperti
my-ray-cluster-worker-group-0-xxxxx
. Jumlah Pod pekerja bergantung pada konfigurasi awal cluster Ray dan penskalaan otomatis yang mungkin telah terjadi.
- Pod untuk node head Ray, dengan nama seperti
Mengirimkan tugas Ray
Setelah cluster Ray siap, Anda dapat mengirimkan tugas Ray ke cluster Ray yang sedang berjalan di GKE.
Untuk melakukannya, gunakan perintah kubectl ray session
untuk memulai sesi interaktif, dan perintah ray job submit
untuk memulai eksekusi tugas.
Mulai sesi interaktif Ray. Untuk membuat koneksi lokal ke cluster Ray, jalankan perintah ini:
kubectl ray session my-ray-cluster
Perintah ini memulai penerusan port antara mesin lokal Anda dan node head Ray di cluster GKE Anda. Perhatikan bahwa terminal Anda akan digunakan saat sesi ini aktif; untuk melanjutkan, buka instance terminal terpisah.
Buat kode contoh untuk dijalankan. Simpan contoh kode berikut ke file bernama
sample_code.py
.import ray import os import requests ray.init() @ray.remote class Counter: def __init__(self): # Used to verify runtimeEnv self.name = os.getenv("counter_name") assert self.name == "test_counter" self.counter = 0 def inc(self): self.counter += 1 def get_counter(self): return "{} got {}".format(self.name, self.counter) counter = Counter.remote() for _ in range(5): ray.get(counter.inc.remote()) print(ray.get(counter.get_counter.remote())) # Verify that the correct runtime env was used for the job. assert requests.__version__ == "2.26.0"
Buka terminal baru dan kirimkan tugas Ray.
- Buka terminal baru di mesin lokal Anda. Jika Anda membuat lingkungan virtual untuk penginstalan Ray, pastikan Anda mengaktifkannya di terminal baru ini juga.
- Buka direktori tempat Anda menyimpan file
sample_code.py
. Jalankan perintah berikut:
ray job submit \ --working-dir=. \ --runtime-env-json='{"pip": ["requests==2.26.0"], "env_vars": {"counter_name": "test_counter"}}' \ --address http://localhost:8265 python sample_code.py
Perintah contoh menggunakan setelan berikut:
--working-dir=.
: menentukan direktori saat ini sebagai direktori kerja yang akan tersedia untuk tugas Ray di cluster. Idealnya, direktori ini hanya berisi kode sumber aplikasi yang ingin Anda jalankan di Ray. Dalam contoh kita, ini adalah filesample_code.py
.--runtime-env-json='{"pip": ["requests==2.26.0"], "env_vars": {"counter_name": "test_counter"}}'
: menentukan lingkungan runtime untuk tugas. File ini menentukan versi library Python yang diperlukan (requests==2.26.0
) dan menetapkan variabel lingkungan (counter_name
) untuk eksekusi tugas.
Lihat tugas Ray. Anda dapat memantau tugas dengan salah satu cara berikut:
- Dasbor Ray: buka browser web Anda, lalu buka
http://localhost:8265
. URL ini akan membuka dasbor Ray, tempat Anda dapat melihat informasi tentang tugas yang sedang berjalan, termasuk status, log, dan penggunaan resource-nya. - Metrics Explorer: gunakan dasbor metrik bawaan di konsol Google Cloud . Untuk mengetahui informasi selengkapnya, lihat Mengumpulkan dan melihat log dan metrik untuk cluster Ray di GKE.
- Dasbor Ray: buka browser web Anda, lalu buka
Hentikan sesi Ray. Setelah selesai berinteraksi dengan cluster Ray atau memantau tugas, Anda dapat mengakhiri sesi interaktif dengan menekan
Ctrl+C
di terminal tempat Anda menjalankan perintahkubectl ray session
.
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.
Jika Anda men-deploy quickstart di project Google Cloud baru, dan tidak lagi memerlukan project tersebut, hapus dengan menyelesaikan langkah-langkah berikut:
- Di Google Cloud konsol, buka halaman Manage resources.
- Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, masukkan project ID, lalu klik Shut down untuk menghapus project.
Jika Anda tidak membuat project Google Cloud baru, dan jika tidak lagi memerlukan cluster GKE, Anda dapat menghapusnya dengan menjalankan perintah ini:
gcloud container clusters delete my-ray-enabled-cluster \
--location=us-central1
Langkah berikutnya
- Jelajahi contoh, praktik terbaik, dan alat tambahan untuk Ray di GKE: Untuk mengetahui informasi selengkapnya, lihat repositori ai-on-gke GitHub.
- Pelajari lebih lanjut cara menggunakan akselerator di GKE: Gunakan GPU untuk pemrosesan paralel dalam tugas machine learning dan analisis data. Gunakan TPU untuk mempercepat pelatihan dan inferensi model deep learning berskala besar.
- Pelajari lebih lanjut Ray Operator: Untuk mengetahui informasi selengkapnya tentang cara menggunakan Ray Operator untuk mengelola Deployment Ray, termasuk tugas Ray, lihat Tentang Ray di GKE.
- Manfaatkan Kueue untuk pengantrean tugas: Pelajari cara Kueue, sistem antrean tugas berbasis Kubernetes, dapat membantu mengelola dan memprioritaskan workload AI/ML Anda, yang dapat meningkatkan pemanfaatan resource. Untuk mengetahui informasi selengkapnya, lihat Mengoptimalkan pemanfaatan resource GKE untuk workload inferensi dan pelatihan AI/ML campuran.