Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, implementa el modelo meteorológico Aurora perfeccionado como un punto de conexión HTTP persistente con Ray Serve en Azure Kubernetes Service (AKS). Este método usa un recurso RayService para servicio persistente y no está sometido al control de admisión de Kueue.
Importante
El software de código abierto se menciona en toda la documentación y ejemplos de AKS. El software que implemente se excluye de los contratos de nivel de servicio de AKS, la garantía limitada y el soporte técnico de Azure. A medida que usa la tecnología de código abierto junto con AKS, consulte las opciones de soporte técnico disponibles en las comunidades y los mantenedores de proyectos respectivos para desarrollar un plan.
Microsoft asume la responsabilidad de crear los paquetes de código abierto que implementamos en AKS. Esa responsabilidad incluye ser plenamente responsable del proceso de compilación, escaneo, firma, validación y corrección rápida, junto con el control de los binarios en las imágenes de contenedor. Para obtener más información, vea Administración de vulnerabilidades para AKS y Cobertura del soporte técnico de AKS.
Prerequisites
- Infraestructura implementada siguiendo Implementar la infraestructura para Ray y Kueue en AKS.
- El espacio de nombres y la cuenta de servicio se han creado siguiendo Configurar colas de Kueue para cargas de trabajo de Ray en AKS.
- Ajuste fino de Aurora completado siguiendo Ajustar el modelo meteorológico de Aurora con Ray en AKS: el punto de control de LoRA debe existir en
aurora/checkpoints/<run-id>/last.safetensorsen el almacenamiento de blobs. -
envsubstinstalado (gettextpaquete en Linux,brew install gettexten macOS).
Establecimiento de variables de entorno
Vaya al ejemplo de servicio en línea en el repositorio clonado y configure las variables de entorno necesarias:
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
Note
AURORA_RUN_ID es el JOB_NAME de tu ejecución completada de Aurora Fine-Tune. Puede encontrarlo con:
az storage blob list -c aurora --prefix checkpoints/ \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Implementación del servicio
Implemente RayService:
./submit-service.sh
El script crea un ConfigMap a partir del código de la aplicación de serving, genera el manifiesto de RayService mediante envsubst y lo aplica. El operador KubeRay crea el clúster de Ray e implementa la aplicación Serve.
Tip
Ejecute ./submit-service.sh --dry-run para validar el manifiesto representado sin aplicarlo al clúster.
Note
RayService no está sometido al control de admisión de Kueue. Las cargas de trabajo de servicio tienen una larga duración y necesitan recursos dedicados, en lugar de la semántica de las colas por lotes.
Comprobación de la implementación
Espere hasta que RayService indique el estado Running:
kubectl -n ray get rayservice ${SERVICE_NAME} -w
Resultado esperado:
NAME SERVICE STATUS NUM SERVE ENDPOINTS
aurora-serve Running 1
Prueba del punto de conexión
Reenvía los puertos del servicio serve y envía solicitudes de prueba:
kubectl -n ray port-forward svc/${SERVICE_NAME}-serve-svc 8000:8000
Comprobación de estado:
curl http://localhost:8000${ROUTE_PREFIX}
Resultado esperado:
{"status":"ok","gpu_name":"NVIDIA A100-SXM4-80GB","run_id":"<your-run-id>","adapter":"checkpoints/<your-run-id>/last.safetensors"}
Solicitud de previsión:
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}'
Resultado esperado:
{
"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",
...
}
La respuesta incluye estadísticas de resumen por variable (forma, media, mínima y máxima) para cada variable de superficie de la previsión.
Referencia de configuración
| Variable | Predeterminado | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(obligatorio) | Cuenta de almacenamiento del módulo 1 |
AURORA_RUN_ID |
(obligatorio) | JOB_NAME de una ejecución completada de Aurora Fine-Tune |
AURORA_INPUT_CONTAINER |
aurora |
Contenedor con datos de inicialización |
AURORA_ADAPTER_CONTAINER |
aurora |
Contenedor con el punto de control de LoRA |
AURORA_INIT_FILE |
init-2021-01-01-00z.npz |
Archivo de inicialización predeterminado para solicitudes |
AURORA_LEAD_HOURS |
6 |
Tiempo de plazo de previsión predeterminado (debe ser un múltiplo de 6h) |
AURORA_LORA_RANK |
8 |
Rango de LoRA (debe coincidir con el del entrenamiento) |
AURORA_REQUIRE_GPU_NAME |
A100 |
Comprobación del nombre de la GPU (dejar en blanco para omitir) |
SERVICE_NAME |
aurora-serve |
Nombre del recurso RayService |
ROUTE_PREFIX |
/aurora |
Prefijo de ruta HTTP para el endpoint serve |
CONFIGMAP_NAME |
aurora-serve-scripts |
Nombre del objeto ConfigMap que contiene el script de servicio |
Limpieza de recursos
Elimine RayService y su configMap:
kubectl -n ray delete rayservice ${SERVICE_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}