Menyajikan model dengan Ray Serve di AKS

Dalam artikel ini, Anda menyebarkan model cuaca Aurora yang disempurnakan sebagai titik akhir HTTP persisten dengan menggunakan Ray Serve pada Azure Kubernetes Service (AKS). Metode ini menggunakan sumber daya RayService untuk layanan jangka panjang dan tidak melalui kontrol admisi oleh Kueue.

Penting

Perangkat lunak sumber terbuka disebutkan di seluruh dokumentasi dan sampel AKS. Perangkat lunak yang Anda sebarkan dikecualikan dari perjanjian tingkat layanan AKS, garansi terbatas, dan dukungan Azure. Saat Anda menggunakan teknologi sumber terbuka bersama AKS, konsultasikan opsi dukungan yang tersedia dari masing-masing komunitas dan pengelola proyek untuk mengembangkan rencana.

Microsoft bertanggung jawab untuk membangun paket sumber terbuka yang kami sebarkan di AKS. Tanggung jawab itu termasuk memiliki kepemilikan lengkap atas proses build, pemindaian, penandatanganan, validasi, dan perbaikan cepat, bersama dengan kontrol atas file biner dalam gambar kontainer. Untuk informasi selengkapnya, lihat Manajemen kerentanan untuk AKS dan Cakupan dukungan AKS.

Prasyarat

Mengatur variabel lingkungan

Navigasikan ke contoh penyajian online di repositori kloning dan konfigurasikan variabel lingkungan yang diperlukan:

cd <path-to-cloned-repo>/AKS/examples/kueue-and-ray-on-aks/3-workloads/online-serving
export AZURE_STORAGE_ACCOUNT_NAME=$(terraform -chdir=../../1-infrastructure/terraform output -raw storage_account_name)
export AURORA_RUN_ID=<your-aurora-finetune-job-name>
source env.example

Catatan

AURORA_RUN_ID adalah JOB_NAME dari proses fine-tune Aurora yang telah Anda selesaikan. Anda dapat menemukannya dengan:

az storage blob list -c aurora --prefix checkpoints/ \
  --account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table

Menyebarkan layanan

Sebarkan RayService:

./submit-service.sh

Skrip tersebut membuat ConfigMap dari kode aplikasi serving, merender manifes RayService melalui envsubst, dan menerapkannya. Operator KubeRay membuat kluster Ray dan menyebarkan aplikasi Serve.

Tip

Jalankan ./submit-service.sh --dry-run untuk memvalidasi manifes yang dirender tanpa menerapkannya ke kluster.

Catatan

RayService tidak dikendalikan oleh Kueue. Beban kerja penyajian berumur panjang dan membutuhkan sumber daya khusus daripada semantik antrean batch.

Verifikasi proses penyebaran

Perhatikan hingga RayService melaporkan status Running:

kubectl -n ray get rayservice ${SERVICE_NAME} -w

Output yang diharapkan:

NAME           SERVICE STATUS   NUM SERVE ENDPOINTS
aurora-serve   Running          1

Menguji titik akhir

Lakukan penerusan port untuk layanan serve dan kirim permintaan uji:

kubectl -n ray port-forward svc/${SERVICE_NAME}-serve-svc 8000:8000

Pemeriksaan kesehatan:

curl http://localhost:8000${ROUTE_PREFIX}

Output yang diharapkan:

{"status":"ok","gpu_name":"NVIDIA A100-SXM4-80GB","run_id":"<your-run-id>","adapter":"checkpoints/<your-run-id>/last.safetensors"}

Permintaan prakiraan:

curl -X POST http://localhost:8000${ROUTE_PREFIX} \
  -H 'Content-Type: application/json' \
  -d '{"init_file": "init-2021-01-01-00z.npz", "lead_hours": 6}'

Output yang diharapkan:

{
  "init_file": "init-2021-01-01-00z.npz",
  "lead_hours": 6,
  "surface_variables": {
    "2t":  {"shape": [1,1,52,100], "mean": 298.76, "min": 272.0, "max": 302.0},
    "10u": {"shape": [1,1,52,100], "mean": -2.21,  "min": -18.0, "max": 15.38},
    "10v": {"shape": [1,1,52,100], "mean": 0.92,   "min": -13.88,"max": 18.88},
    "msl": {"shape": [1,1,52,100], "mean": 101320.07, "min": 100352.0, "max": 101888.0}
  },
  "gpu_name": "NVIDIA A100-SXM4-80GB",
  ...
}

Respons mencakup statistik ringkasan per variabel (bentuk, rata-rata, min, maks) untuk setiap variabel permukaan dalam prakiraan.

Referensi konfigurasi

Variabel Default Description
AZURE_STORAGE_ACCOUNT_NAME (diperlukan) Akun penyimpanan dari Modul 1
AURORA_RUN_ID (diperlukan) JOB_NAME dari proses aurora-finetune yang telah selesai
AURORA_INPUT_CONTAINER aurora Kontainer dengan data init
AURORA_ADAPTER_CONTAINER aurora Kontainer dengan titik pemeriksaan LoRA
AURORA_INIT_FILE init-2021-01-01-00z.npz File init default untuk permintaan
AURORA_LEAD_HOURS 6 Waktu prospek prakiraan default (harus kelipatan 6 jam)
AURORA_LORA_RANK 8 Rank LoRA (harus sesuai dengan pelatihan)
AURORA_REQUIRE_GPU_NAME A100 Pemeriksaan nama GPU (kosong untuk dilewati)
SERVICE_NAME aurora-serve Nama untuk sumber daya RayService
ROUTE_PREFIX /aurora Awalan rute HTTP untuk titik akhir layanan
CONFIGMAP_NAME aurora-serve-scripts Nama untuk ConfigMap yang menyimpan skrip penyajian

Membersihkan sumber daya

Hapus RayService dan ConfigMap-nya:

kubectl -n ray delete rayservice ${SERVICE_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}

Langkah berikutnya