Membuat cluster Ray di Vertex AI

Dokumen ini memberikan petunjuk untuk menyiapkan cluster Ray di Vertex AI guna memenuhi berbagai kebutuhan. Misalnya, jika Anda ingin mem-build image Anda sendiri, lihat Image kustom. Beberapa perusahaan mungkin perlu menggunakan jaringan pribadi. Hal ini dibahas dalam antarmuka Private Service Connect untuk Ray on Vertex AI. Kasus penggunaan lainnya melibatkan akses ke file jarak jauh seolah-olah file tersebut bersifat lokal (lihat Ray di Sistem File Jaringan Vertex AI).

Ringkasan

Topik yang dibahas di sini mencakup:

Membuat cluster Ray

Anda dapat menggunakan konsol Google Cloud atau Vertex AI SDK untuk Python guna membuat cluster Ray. Cluster dapat memiliki hingga 2.000 node. Ada batas atas 1.000 node dalam satu kumpulan pekerja. Tidak ada batasan jumlah kumpulan pekerja, tetapi memiliki kumpulan pekerja dalam jumlah besar, seperti memiliki 1.000 kumpulan pekerja dengan masing-masing satu node, dapat memengaruhi performa cluster secara negatif.

Sebelum memulai, pastikan untuk membaca ringkasan Ray di Vertex AI dan menyiapkan semua alat prasyarat yang Anda butuhkan.

Cluster Ray di Vertex AI mungkin memerlukan waktu 10-20 menit untuk dimulai setelah Anda membuatnya.

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.

  1. Di Konsol Google Cloud, buka halaman Ray on Vertex AI.

    Buka halaman Ray on Vertex AI

  2. Klik Create Cluster untuk membuka panel Create Cluster.

  3. Untuk setiap langkah di panel Create Cluster, tinjau atau ganti informasi cluster default. Klik Continue untuk menyelesaikan setiap langkah:

    1. Untuk Name and region, tentukan Name, lalu pilih Location untuk cluster Anda.

    2. Untuk Compute settings, tentukan konfigurasi cluster Ray di node head Vertex AI, termasuk jenis mesin, jenis dan jumlah akselerator, jenis dan ukuran disk, serta jumlah replika. Jika perlu, Anda dapat menambahkan URI image kustom untuk menentukan image container kustom guna menambahkan dependensi Python yang tidak disediakan oleh image container default. Lihat Image kustom.

      Di bagian Advanced options, Anda dapat:

      • Tentukan kunci enkripsi Anda sendiri.
      • Tentukan akun layanan khusus
      • Nonaktifkan pengumpulan metrik, jika Anda tidak perlu memantau statis resource workload selama pelatihan.
    3. (Opsional) Untuk menetapkan endpoint pribadi, bukan endpoint publik, untuk cluster Anda, tentukan jaringan VPC yang akan digunakan dengan Ray di Vertex AI. Untuk mengetahui informasi selengkapnya, lihat Konektivitas pribadi dan publik.

      Jika Anda belum menyiapkan koneksi untuk jaringan VPC, klik Set up connection. Di panel Create a private services access connection, selesaikan dan klik Continue untuk setiap langkah berikut:

      1. Aktifkan Service Networking API.

      2. Untuk Allocate an IP range, Anda dapat memilih, membuat, atau mengizinkan Google untuk mengalokasikan rentang IP secara otomatis.

      3. Untuk Create connection, tinjau informasi Network dan Allocated IP Range.

      4. Klik Create connection.

  4. Klik Create.

Ray on Vertex AI SDK

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, gunakan perintah berikut untuk membuat cluster Ray di Vertex AI:

import ray
import vertex_ray
from google.cloud import aiplatform
from vertex_ray import Resources
from vertex_ray.util.resources import NfsMount

# Define a default CPU cluster, machine_type is n1-standard-16, 1 head node and 1 worker node
head_node_type = Resources()
worker_node_types = [Resources()]

# Or define a GPU cluster.
head_node_type = Resources(
  machine_type="n1-standard-16",
  node_count=1,
  custom_image="us-docker.pkg.dev/my-project/ray-custom.2-9.py310:latest",  # Optional. When not specified, a prebuilt image is used.
)

worker_node_types = [Resources(
  machine_type="n1-standard-16",
  node_count=2,  # Must be >= 1
  accelerator_type="NVIDIA_TESLA_T4",
  accelerator_count=1,
  custom_image="us-docker.pkg.dev/my-project/ray-custom.2-9.py310:latest",  # When not specified, a prebuilt image is used.
)]
# Optional. Create cluster with Network File System (NFS) setup.
nfs_mount = NfsMount(
    server="10.10.10.10",
    path="nfs_path",
    mount_point="nfs_mount_point",
)
aiplatform.init()
# Initialize Vertex AI to retrieve projects for downstream operations.
# Create the Ray cluster on Vertex AI
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
  head_node_type=head_node_type,
  network=NETWORK, #Optional
  worker_node_types=worker_node_types,
  python_version="3.10",  # Optional
  ray_version="2.33",  # Optional
  cluster_name=CLUSTER_NAME, # Optional
  service_account=SERVICE_ACCOUNT,  # Optional
  enable_metrics_collection=True,  # Optional. Enable metrics collection for monitoring.
  labels=LABELS,  # Optional.
  nfs_mounts=[nfs_mount],  # Optional.

)

Dengan keterangan:

  • CLUSTER_NAME: Nama untuk cluster Ray di Vertex AI yang harus unik di seluruh project Anda.

  • NETWORK: (Opsional) Nama lengkap jaringan VPC Anda, dalam format projects/PROJECT_ID/global/networks/VPC_NAME. Untuk menetapkan endpoint pribadi, bukan endpoint publik, untuk cluster Anda, tentukan jaringan VPC yang akan digunakan dengan Ray di Vertex AI. Untuk mengetahui informasi selengkapnya, lihat Konektivitas pribadi dan publik.

  • VPC_NAME: (Opsional) VPC tempat VM beroperasi.

  • PROJECT_ID: ID project Google Cloud Anda. Anda dapat menemukan project ID di halaman sambutan Konsol Google Cloud.

  • SERVICE_ACCOUNT: (Opsional) Akun layanan untuk menjalankan aplikasi Ray di cluster. Peran yang diperlukan harus diberikan.

  • LABELS: (Opsional) Label dengan metadata yang ditentukan pengguna yang digunakan untuk mengatur cluster Ray. Kunci dan nilai label tidak boleh lebih dari 64 karakter (kode titik Unicode), dan hanya boleh berisi huruf kecil, karakter numerik, garis bawah, dan tanda hubung. Karakter internasional diizinkan. Lihat https://goo.gl/xmQnxf untuk mengetahui informasi selengkapnya dan contoh label.

Anda akan melihat output berikut sampai statusnya berubah menjadi RUNNING:

[Ray on Vertex AI]: Cluster State = State.PROVISIONING
Waiting for cluster provisioning; attempt 1; sleeping for 0:02:30 seconds
...
[Ray on Vertex AI]: Cluster State = State.RUNNING

Perhatikan hal-hal berikut:

  • Node pertama digunakan sebagai node Head.

  • Jenis mesin TPU tidak didukung.

Pengelolaan siklus proses

Selama siklus proses cluster Ray di Vertex AI, setiap tindakan dikaitkan dengan status. Status penagihan dan opsi pengelolaan untuk setiap status dirangkum dalam tabel di bawah. Dokumentasi referensi memberikan definisi untuk setiap status ini.

Tindakan Status Ditagih? Tindakan hapus tersedia? Tindakan batal tersedia?
Pengguna membuat cluster PENYEDIAAN Tidak Tidak Tidak
Pengguna menskalakan ke atas atau ke bawah secara manual MEMPERBARUI Ya, sesuai ukuran real time Ya Tidak
Cluster sedang berjalan BERJALAN Ya Ya Tidak berlaku - Anda dapat menghapus
Cluster melakukan penskalaan otomatis ke atas atau ke bawah MEMPERBARUI Ya, sesuai ukuran real time Ya Tidak
Pengguna menghapus cluster BERHENTI Tidak Tidak Tidak berlaku - sudah berhenti
Cluster memasuki status Error ERROR Tidak Ya Tidak berlaku - Anda dapat menghapus
Tidak berlaku STATE_UNSPECIFIED Tidak Ya Tidak berlaku

Gambar Kustom (Opsional)

Gambar bawaan sesuai dengan sebagian besar kasus penggunaan. Jika ingin mem-build image sendiri, sebaiknya gunakan image bawaan Ray on Vertex sebagai image dasar. Lihat dokumentasi Docker untuk mengetahui cara mem-build image dari image dasar.

Image dasar ini mencakup penginstalan Python, Ubuntu, dan Ray. Fitur ini juga mencakup dependensi seperti:

  • python-json-logger
  • google-cloud-resource-manager
  • ca-certificates-java
  • libatlas-base-dev
  • liblapack-dev
  • g++, libio-all-perl
  • libyaml-0-2.

Konektivitas pribadi dan publik

Secara default, Ray on Vertex AI membuat endpoint publik yang aman untuk pengembangan interaktif dengan Ray Client di cluster Ray di Vertex AI. Sebaiknya gunakan konektivitas publik untuk pengembangan atau kasus penggunaan sementara. Endpoint publik ini dapat diakses melalui internet. Hanya pengguna resmi yang setidaknya memiliki izin peran pengguna Vertex AI di project pengguna cluster Ray yang dapat mengakses cluster.

Jika Anda memerlukan koneksi pribadi ke cluster atau jika Anda menggunakan Kontrol Layanan VPC, peering VPC didukung untuk cluster Ray di Vertex AI. Cluster dengan endpoint pribadi hanya dapat diakses dari klien dalam jaringan VPC yang melakukan peering dengan Vertex AI.

Untuk menyiapkan konektivitas pribadi dengan Peering VPC untuk Ray on Vertex AI, pilih jaringan VPC saat Anda membuat cluster. Jaringan VPC memerlukan koneksi layanan pribadi antara jaringan VPC Anda dan Vertex AI. Jika menggunakan Ray on Vertex AI di konsol, Anda dapat menyiapkan koneksi akses layanan pribadi saat membuat cluster.

Jika Anda ingin menggunakan Kontrol Layanan VPC dan peering VPC dengan cluster Ray di Vertex AI, ada penyiapan tambahan yang diperlukan untuk menggunakan dasbor Ray dan shell interaktif. Ikuti petunjuk yang dibahas dalam artikel Dasbor Ray dan Shell Interaktif dengan VPC-SC + VPC Peering untuk mengonfigurasi penyiapan shell interaktif dengan VPC-SC dan VPC Peering di project pengguna Anda.

Setelah membuat cluster Ray di Vertex AI, Anda dapat terhubung ke node head menggunakan Vertex AI SDK untuk Python. Lingkungan penghubung, seperti VM Compute Engine atau instance Vertex AI Workbench, harus berada di jaringan VPC yang di-peering dengan Vertex AI. Perhatikan bahwa koneksi layanan pribadi memiliki jumlah alamat IP yang terbatas, yang dapat menyebabkan kehabisan alamat IP. Oleh karena itu, sebaiknya gunakan koneksi pribadi untuk cluster yang berjalan lama.

Antarmuka Private Service Connect untuk Ray di Vertex AI

Egress antarmuka Private Service Connect dan ingress antarmuka Private Service Connect didukung di cluster Ray di Vertex AI.

Untuk menggunakan egress antarmuka Private Service Connect, ikuti petunjuk yang diberikan di bawah. Jika Kontrol Layanan VPC tidak diaktifkan, cluster dengan traffic keluar antarmuka Private Service Connect akan menggunakan endpoint publik yang aman untuk traffic masuk dengan Ray Client.

Jika Kontrol Layanan VPC diaktifkan, ingress antarmuka Private Service Connect digunakan secara default dengan egress antarmuka Private Service Connect. Untuk terhubung dengan Ray Client atau mengirimkan tugas dari notebook untuk cluster dengan ingress antarmuka Private Service Connect, pastikan notebook berada dalam VPC dan subjaringan project pengguna. Untuk mengetahui detail selengkapnya tentang cara menyiapkan Kontrol Layanan VPC, lihat Kontrol Layanan VPC dengan Vertex AI.

diagram cara mengaktifkan antarmuka Private Service Connect

Mengaktifkan antarmuka Private Service Connect

Ikuti panduan menyiapkan resource untuk menyiapkan antarmuka Private Service Connect. Setelah menyiapkan resource, Anda siap mengaktifkan antarmuka Private Service Connect di cluster Ray di Vertex AI.

Konsol

  1. Saat membuat cluster dan setelah menentukan Name and region dan Compute settings, opsi Networking akan muncul.

    console-specify-network

  2. Siapkan lampiran jaringan dengan melakukan salah satu tindakan berikut:

    • Gunakan nama NETWORK_ATTACHMENT_NAME yang Anda tentukan saat menyiapkan resource untuk Private Service Connect.
    • Buat lampiran jaringan baru dengan mengklik tombol Create network attachment yang muncul di drop-down.

    console-create-new-network

  3. Klik Create network attachment.

  4. Pada subtugas yang muncul, tentukan nama, jaringan, dan subjaringan untuk lampiran jaringan baru.

    network-attachment

  5. Klik Create.

Ray on Vertex AI SDK

Ray on Vertex AI SDK adalah bagian dari Vertex AI SDK untuk Python. Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Vertex AI SDK untuk Python.

from google.cloud import aiplatform
import vertex_ray

# Initialization
aiplatform.init()

# Create a default cluster with network attachment configuration

psc_config = vertex_ray.PscIConfig(network_attachment=NETWORK_ATTACHMENT_NAME)
cluster_resource_name = vertex_ray.create_ray_cluster(
   psc_config=psc_config,
)

Dengan keterangan:

  • NETWORK_ATTACHMENT_NAME: Nama yang Anda tentukan saat menyiapkan resource untuk Private Service Connect di project pengguna.

Ray on Vertex AI Network File System (NFS)

Agar file jarak jauh tersedia untuk cluster Anda, pasang bagian Network File System (NFS). Tugas Anda kemudian dapat mengakses file jarak jauh seolah-olah file tersebut bersifat lokal, sehingga memungkinkan throughput tinggi dan latensi rendah.

Penyiapan VPC

Ada dua opsi untuk menyiapkan VPC:

  1. Buat Lampiran Jaringan antarmuka Private Service Connect. (Disarankan)
  2. Siapkan Peering Jaringan VPC.

Menyiapkan instance NFS

Untuk mengetahui detail selengkapnya tentang cara membuat instance Filestore, lihat Membuat instance. Jika menggunakan metode PSC-I, Anda tidak perlu memilih mode akses layanan pribadi saat membuat filestore.

Menggunakan Network File System (NFS)

Untuk menggunakan Sistem File Jaringan, Anda harus menentukan jaringan atau lampiran jaringan (direkomendasikan).

Konsol

  1. Di langkah Networking pada halaman pembuatan, setelah menentukan jaringan atau lampiran jaringan. Untuk melakukannya, klik Tambahkan pemasangan NFS di bagian Network File System (NFS), lalu tentukan pemasangan NFS (server, jalur, dan titik pemasangan).

    Kolom Deskripsi
    server Alamat IP server NFS Anda. Alamat ini harus berupa alamat pribadi di VPC Anda.
    path Jalur berbagi secara NFS. Jalur ini harus berupa jalur absolut yang dimulai dengan /.
    mountPoint Lokasi titik pemasangan lokal. Titik ini harus berupa nama direktori UNIX yang valid. Misalnya, jika direktori pemasangan lokal adalah sourceData, tentukan jalur /mnt/nfs/ sourceData dari instance VM pelatihan Anda.

    Untuk mengetahui informasi selengkapnya, lihat Tempat menentukan resource komputasi.

  2. Tentukan server, jalur, dan titik pemasangan. nfs-file-system

  3. Klik Create. Tindakan ini akan membuat cluster Ray.

Dasbor Ray dan Shell Interaktif dengan VPC-SC + Peering VPC

  1. Konfigurasi peered-dns-domains.

    {
      VPC_NAME=NETWORK_NAME
      REGION=LOCATION
      gcloud services peered-dns-domains create training-cloud \
      --network=$VPC_NAME \
      --dns-suffix=$REGION.aiplatform-training.cloud.google.com.
    
      # Verify
      gcloud beta services peered-dns-domains list --network $VPC_NAME;
    }
        
    • NETWORK_NAME: Mengubah ke jaringan peering.

    • LOCATION: Lokasi yang diinginkan (misalnya, us-central1).

  2. Konfigurasi DNS managed zone.

    {
      PROJECT_ID=PROJECT_ID
      ZONE_NAME=$PROJECT_ID-aiplatform-training-cloud-google-com
      DNS_NAME=aiplatform-training.cloud.google.com
      DESCRIPTION=aiplatform-training.cloud.google.com
    
      gcloud dns managed-zones create $ZONE_NAME  \
      --visibility=private  \
      --networks=https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/networks/$VPC_NAME  \
      --dns-name=$DNS_NAME  \
      --description="Training $DESCRIPTION"
    }
        
    • PROJECT_ID: Project ID Anda. Anda dapat menemukan ID ini di halaman sambutan Konsol Google Cloud.

  3. Catat transaksi DNS.

    {
      gcloud dns record-sets transaction start --zone=$ZONE_NAME
    
      gcloud dns record-sets transaction add \
      --name=$DNS_NAME. \
      --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
      --zone=$ZONE_NAME \
      --ttl=300
    
      gcloud dns record-sets transaction add \
      --name=*.$DNS_NAME. \
      --type=CNAME $DNS_NAME. \
      --zone=$ZONE_NAME \
      --ttl=300
    
      gcloud dns record-sets transaction execute --zone=$ZONE_NAME
    }
        
  4. Kirim tugas pelatihan dengan shell interaktif + VPC-SC + Peering VPC diaktifkan.

Langkah selanjutnya