Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, você implantará o modelo meteorológico Aurora ajustado como um ponto de extremidade HTTP persistente usando o Ray Serve no Serviço de Kubernetes do Azure (AKS). Este método usa um recurso RayService para serviço de longa duração e não é controlado por admissão pelo Kueue.
Importante
O software de código aberto é mencionado em toda a documentação e amostras do AKS. O software que você implanta está excluído dos contratos de nível de serviço do AKS, garantia limitada e suporte do Azure. Ao usar tecnologia de código aberto junto com o AKS, consulte as opções de suporte disponíveis nas comunidades e mantenedores de projetos respectivos para desenvolver um plano.
A Microsoft assume a responsabilidade por criar os pacotes de código aberto que implantamos no AKS. Essa responsabilidade inclui ter propriedade completa do processo de criação, verificação, sinalização, validação e hotfix, junto com o controle sobre os binários em imagens de contêiner. Para obter mais informações, confira Gerenciamento de vulnerabilidades para o AKS e Cobertura de suporte do AKS.
Pré-requisitos
- Infraestrutura implantada seguindo Implantar infraestrutura para Ray e Kueue no AKS.
- Namespace e conta de serviço criados após Configurar filas do Kueue para cargas de trabalho do Ray no AKS.
- O ajuste fino do Aurora foi concluído após Ajustar o modelo meteorológico Aurora com o Ray no AKS — o ponto de verificação LoRA deve existir em
aurora/checkpoints/<run-id>/last.safetensorsno armazenamento de blobs. -
envsubstinstalado (pacotegettextno Linux,brew install gettextno macOS).
Definir variáveis de ambiente
Navegue até o 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
Observação
AURORA_RUN_ID é o JOB_NAME da sua execução de ajuste fino do Aurora concluída. Você pode encontrá-lo com:
az storage blob list -c aurora --prefix checkpoints/ \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Implantar o serviço
Implante o RayService:
./submit-service.sh
O script cria um ConfigMap a partir do código da aplicação de serving, renderiza o manifesto do RayService por meio de envsubst e o aplica. O operador KubeRay cria o cluster Ray e implanta o aplicativo Serve.
Tip
Execute ./submit-service.sh --dry-run para validar o manifesto renderizado sem aplicá-lo ao cluster.
Observação
RayService não é submetido ao controle de admissão pelo Kueue. As cargas de trabalho de serviço são de longa duração e precisam de recursos dedicados em vez de semântica de fila em lote.
Verificar a implantação
Aguarde até que o RayService reporte "Em execução":
kubectl -n ray get rayservice ${SERVICE_NAME} -w
Resultado esperado:
NAME SERVICE STATUS NUM SERVE ENDPOINTS
aurora-serve Running 1
Testar o ponto de extremidade
Encaminhe a porta do serviço e envie solicitações 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}
Resultado esperado:
{"status":"ok","gpu_name":"NVIDIA A100-SXM4-80GB","run_id":"<your-run-id>","adapter":"checkpoints/<your-run-id>/last.safetensors"}
Solicitação 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}'
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",
...
}
A resposta inclui estatísticas de resumo por variável (forma, média, min, max) para cada variável de superfície na previsão.
Referência de configuração
| Variable | Default | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(necessário) | Conta de armazenamento do Módulo 1 |
AURORA_RUN_ID |
(necessário) | JOB_NAME de uma execução concluída do aurora-finetune |
AURORA_INPUT_CONTAINER |
aurora |
Contêiner com dados de inicialização |
AURORA_ADAPTER_CONTAINER |
aurora |
Contêiner com o ponto de verificação LoRA |
AURORA_INIT_FILE |
init-2021-01-01-00z.npz |
Arquivo de inicialização padrão para solicitações |
AURORA_LEAD_HOURS |
6 |
Antecedência padrão da previsão (deve ser um múltiplo de 6 h) |
AURORA_LORA_RANK |
8 |
Rank do LoRA (deve corresponder ao usado no treinamento) |
AURORA_REQUIRE_GPU_NAME |
A100 |
Verificação do nome da GPU (deixe em branco para ignorar) |
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 do ConfigMap que contém o script de serviço |
Limpar os recursos
Exclua o RayService e seu ConfigMap:
kubectl -n ray delete rayservice ${SERVICE_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}