APIs de modelos de base com throughput provisionado sob demanda

Esta página demonstra como implantar modelos usando as APIs de modelos fundacionais com throughput provisionado sob demanda.

O que é o throughput provisionado sob demanda?

Ao criar um ponto de extremidade do serviço de modelo de taxa de transferência provisionada Azure Databricks, você aloca a capacidade de inferência dedicada para garantir uma taxa de transferência consistente para o modelo de base que você deseja disponibilizar. Os pontos de extremidade do Serviço de Modelo que atendem aos modelos de base podem ser provisionados em partes de unidades de modelo. O número de unidades de modelo que você aloca permite adquirir a quantidade exata de capacidade de processamento necessária para oferecer suporte confiável ao seu aplicativo de IA em produção.

A capacidade provisionada sob demanda não exige compromisso de permanência. Você paga pela capacidade que aloca e pode alterá-la ou removê-la a qualquer momento.

Para obter uma lista de arquiteturas de modelo com suporte para pontos de extremidade de taxa de transferência provisionadas, consulte Modelos de base com suporte no Serviço de Modelo.

Se você não precisar de capacidade dedicada, a Databricks recomenda pagamento por token com prioridade para APIs de modelos de base.

Requisitos

Confira os Requisitos

O Databricks recomenda o uso dos modelos de base pré-instalados no Catálogo do Unity. Você pode encontrar esses modelos no catálogo system no esquema ai (system.ai).

Observação

Se sua organização usa permissões do Catálogo do Unity para modelos de base para restringir o acesso aos modelos, os pontos finais da taxa de transferência provisionada para modelos não permitidos devem ser excluídos manualmente.

Para implantar um modelo de base:

  1. Navegue até system.ai no Gerenciador de Catálogos.
  2. Clique no nome do modelo a ser implantado.
  3. Na página do modelo, selecione o botão Servir este modelo.
  4. A página Criar ponto de extremidade de serviço é exibida. Confira Criar seu ponto de extremidade de taxa de transferência provisionada usando a interface do usuário.

Observação

Para implantar um modelo Meta Llama de system.ai no Catálogo do Unity, você deve escolher a versão de Instrução aplicável. Não há suporte para versões base dos modelos Meta Llama a partir de system.ai no Catálogo do Unity. Consulte Modelos de base hospedados no Databrick e as variantes de modelo Meta Llama compatíveis.

Criar seu ponto de extremidade de taxa de transferência provisionada usando a interface do usuário

Quando o modelo registrado já estiver no Catálogo do Unity, crie um ponto de extremidade de serviço de taxa de transferência provisionada executando as seguintes etapas:

  1. Navegue até a Interface do Usuário de Serviços no seu workspace.
  2. Clique em Criar um ponto de extremidade de serviço.
  3. No campo Entity, selecione seu modelo no Catálogo do Unity. Para modelos elegíveis, a interface do usuário da entidade servida mostra a tela Taxa de transferência provisionada.
  4. Na lista suspensa Até, você pode configurar o máximo de tokens por segundo da taxa de transferência para o ponto de extremidade.
    1. Os pontos de extremidade de taxa de transferência provisionada são dimensionados automaticamente de modo que você possa selecionar Modificar para ver o mínimo de tokens por segundo ao qual seu ponto de extremidade pode ser reduzido.

Taxa de transferência provisionada

Crie seu ponto de extremidade de taxa de transferência provisionada usando a API REST

A solicitação da API REST para criar um endpoint de throughput provisionado depende se o modelo de fundação mede a capacidade em bandas de throughput ou em unidades modelo. Para determinar qual medida se aplica ao seu modelo, consulte Unidades de modelo em taxa de transferência provisionada.

Se preferir Python, você também pode criar um ponto de extremidade usando o SDK de Implantação do MLflow.

O exemplo a seguir cria um endpoint para um modelo fundacional que usa faixas de taxa de transferência. Para esses modelos, você deve especificar os campos min_provisioned_throughput e max_provisioned_throughput na solicitação. Para identificar o intervalo adequado de taxa de transferência provisionada para o seu modelo, confira 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 a seguir cria um ponto final para um modelo de fundação que utiliza unidades modelo. Para esses modelos, você especifica o provisioned_model_units campo na sua solicitação e envia a requisição 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 chat

Para tarefas de conclusão de chat, você pode usar o parâmetro logprobs para fornecer a probabilidade logarítmica de um token ser amostrado como parte do processo de geração de grande modelo de linguagem. 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 de Conclusões de Chat para obter detalhes do parâmetro.

Obter taxa de transferência provisionada em incrementos

A taxa de transferência provisionada está disponível em incrementos de tokens por segundo, sendo que os incrementos específicos variam por modelo. Para identificar o intervalo adequado para suas necessidades, o Databricks recomenda usar a 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}

Veja a seguir um exemplo de resposta da API:

{
  "optimizable": true,
  "model_type": "llama",
  "throughput_chunk_size": 1580
}

Limitation

  • A implantação do modelo pode falhar devido a problemas de capacidade da GPU, resultando em um timeout durante a criação ou atualização do endpoint. Entre em contato com sua equipe de conta do Databricks para ajudar a resolver.