AKS üzerinde Ray Serve ile model sunma

Bu makalede, Azure Kubernetes Service (AKS) üzerinde Ray Serve kullanarak ince ayarlı Aurora hava durumu modelini kalıcı bir HTTP uç noktası olarak dağıtacaksınız. Bu yöntem, uzun süreli hizmet için bir RayService kaynağı kullanır ve Kueue tarafından erişim denetiminde değildir.

Önemli

AKS dokümantasyonu ve örneklerinde açık kaynaklı yazılımdan bahsedilmektedir. Dağıttığınız yazılım, AKS hizmet düzeyi anlaşmalarından, sınırlı garanti ve Azure desteğinden hariç tutulur. AKS ile birlikte açık kaynak teknolojisini kullanırken, bir plan geliştirmek için ilgili topluluklar ve proje sorumlularından mevcut olan destek seçeneklerine danışın.

Microsoft, AKS üzerinde dağıttığımız açık kaynak paketlerinin oluşturulmasından sorumluluk alır. Bu sorumluluk, yapı, tarama, imzalama, doğrulama ve hızlı düzeltme sürecinin tam sahipliğini içermenin yanı sıra, konteyner görüntülerindeki ikili dosyaların kontrolünü de kapsar. Daha fazla bilgi için AKS için güvenlik açığı yönetimi ve AKS destek kapsamı başlıklarına bakın.

Önkoşullar

Ortam değişkenlerini ayarlama

Kopyalanan depodaki çevrimiçi sunum örneğine gidin ve gerekli ortam değişkenlerini yapılandırın:

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

Not

AURORA_RUN_ID, tamamladığınız Aurora ince ayar çalıştırmasındaki JOB_NAME değeridir. Bu adresi şu şekilde bulabilirsiniz:

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

Hizmeti devreye alın

RayService'i dağıtma:

./submit-service.sh

Betik, sunum uygulaması kodundan bir ConfigMap oluşturur, envsubst aracılığıyla RayService bildirimini oluşturur ve uygular. KubeRay işleci Ray kümesini oluşturur ve Serve uygulamasını dağıtır.

Tip

İşlenen bildirimi kümeye uygulamadan doğrulamak için komutunu çalıştırın ./submit-service.sh --dry-run .

Not

RayService, Kueue tarafından kabul denetimine tabi değildir. İş yüklerine hizmet sunma uzun sürelidir ve toplu iş kuyruğu semantiği yerine ayrılmış kaynaklara ihtiyaç duyar.

Dağıtımı doğrulayın.

RayService Running durumunu bildirene kadar bekleyin:

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

Beklenen çıkış:

NAME           SERVICE STATUS   NUM SERVE ENDPOINTS
aurora-serve   Running          1

Uç noktayı test edin

serve hizmetine port yönlendirmesi yapın ve test istekleri gönderin:

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

Durum denetimi:

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

Beklenen çıkış:

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

Tahmin isteği:

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}'

Beklenen çıkış:

{
  "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",
  ...
}

Yanıt, tahmindeki her yüzey değişkeni için değişken başına özet istatistiklerini (şekil, ortalama, min, max) içerir.

Yapılandırma referansı

Değişken Varsayılan Description
AZURE_STORAGE_ACCOUNT_NAME (gerekli) Modül 1'den depolama hesabı
AURORA_RUN_ID (gerekli) Tamamlanmış bir aurora-finetune çalışmasından JOB_NAME
AURORA_INPUT_CONTAINER aurora Başlatma verileri içeren kapsayıcı
AURORA_ADAPTER_CONTAINER aurora LoRA kontrol noktası içeren kapsayıcı
AURORA_INIT_FILE init-2021-01-01-00z.npz İstekler için varsayılan başlatma dosyası
AURORA_LEAD_HOURS 6 Varsayılan tahmin ön süresi (6 saatin katı olmalıdır)
AURORA_LORA_RANK 8 LoRA derecesi (eğitimle eşleşmelidir)
AURORA_REQUIRE_GPU_NAME A100 GPU adı kontrolü (atlamak için boş bırakın)
SERVICE_NAME aurora-serve RayService kaynağının adı
ROUTE_PREFIX /aurora Hizmet uç noktası için HTTP yol ön eki
CONFIGMAP_NAME aurora-serve-scripts Hizmet betiğini tutan ConfigMap'in adı

Kaynakları temizle

RayService'i ve ConfigMap'ini silin:

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

Sonraki Adımlar