Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste artigo, implementa o modelo meteorológico Aurora afinado como um endpoint HTTP persistente usando o Ray Serve no Azure Kubernetes Service (AKS). Este método utiliza um recurso RayService para serviço de longa duração e não está sujeito ao controlo de admissão por Kueue.
Importante
O software de código aberto é mencionado em toda a documentação e amostras do AKS. O software que você implanta é excluído dos contratos de nível de serviço do AKS, da garantia limitada e do suporte do Azure. Ao usar a tecnologia de código aberto ao lado do AKS, consulte as opções de suporte disponíveis nas respetivas comunidades e mantenedores do projeto para desenvolver um plano.
A Microsoft assume a responsabilidade pela criação dos pacotes de código aberto que implantamos no AKS. Essa responsabilidade inclui ter a propriedade completa do processo de compilação, digitalização, assinatura, validação e correção rápida, juntamente com o controlo dos binários nas imagens de contentor. Para obter mais informações, consulte Gestão de vulnerabilidades para AKS e Cobertura de suporte AKS.
Pré-requisitos
- Infraestrutura implementada na sequência de Implementar a infraestrutura para Ray e Kueue no AKS.
- Namespace e conta de serviço criados seguindo Configurar filas do Kueue para cargas de trabalho do Ray no AKS.
- Ajuste do Aurora concluído na sequência de Ajustar o modelo meteorológico Aurora com Ray no AKS - o ponto de controlo LoRA tem de existir em
aurora/checkpoints/<run-id>/last.safetensorsno armazenamento de blobs. -
envsubstinstalado (gettextpacote para Linux,brew install gettextno macOS).
Definir variáveis de ambiente
Navegue até ao exemplo de serviço online no repositório clonado e configure as variáveis de ambiente necessárias:
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
Nota
AURORA_RUN_ID é o JOB_NAME da tua execução concluída de afinação do Aurora. Pode encontrá-lo em:
az storage blob list -c aurora --prefix checkpoints/ \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Implementar o serviço
Implemente o RayService:
./submit-service.sh
O script cria um ConfigMap a partir do código da aplicação de serviço, renderiza o manifesto RayService via envsubst, e aplica-o. O operador KubeRay cria o cluster Ray e implementa a aplicação Serve.
Sugestão
Execute ./submit-service.sh --dry-run para validar o manifesto renderizado sem o aplicar ao cluster.
Nota
A RayService não está sujeita a controlo de admissão pelo Kueue. As cargas de trabalho de serviço são duradouras e requerem recursos dedicados em vez de semântica de fila em lote.
Verificar a implantação
Aguarde até que o RayService indique Running:
kubectl -n ray get rayservice ${SERVICE_NAME} -w
Produção esperada:
NAME SERVICE STATUS NUM SERVE ENDPOINTS
aurora-serve Running 1
Testar o ponto final
Encaminhe o serviço de serviço e envie pedidos de teste:
kubectl -n ray port-forward svc/${SERVICE_NAME}-serve-svc 8000:8000
Verificação de saúde:
curl http://localhost:8000${ROUTE_PREFIX}
Produção esperada:
{"status":"ok","gpu_name":"NVIDIA A100-SXM4-80GB","run_id":"<your-run-id>","adapter":"checkpoints/<your-run-id>/last.safetensors"}
Pedido de previsão:
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}'
Produção esperada:
{
"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",
...
}
A resposta inclui estatísticas resumidas por variável (forma, média, mínimo, máximo) para cada variável de superfície na previsão.
Referência de configuração
| Variável | Predefinição | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(obrigatório) | Conta de armazenamento do Módulo 1 |
AURORA_RUN_ID |
(obrigatório) | JOB_NAME de uma corrida completada de Aurora-Fintune |
AURORA_INPUT_CONTAINER |
aurora |
Contentor com dados de inicialização |
AURORA_ADAPTER_CONTAINER |
aurora |
Contentor com o ponto de verificação LoRA |
AURORA_INIT_FILE |
init-2021-01-01-00z.npz |
Ficheiro de inicialização predefinido para pedidos |
AURORA_LEAD_HOURS |
6 |
Prazo de previsão padrão (deve ser um múltiplo de 6h) |
AURORA_LORA_RANK |
8 |
Rank de LoRA (tem de corresponder ao usado no treino) |
AURORA_REQUIRE_GPU_NAME |
A100 |
Verificação do nome da GPU (vazio para saltar) |
SERVICE_NAME |
aurora-serve |
Nome do recurso RayService |
ROUTE_PREFIX |
/aurora |
Prefixo de rota HTTP para o endpoint de serviço |
CONFIGMAP_NAME |
aurora-serve-scripts |
Nome para o ConfigMap que contém o script de serviço |
Limpeza de recursos
Apague o RayService e o seu ConfigMap:
kubectl -n ray delete rayservice ${SERVICE_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}