Anda dapat terhubung ke cluster Ray di Vertex AI dan mengembangkan aplikasi menggunakan metode berikut:
Terhubung ke cluster Ray di Vertex AI melalui Ray Client menggunakan versi Vertex AI SDK untuk Python yang menyertakan fungsi Ray Client. Gunakan opsi ini jika Anda lebih memilih lingkungan pengembangan Python interaktif.
Gunakan Vertex AI SDK untuk Python dalam notebook Colab Enterprise di konsol Google Cloud.
Gunakan Vertex AI SDK untuk Python dalam sesi Python, shell, atau notebook Jupyter.
Tulis skrip Python dan kirimkan skrip tersebut ke cluster Ray di Vertex AI menggunakan Ray Jobs API. Gunakan opsi ini jika Anda lebih suka mengirimkan tugas secara terprogram.
Menghubungkan ke cluster Ray melalui Ray Client
Untuk menggunakan Ray Client interaktif, hubungkan ke cluster Ray di Vertex AI. Jaringan lingkungan yang terhubung bergantung pada konfigurasi jaringan cluster. Tidak ada batasan pada lingkungan koneksi selama cluster memiliki akses internet publik. Artinya, jaringan VPC tidak ditentukan selama pembuatan cluster. Namun, jika cluster berada di jaringan VPC pribadi yang di-peering dengan Vertex AI, lingkungan yang terhubung harus berada di jaringan VPC yang sama dengan cluster.
Versi Ray di sisi klien harus cocok dengan versi Ray cluster.
pip install "google-cloud-aiplatform[ray]"
menginstal Ray versi 2.33 di sisi klien secara default. Jika versi Ray
cluster adalah 2.9, Anda harus menggunakan pip install ray==2.9.3
untuk mencocokkan
versi Ray sisi klien dengan versi Ray cluster.
Konsol
Sesuai dengan rekomendasi praktik terbaik OSS Ray, menetapkan jumlah CPU logis ke 0 di node head Ray diterapkan untuk menghindari menjalankan beban kerja apa pun di node head.
Di Konsol Google Cloud, buka halaman Ray on Vertex AI.
Di baris untuk cluster yang Anda buat, klik Buka di Colab Enterprise.
Notebook Colab Enterprise akan terbuka. Ikuti petunjuk tentang cara menggunakan Vertex AI SDK untuk Python guna terhubung ke cluster Ray di Vertex AI.
Jika layar dialog meminta Anda untuk mengaktifkan API, klik Enable.
Klik Connect jika Anda terhubung ke cluster untuk pertama kalinya, atau Re-connect jika Anda terhubung kembali ke cluster. Notebook ini memerlukan waktu beberapa menit untuk terhubung ke Runtime.
Klik +CREATE untuk membuat notebook baru.
Klik untuk membuka panel Ray on Vertex AI.
Tampilan cluster yang ada akan muncul.Pilih cluster, lalu klik CONNECT.
Kode akan muncul di notebook terbuka yang terhubung ke cluster yang Anda pilih.Tindakan lainnya (Opsional): Untuk membuka halaman daftar cluster Ray on Vertex AI, klik Kelola cluster di panel Ray on Vertex AI.
- Pilih cluster, lalu klik menu
Opsi lainnya akan muncul:
more actions.
- Pilih cluster, lalu klik menu
Jalankan sel kode Memulai untuk mengimpor Vertex AI SDK untuk Python dan terhubung ke cluster Ray di Vertex AI.
Python
Sesuai dengan rekomendasi praktik terbaik OSS Ray, menetapkan jumlah CPU logis ke 0 di node head Ray diterapkan untuk menghindari menjalankan beban kerja apa pun di node head.
Dari lingkungan Python interaktif:
import ray # Necessary even if aiplatform.* symbol is not directly used in your program. from google.cloud import aiplatform import vertex_ray import vertexai vertexai.init() # The CLUSTER_RESOURCE_NAME is the one returned from vertex_ray.create_ray_cluster. CLUSTER_RESOURCE_NAME='projects/{}/locations/{}/persistentResources/{}'.format(PROJECT_ID, LOCATION, CLUSTER_NAME) ray.init('vertex_ray://{}'.format(CLUSTER_RESOURCE_NAME))
Dengan keterangan:
LOCATION: Lokasi yang Anda tentukan untuk cluster Ray di Vertex AI.
PROJECT_ID: ID project Google Cloud Anda. Anda dapat menemukan project ID di halaman sambutan Konsol Google Cloud.
CLUSTER_NAME: Nama cluster Ray on Vertex AI, yang ditentukan saat Anda membuat cluster. Buka konsol Google Cloud untuk melihat daftar nama cluster untuk project.
Anda akan melihat output yang mirip dengan berikut ini:
Python version: 3.10.12 Ray version: 2.33 Vertex SDK version: 1.46.0 Dashboard: xxxx-dot-us-central1.aiplatform-training.googleusercontent.com
Anda dapat menggunakan URL Dashboard
untuk mengakses dasbor Ray dari browser. URI
menggunakan format
https://xxxx-dot-us-central1.aiplatform-training.googleusercontent.com/
.
Dasbor ini menampilkan tugas yang dikirimkan, jumlah GPU atau CPU, dan kapasitas disk setiap mesin di cluster.
Setelah terhubung ke cluster Ray di Vertex AI, Anda dapat mengembangkan program Ray dengan cara yang sama seperti mengembangkannya untuk backend OSS Ray biasa.
@ray.remote def square(x): print(x) return x * x # Launch four parallel square tasks. futures = [square.remote(i) for i in range(4)] print(ray.get(futures)) # Returns [0, 1, 4, 9]
Mengembangkan aplikasi menggunakan Ray Jobs API
Bagian ini menjelaskan cara mengirimkan program Python ke cluster Ray di Vertex AI menggunakan Ray Jobs API.
Menulis skrip Python
Kembangkan aplikasi Anda sebagai skrip Python di editor teks apa pun. Misalnya,
tempatkan skrip berikut dalam file my_script.py
:
import ray import time @ray.remote def hello_world(): return "hello world" @ray.remote def square(x): print(x) time.sleep(100) return x * x ray.init() # No need to specify address="vertex_ray://...." print(ray.get(hello_world.remote())) print(ray.get([square.remote(i) for i in range(4)]))
Mengirim tugas Ray menggunakan Ray Jobs API
Anda dapat mengirimkan tugas Ray menggunakan Python, Ray Jobs CLI, atau alamat dasbor Ray publik.
Python - nama resource cluster
Kirim tugas Ray menggunakan lingkungan Python:
import ray import vertex_ray from ray.job_submission import JobSubmissionClient from google.cloud import aiplatform # Necessary even if aiplatform.* symbol is not directly used in your program. CLUSTER_RESOURCE_NAME='projects/{}/locations/REGION/persistentResources/{}'.format(PROJECT_ID, CLUSTER_NAME) client = JobSubmissionClient("vertex_ray://{}".format(CLUSTER_RESOURCE_NAME)) job_id = client.submit_job( # Entrypoint shell command to execute entrypoint="python my_script.py", # Path to the local directory that contains the my_script.py file. runtime_env={ "working_dir": "./directory-containing-my-script", "pip": ["numpy", "setuptools<70.0.0", "xgboost", "ray==CLUSTER_RAY_VERSION", # pin the Ray version to the same version as the cluster ] } ) # Ensure that the Ray job has been created. print(job_id)
Dengan keterangan:
REGION: Region yang Anda tentukan untuk cluster Ray di Vertex AI.
PROJECT_ID: Nomor project Google Cloud Anda. Anda dapat menemukan project ID di halaman sambutan Konsol Google Cloud.
CLUSTER_NAME: Nama cluster Ray on Vertex AI, yang ditentukan saat Anda membuat cluster. Buka konsol Google Cloud untuk melihat daftar nama cluster untuk project.
CLUSTER_RAY_VERSION: Sematkan versi Ray ke versi yang sama dengan cluster. Misalnya, 2.33.0.
Python - Dasbor Ray
Alamat dasbor Ray dapat diakses dari luar VPC, termasuk internet publik.
Perhatikan bahwa vertex_ray
diperlukan untuk mendapatkan autentikasi secara otomatis.
from ray.job_submission import JobSubmissionClient import vertex_ray DASHBOARD_ADDRESS=DASHBOARD_ADDRESS client = JobSubmissionClient( "vertex_ray://{}".format(DASHBOARD_ADDRESS), ) job_id = client.submit_job( # Entrypoint shell command to execute entrypoint="python my_script.py", # Path to the local directory that contains the my_script.py file runtime_env={ "working_dir": "./directory-containing-my-script", "pip": ["numpy", "setuptools<70.0.0", "xgboost", "ray==CLUSTER_RAY_VERSION", # pin the Ray version to the same version as the cluster ] } ) print(job_id)
Dengan keterangan:
DASHBOARD_ADDRESS: Alamat dasbor Ray untuk cluster Anda. Anda dapat menemukan alamat dasbor menggunakan Vertex AI SDK untuk Python.
CLI Ray Jobs
Perlu diperhatikan bahwa Anda hanya dapat menggunakan perintah CLI Ray Jobs dalam jaringan VPC yang di-peering.
$ ray job submit --working-dir ./ --address vertex_ray://{CLUSTER_RESOURCE_NAME} -- python my_script.py
Setelah mengirimkan Tugas Ray yang berjalan lama, jika ingin memantau status tugas
menggunakan client.get_job_status(job_id)
, Anda mungkin harus membuat instance ulang
JobSubmissionClient(client = JobSubmissionClient("vertex_ray://{}".format(CLUSTER_RESOURCE_NAME))
)
untuk memuat ulang token autentikasi.
Dukungan untuk peering VPC dan akun layanan kustom
Ray on Vertex AI mendukung Ray Client dan Ray Jobs API (JobSubmissionClient) di jaringan publik untuk agen layanan default dan akun layanan kustom.
Dukungan Ray on Vertex AI untuk peering VPC, saat cluster Ray dibuat dengan jaringan VPC, ditampilkan dalam tabel ini:
Peering VPC | Agen layanan default | Akun layanan kustom |
---|---|---|
Ray Client (mode interaktif) | Ya | Tidak |
Ray JobSubmissionClient | Ya | Ya |
Kontrol Layanan VPC (VPC-SC) memerlukan konfigurasi tambahan. Lihat Konektivitas pribadi dan publik untuk mengetahui detail selengkapnya.
Menggunakan Network File System (NFS) dalam Kode Ray
Jika menetapkan mount NFS saat membuat cluster Ray, Anda dapat membaca dan menulis volume NFS tersebut dalam kode aplikasi.
RayClient
Bagian ini menunjukkan cara menggunakan Network File System (NFS) dalam kode Ray Anda.
Melakukan inisialisasi RayClient di lingkungan Python
import ray from google.cloud import aiplatform import vertex_ray aiplatform.init(project=PROJECT_ID, location=REGION) ray.init(address='vertex_ray://projects/{}/locations/us-central1/persistentResources/{}'.format(PROJECT_NUMBER, PERSISTENT_RESOURCE_ID))
Menjalankan skrip tugas
import ray import logging import os import sys @ray.remote def main(): logging.info("list all files in mounted folder") return os.listdir("/mnt/nfs/test") print(''.join(ray.get(main.remote())))
Anda dapat mengirimkan tugas Ray menggunakan Python, Ray Jobs CLI, atau alamat dasbor Ray publik. Untuk mengetahui informasi selengkapnya, lihat Mengembangkan aplikasi di cluster Ray di Vertex AI).