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.
Importante
Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Visualizações . Ver Gerir as pré-visualizações de Azure Databricks.
Esta página mostra-lhe como implementar modelos de linguagem (LLMs) personalizados no Model Serving usando um motor vLLM . Utilize este fluxo de trabalho para servir modelos finamente ajustados, variantes do PEFT, modelos multimodais e outros modelos de fundação que não estejam disponíveis nas APIs do Modelo Foundation (FMAPI). O caderno inicial no final desta página contém todo o código executável para os passos seguintes.
Quando usar serviço personalizado para LLM
O Azure Databricks recomenda o serviço de LLM personalizado quando tem um dos seguintes casos de uso:
- Modelos totalmente afinados com pesos personalizados que treinaste no Azure Databricks.
- Modelos da Hugging Face que não estão disponíveis em FMAPI.
- Receitas personalizadas de PEFT que o FMAPI não suporta.
- Modelos especializados fora do catálogo FMAPI, como o MedGemma.
- Modelos multimodais (visão-linguagem) como
Qwen/Qwen2.5-VL-3B-Instruct. - Qualquer modelo que caba numa 1xH100 (80 GB de memória GPU).
Requirements
O serviço personalizado de LLM está em Beta. Os administradores do espaço de trabalho podem ativar ou desativar esta funcionalidade a partir da página de Pré-visualizações . Ver Gerir as pré-visualizações de Azure Databricks.
Computação sem servidor com GPU. Uma GPU A10 é o ambiente de desenvolvimento recomendado para modelos mais pequenos, enquanto a H100 para modelos maiores.
MLflow 3.12 ou superior. Os pinos
mlflow==3.12.0do caderno inicial . Se criares o teu próprio ambiente, utiliza esta versão.
Passo 1: Configura o teu ambiente
Crie um caderno com computação GPU sem servidor com uma GPU A10. Instala o vLLM e as suas dependências. O notebook inicial fixa uma versão testada do vLLM.
Também pode especificar dependências num ambiente sem servidor em vez de usar %pip install.
Importante
Defina o seu diretório de trabalho para disco rígido local (por exemplo, usando tempfile.mkdtemp()). O sistema de ficheiros /Workspace não suporta ficheiros de grandes dimensões, como os pesos do modelo.
Passo 2: Descarregue o seu modelo
Descarregue os pesos dos modelos do Hugging Face com snapshot_download. O portátil inicial usa Qwen/Qwen3-4B como exemplo, mas pode substituir qualquer modelo que se ajuste ao orçamento de memória da GPU selecionada, incluindo o seguinte:
- Modelos multimodais, como
Qwen/Qwen2.5-VL-3B-Instructpara casos de uso em linguagem de visão. - Modelos maiores que cabem numa H100, como
openai/gpt-oss-120b.
Selecione uma GPU com base nas necessidades de memória e desempenho do seu modelo.
| GPU | Memória GPU | workload_type |
|---|---|---|
| T4 | 16 GB | GPU_SMALL |
| A100 | 80 GB | GPU_LARGE |
Passo 3: Testar o modelo localmente com vLLM
Antes de implementares, testa o modelo diretamente no teu portátil GPU serverless, lançando um servidor vLLM local. Testes locais permitem-lhe verificar o modelo, experimentar parâmetros de vLLM e resolver problemas antes de criar um endpoint de serviço.
Coisas importantes a saber:
- A computação de GPU serverless permite apenas as portas 3000–3999 para testes locais. Selecione uma porta nesse intervalo; o notebook inicial utiliza 3080.
- O servidor vLLM expõe uma API compatível com OpenAI em
/invocations. - Podes testar tanto pedidos normais como de streaming.
- Ajuste parâmetros como
--dtype,--max-model-len, e--gpu-memory-utilizationpara o seu modelo. - Adiciona
--enforce-eagerpara um arranque mais rápido, à custa de algum desempenho de inferência. - Para modelos maiores, use uma variante de GPU serverless H100 para testes locais.
Quando estiver satisfeito com a configuração, pare o servidor local antes de continuar.
Passo 4: Registar o modelo com um ponto de entrada personalizado
Esta etapa liga a sua configuração local ao Model Serving e tem os seguintes requisitos de configuração:
- O
taskdeve ser"llm/v1/chat". - O ponto de entrada deve abrir-se na porta 8080, a porta que a Model Serving espera.
- O comando de entrada tem de espelhar o que testaste no Passo 3, com a porta 8080 em vez da porta local.
- O ponto de entrada arranca a partir da pasta de artefactos do modelo MLflow, por isso os caminhos dos modelos são relativos a essa pasta.
metadata = {
"task": "llm/v1/chat",
"entrypoint": (
"python -u -m vllm.entrypoints.openai.api_server "
"--model qwen3 --served-model-name qwen "
"--host 0.0.0.0 --port 8080 "
"--dtype float16 --max-model-len 16384 "
"--gpu-memory-utilization 0.85"
),
}
Passo 5: Registar o modelo no Unity Catalog
Registe o modelo no Unity Catalog usando mlflow.register_model. A disponibilização de LLMs personalizados depende de implementações rápidas. Usa o env_pack="databricks_model_serving" parâmetro para o ativar.
Por exemplo, adicione o seguinte ao seu caderno:
model_version = mlflow.register_model(model_info.model_uri, UC_MODEL_NAME, env_pack="databricks_model_serving")
Passo 6: Criar um endpoint de serviço
Cria o endpoint a partir da interface ou programaticamente com o Azure Databricks SDK. As decisões-chave são o tipo de computação, o tamanho da carga de trabalho e o comportamento de escala para zero.
Selecione um workload_type com base no seu modelo e na nuvem:
workload_type |
GPU | Notes |
|---|---|---|
GPU_SMALL |
1x T4 (16 GB) | A opção mais pequena. |
GPU_LARGE |
1x A100 (80 GB) | Recomendado para grandes cargas de trabalho em LLMs. |
workload_size (Small, Medium, ou Large) controla o número de réplicas provisionadas atrás do ponto final. Utilize Small para desenvolvimento e cargas de trabalho com pouco tráfego.
O exemplo seguinte mostra uma configuração típica:
ServedEntityInput(
entity_name="main.<catalog>.<model_name>",
entity_version="<version>",
workload_type=ServingModelWorkloadType.GPU_MEDIUM,
workload_size="Small",
scale_to_zero_enabled=True,
)
Redução para zero e planeamento da capacidade
Um LLM personalizado que serve em Beta fornece um número fixo de réplicas atrás do seu endpoint.
O dimensionamento automático para mais de zero réplicas ainda não é suportado, por isso tem de dimensionar workload_type e workload_size para o seu tráfego de pico. O endpoint coloca em fila pedidos que excedam a capacidade das réplicas provisionadas.
Defina scale_to_zero_enabled=True para permitir que o endpoint reduza para zero réplicas quando estiver ocioso. Os arranques a frio são lentos — carregar os pesos do modelo e iniciar o vLLM normalmente demora de um a vários minutos.
Para cargas de trabalho sensíveis à latência ou críticas para a produção, defina scale_to_zero_enabled=False e dimensione workload_size para o seu pico de tráfego à partida.
Advertência
A capacidade de ampliação não é garantida. Sempre que o Azure Databricks precisa de adquirir uma nova GPU para o seu endpoint — na criação, no workload_size aumento ou quando um endpoint desperta do zero — o pedido pode deixar de responder se o fornecedor de cloud não tiver capacidade de GPU na sua região. Isto aplica-se a todos os tipos de GPUs. O Databricks mitiga isto com pools quentes e pré-reserva, que mantêm a capacidade da GPU disponível e pronta.
Passo 7: Consulte o seu endpoint
Depois de o endpoint estar pronto, ele aparece automaticamente no AI Playground a partir da página do endpoint. Também pode consultá-lo programaticamente usando o SDK Databricks, o SDK OpenAI ou curl.
Databricks SDK
w.serving_endpoints.query(
name="<endpoint-name>",
messages=[ChatMessage(role=ChatMessageRole.USER, content="Hello")],
)
OpenAI SDK
client = OpenAI(
api_key=DATABRICKS_TOKEN,
base_url=f"{DATABRICKS_HOST}/serving-endpoints",
)
client.chat.completions.create(
model="<endpoint-name>",
messages=[{"role": "user", "content": "Hello"}],
)
curl
curl -X POST \
-u "token:$DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"Hello"}]}' \
https://<workspace-url>/serving-endpoints/<endpoint-name>/invocations
Monitorize o seu endpoint
A disponibilização personalizada de LLM utiliza a mesma infraestrutura de observabilidade que os endpoints padrão de disponibilização de modelos personalizados, mas com algumas funcionalidades adicionais específicas do vLLM descritas nas secções seguintes.
Registos em tempo real
O separador Logs da página do endpoint na interface de utilizador de Serving mostra stdout e stderr do teu processo vLLM em tempo real. Também pode abrir esta saída através da API de logs.
Registos e métricas persistentes
Quando a telemetria está ativada, tanto os logs como as métricas são mantidos para as tabelas Delta do Unity Catalog para retenção a longo prazo, consulta SQL e conformidade. Consulte Persistir modelo personalizado que serve dados ao Catálogo Unity para instruções completas de configuração, requisitos e esquemas de tabela.
Para LLM personalizados que servem especificamente:
-
Os registos:
stdoutestderrdo processo vLLM são capturados automaticamente. Não é necessário código de registo do lado da aplicação. -
Métricas: o Azure Databricks recolhe automaticamente métricas a partir do ponto de extremidade Prometheus
/metricsdo servidor vLLM e armazena-as de forma persistente juntamente com os registos. Por defeito, obtém latência por pedido, throughput, contagem de tokens, profundidade da fila e utilização do cache KV.
Consultar dados de telemetria
Durante a Beta, não existe interface para visualizar logs ou métricas. Consulta os dados persistentes diretamente no Unity Catalog usando SQL ou um caderno. Veja os esquemas métricos e logaristas documentados no modelo personalizado Persist que servem dados ao Unity Catalog.
O caderno seguinte mostra como analisar e visualizar as métricas vLLM persistentes:
Caderno de métricas de serviço personalizado para LLM
Bloco de notas de exemplo
Desenvolva e teste o modelo num notebook GPU sem servidor, depois registe e implemente a mesma configuração como um endpoint de serviço. O caderno seguinte contém o fluxo completo executável deste guia.
Notebook inicial para implementação de LLM personalizado
Limitações
As seguintes limitações aplicam-se durante a Beta.
- Não há escalabilidade automática entre réplicas. É suportado o escalonamento até zero.
- Apenas a tarefa de chat do LLM (
llm/v1/chat) é suportada, incluindo multimodal. - Sem otimização de rotas.
- Sem interface para visualizar logs ou métricas. Consulta telemetria diretamente no Unity Catalog.
Contacte a sua equipa de contas Azure Databricks para obter feedback ou perguntas.