Partilhar via


APIs de modelos fundamentais com taxa de transferência provisionada

Este artigo demonstra como desenvolver modelos usando APIs de Modelo Base com a capacidade de processamento provisionada. O Azure Databricks recomenda a taxa de transferência provisionada para cargas de trabalho em produção e oferece inferência otimizada para modelos de base com garantias de desempenho.

O que é taxa de transferência provisionada?

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 modelo que você aloca permite que você compre exatamente a taxa de transferência necessária para suportar de forma confiável seu aplicativo GenAI de produção.

Para uma lista de arquiteturas de modelos suportadas para endpoints de throughput provisionados, consulte Modelos de fundação suportados no Mosaic AI Model Serving.

Requerimentos

Consulte Requisitos.

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).

Para implantar um modelo de fundação:

  1. Navegue até system.ai no Catalog Explorer.
  2. Clique no nome do modelo a ser implantado.
  3. Na página do modelo, clique no botão Publicar este modelo.
  4. 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:

  1. Navegue até à interface de utilizador do Serving no seu espaço de trabalho.
  2. Selecione Criar endpoint de serviço.
  3. 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.
  4. No menu suspenso Até, podes configurar a velocidade máxima de tokens por segundo para o teu ponto de acesso.
    1. 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.

taxa de transferência provisionada

Crie o seu endpoint de throughput provisionado usando a API REST

Para implantar seu modelo no modo de taxa de transferência provisionada usando a API REST, você deve especificar min_provisioned_throughput e max_provisioned_throughput campos em sua solicitação. Se preferir Python, também pode criar um endpoint usando o SDK de Implementação do MLflow.

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 = {"Context-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))

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.