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.
Esta página demonstra como implementar modelos usando APIs de modelos fundacionais com capacidade aprovisionada a pedido.
O que é a capacidade de processamento provisionada a pedido?
Ao criar um modelo de largura de banda provisionada para um ponto de extremidade no Azure Databricks, você aloca capacidade de inferência dedicada para garantir uma largura de banda consistente para o modelo fundamental que deseja servir. Endpoints de serviço de modelos que servem modelos de base podem ser provisionados em partes de unidades de modelo. O número de unidades de modelo que aloca permite-lhe adquirir exatamente o throughput necessário para suportar de forma fiável a sua aplicação de IA de produção.
O throughput provisionado sob demanda não tem compromisso de prazo. Paga pela capacidade que aloca e pode alterá-la ou removê-la a qualquer momento.
Para uma lista de arquiteturas de modelos suportadas para endpoints de throughput provisionados, consulte Modelos de fundação suportados no Model Serving.
Se não necessitar de capacidade dedicada, a Databricks recomenda Priority pay-per-token para APIs de modelos fundacionais.
Requerimentos
Consulte Requisitos.
[Recomendado] Implantar modelos de base do Unity Catalog
O Databricks recomenda o uso dos modelos de base pré-instalados no Unity Catalog. Você pode encontrar esses modelos no catálogo system no esquema ai (system.ai).
Observação
Se a sua organização usar permissões do Catálogo Unity do modelo Foundation para restringir o acesso ao modelo, os endpoints de throughput provisionados para modelos não permitidos devem ser eliminados manualmente.
Para implantar um modelo de fundação:
- Navegue até
system.aino Catalog Explorer. - Clique no nome do modelo a ser implantado.
- Na página do modelo, clique no botão Publicar este modelo.
- A página Criar ponto de extremidade de serviço é exibida. Consulte a secção Crie o seu ponto de extremidade com taxa de transferência provisionada usando a UI.
Observação
Para implantar um modelo Meta Llama a partir de system.ai no Unity Catalog, você deve escolher a versão aplicável Instruir. As versões base dos modelos Meta Llama não são suportadas para implantação a partir de system.ai no Unity Catalog. Consulte Modelos Foundation hospedados em variantes de modelo Meta Llama suportadas pelo Databricks.
Crie o seu endpoint de throughput provisionado usando a UI
Depois de o modelo registado estar no Unity Catalog, crie um endpoint de serviço com largura de banda provisionada com as seguintes etapas:
- Navegue até à interface de utilizador do Serving no seu espaço de trabalho.
- Selecione Criar endpoint de serviço.
- No campo Entidade, selecione seu modelo no Catálogo Unity. Para modelos elegíveis, a interface da entidade servida mostra a tela de Taxa de Transferência Provisionada.
- No menu suspenso Até, podes configurar a velocidade máxima de tokens por segundo para o teu ponto de acesso.
- Os pontos de extremidade de taxa de transferência provisionados são dimensionados automaticamente, pelo que pode selecionar Modificar para ver o número mínimo de tokens por segundo a que o seu ponto de extremidade pode ser reduzido.
Crie o seu endpoint de throughput provisionado usando a API REST
O pedido da API REST para criar um endpoint de throughput provisionado depende de o modelo de fundação medir a capacidade em bandas de throughput ou em unidades do modelo. Para determinar qual a medida aplicável ao seu modelo, consulte Unidades do modelo no débito aprovisionado.
Se preferir Python, também pode criar um endpoint usando o SDK de Implementação do MLflow.
O exemplo seguinte cria um endpoint para um modelo de fundação que utiliza bandas de rendimento. Para estes modelos, deve especificar os campos min_provisioned_throughput e max_provisioned_throughput no seu pedido. Para identificar o intervalo adequado de taxa de transferência provisionada para o seu modelo, consulte Obter taxa de transferência provisionada em incrementos.
import requests
import json
# Set the name of the MLflow endpoint
endpoint_name = "prov-throughput-endpoint"
# Name of the registered MLflow model
model_name = "ml.llm-catalog.foundation-model"
# Get the latest version of the MLflow model
model_version = 3
# Get the API endpoint and token for the current notebook context
API_ROOT = "<YOUR-API-URL>"
API_TOKEN = "<YOUR-API-TOKEN>"
headers = {"Content-Type": "text/json", "Authorization": f"Bearer {API_TOKEN}"}
optimizable_info = requests.get(
url=f"{API_ROOT}/api/2.0/serving-endpoints/get-model-optimization-info/{model_name}/{model_version}",
headers=headers).json()
if 'optimizable' not in optimizable_info or not optimizable_info['optimizable']:
raise ValueError("Model is not eligible for provisioned throughput")
chunk_size = optimizable_info['throughput_chunk_size']
# Minimum desired provisioned throughput
min_provisioned_throughput = 2 * chunk_size
# Maximum desired provisioned throughput
max_provisioned_throughput = 3 * chunk_size
# Send the POST request to create the serving endpoint
data = {
"name": endpoint_name,
"config": {
"served_entities": [
{
"entity_name": model_name,
"entity_version": model_version,
"min_provisioned_throughput": min_provisioned_throughput,
"max_provisioned_throughput": max_provisioned_throughput,
}
]
},
}
response = requests.post(
url=f"{API_ROOT}/api/2.0/serving-endpoints", json=data, headers=headers
)
print(json.dumps(response.json(), indent=4))
O exemplo seguinte cria um ponto final para um modelo de fundação que utiliza unidades do modelo. Para estes modelos, especifica o provisioned_model_units campo no seu pedido e envia o pedido POST para o /api/2.0/serving-endpoints/pt endpoint.
import requests
import json
# Set the name of the provisioned throughput endpoint
endpoint_name = "prov-throughput-endpoint"
# Name of the foundation model
model_name = "system.ai.gpt-oss-120b"
# Get the latest version of the foundation model
model_version = 1
# Get the API endpoint and token for the current notebook context
API_ROOT = "<YOUR-API-URL>"
API_TOKEN = "<YOUR-API-TOKEN>"
headers = {"Content-Type": "text/json", "Authorization": f"Bearer {API_TOKEN}"}
optimizable_info = requests.get(
url=f"{API_ROOT}/api/2.0/serving-endpoints/get-model-optimization-info/{model_name}/{model_version}",
headers=headers).json()
if 'optimizable' not in optimizable_info or not optimizable_info['optimizable']:
raise ValueError("Model is not eligible for provisioned throughput")
chunk_size = optimizable_info['model_unit_chunk_size']
# Desired provisioned throughput
desired_model_units = 2 * chunk_size
# Send the POST request to create the serving endpoint
data = {
"name": endpoint_name,
"config": {
"served_entities": [
{
"entity_name": model_name,
"entity_version": model_version,
"provisioned_model_units": desired_model_units,
}
]
},
}
response = requests.post(
url=f"{API_ROOT}/api/2.0/serving-endpoints/pt", json=data, headers=headers
)
print(json.dumps(response.json(), indent=4))
Probabilidade logarítmica para tarefas de conclusão de bate-papo
Para tarefas de conclusão de chat, pode utilizar o parâmetro logprobs para fornecer a log probabilidade de um token ser amostrado como parte do processo de geração de modelo de linguagem de larga escala. Você pode usar logprobs para uma variedade de cenários, incluindo classificação, avaliação da incerteza do modelo e execução de métricas de avaliação. Consulte a API Chat Completions para detalhes dos parâmetros.
Obter largura de banda provisionada em incrementos
A capacidade provisionada está disponível em incrementos de tokens por segundo, com incrementos específicos a variar conforme o modelo. Para identificar o intervalo adequado às suas necessidades, a Databricks recomenda o uso da API de informações de otimização de modelo dentro da plataforma.
GET api/2.0/serving-endpoints/get-model-optimization-info/{registered_model_name}/{version}
Segue-se um exemplo de resposta da API:
{
"optimizable": true,
"model_type": "llama",
"throughput_chunk_size": 1580
}
Limitação
- A implantação do modelo pode falhar devido a problemas de capacidade da GPU, o que resulta em um timeout durante a criação ou atualização do endpoint. Entre em contacto com a sua equipa da conta Databricks para ajudar a resolver.