Pular para o conteúdo principal

Modelos externos no Mosaic AI Model Serving

info

Visualização

Essa funcionalidade está na Pré-visualização Pública e é suportada em us-east1 e us-central1.

important

Os exemplos de código neste artigo demonstram o uso do Public Preview MLflow Deployments CRUD API.

Este artigo descreve os modelos externos em Mosaic AI Model Serving, incluindo seus provedores de modelos compatíveis e suas limitações.

O que são modelos externos?

important

Agora o senhor pode configurar Mosaic AI Gateway no endpoint servindo modelo que serve modelos externos. AI O Gateway traz governança, monitoramento e prontidão de produção para esses endpoints do modelo servindo. Consulte a introdução do Mosaic AI Gateway.

Os modelos externos são modelos de terceiros hospedados fora da Databricks. Com o suporte da servindo modelo, os modelos externos permitem que o senhor simplifique o uso e o gerenciamento de vários provedores de modelos de idiomas grandes (LLM), como OpenAI e Anthropic, dentro de uma organização. O senhor também pode usar o Mosaic AI Model Serving como provedor para atender a modelos personalizados, o que oferece limites de taxa para esses endpoints. Como parte desse suporte, a servindo modelo oferece uma interface de alto nível que simplifica a interação com esses serviços, fornecendo um endpoint unificado para lidar com solicitações específicas relacionadas ao LLM.

Além disso, o suporte da Databricks para modelos externos oferece gerenciamento centralizado de credenciais. Ao armazenar a chave API em um local seguro, as organizações podem aprimorar sua postura de segurança, minimizando a exposição da chave API sensível em todo o sistema. Isso também ajuda a evitar a exposição dessas chaves no código ou a exigir que os usuários finais gerenciem as chaves com segurança.

Consulte o tutorial: Create external model endpoint to query OpenAI models para obter orientações passo a passo sobre a criação de modelos externos endpoint e a consulta de modelos compatíveis atendidos por esses endpoints usando o MLflow Deployments SDK. Consulte o guia a seguir para obter instruções sobre como usar a Serving UI e o site REST API:

Requisitos

Fornecedores de modelos

Os modelos externos no servindo modelo são projetados para suportar uma variedade de provedores de modelos. Um provedor representa a fonte do modelo de aprendizado de máquina, como OpenAI, Anthropic e assim por diante. Cada provedor tem suas características e configurações específicas que são encapsuladas no campo external_model da configuração do endpoint do modelo externo.

Os seguintes provedores são suportados:

  • openai : Para os modelos oferecidos pela OpenAI e as integrações do Azure para Azure OpenAI e Azure OpenAI com AAD.
  • anthropic : Para modelos oferecidos pela Anthropic.
  • cohere : Para modelos oferecidos pela Cohere.
  • Amazon-bedrock : Para modelos oferecidos pela Amazon Bedrock.
  • google-cloud-vertex-AI : Para modelos oferecidos pelo Google Cloud Vertex AI.
  • databricks-servindo modelo : Para o endpoint Mosaic AI Model Serving com esquemas compatíveis. Consulte Configuração do endpoint.
  • personalizado : Para provedores ou modelos alternativos por trás de proxies personalizados que são compatíveis com a API da OpenAI, mas não são diretamente compatíveis com a Databricks.

Para solicitar suporte para um provedor não listado aqui, tente usar a opção de provedor personalizado ou entre em contato com a equipe Databricks account .

Modelos compatíveis

O modelo que o senhor escolhe afeta diretamente os resultados das respostas que obtém das chamadas de API. Portanto, escolha um modelo que atenda aos requisitos do seu caso de uso. Por exemplo, para gerar respostas conversacionais, você pode escolher um modelo de bate-papo. Por outro lado, para gerar incorporações de texto, você pode escolher um modelo de incorporação.

Veja os modelos compatíveis.

Use modelos servidos no endpoint Mosaic AI Model Serving

Mosaic AI Model Serving como provedor é compatível com os llm/v1/completions llm/v1/chat llm/v1/embeddings endpoint tipos, e. Esses pontos de extremidade devem aceitar os parâmetros de consulta padrão marcados como obrigatórios, enquanto outros parâmetros podem ser ignorados, dependendo do fato de o site Mosaic AI Model Serving endpoint ser ou não compatível com eles.

Consulte POST /serving-endpoint/{name}/invocations na referência API para obter os parâmetros de consulta padrão.

Esses endpoints devem produzir respostas no seguinte formato OpenAI.

Para tarefas de conclusão:

Python
{
"id": "123", # Not Required
"model": "test_databricks_model",
"choices": [
{
"text": "Hello World!",
"index": 0,
"logprobs": null, # Not Required
"finish_reason": "length" # Not Required
}
],
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}

Para o chat tarefa:

Python
{
"id": "123", # Not Required
"model": "test_chat_model",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "\n\nHello there, how may I assist you today?",
},
"finish_reason": "stop"
},
{
"index": 1,
"message": {
"role": "human",
"content": "\n\nWhat is the weather in San Francisco?",
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}

Para tarefas de incorporação:

Python
{
"data": [
{
"embedding": [
1.0023064255,
-0.009327292,
.... # (1536 floats total for ada-002)
-0.0028842222,
],
"index": 0
},
{
"embedding": [
1.0023064255,
-0.009327292,
.... #(1536 floats total for ada-002)
-0.0028842222,
],
"index": 0
}
],
"model": "test_embedding_model",
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}

Configuração do endpoint

Para servir e consultar modelos externos, o senhor precisa configurar um endpoint de serviço. Consulte Criar um modelo de serviço externo endpoint

Para um modelo de serviço externo endpoint, é necessário incluir o campo external_model e seus parâmetros na seção served_entities da configuração endpoint. Se o senhor configurar vários modelos externos em um endpoint de serviço, deverá fornecer um traffic_config para definir a porcentagem de roteamento de tráfego para cada modelo externo.

O campo external_model define o modelo para o qual esse endpoint encaminha as solicitações. Ao especificar um modelo, é fundamental que o provedor ofereça suporte ao modelo que você está solicitando. Por exemplo, openai como provedor oferece suporte a modelos como text-embedding-ada-002, mas outros provedores podem não. Se o modelo não for compatível com o provedor, o Databricks retornará um erro HTTP 4xx ao tentar rotear solicitações para esse modelo.

A tabela abaixo resume os parâmetros do campo external_model. Consulte POST /api/2.0/serving-endpoint para os parâmetros de configuração do endpoint.

Parâmetro

Descrições

name

O nome do modelo a ser usado. Por exemplo, gpt-3.5-turbo para o modelo GPT-3.5-Turbo da OpenAI. Isso é passado como parte do corpo da solicitação com o correspondente key: "model".

provider

Especifica o nome do provedor desse modelo. Esse valor de cadeia de caracteres deve corresponder a um provedor de modelo externo compatível. Por exemplo, openai para os modelos GPT-3.5 da OpenAI.

task

A tarefa corresponde ao tipo de interação do modelo de linguagem que o senhor deseja. As tarefas compatíveis são "llm/v1/completions", "llm/v1/chat", "llm/v1/embeddings".

<provider>_config

Contém todos os detalhes adicionais de configuração necessários para o modelo. Isso inclui a especificação do URL de base API e do API key. Consulte Configurar o provedor para um endpoint. Se você estiver usando o provedor custom, especifique esse parâmetro como custom_provider_config.

A seguir, um exemplo de criação de um endpoint de modelo externo usando a API create_endpoint(). Neste exemplo, uma solicitação enviada ao endpoint de conclusão é encaminhada para o modelo claude-2 fornecido por anthropic.

Python
import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

client.create_endpoint(
name="anthropic-completions-endpoint",
config={
"served_entities": [
{
"name": "test",
"external_model": {
"name": "claude-2",
"provider": "anthropic",
"task": "llm/v1/completions",
"anthropic_config": {
"anthropic_api_key": "{{secrets/my_anthropic_secret_scope/anthropic_api_key}}"
}
}
}
]
}
)

Configurar o provedor para um endpoint

Ao criar um endpoint, o senhor deve fornecer as configurações necessárias para o provedor de modelo especificado. As seções a seguir resumem os parâmetros de configuração de endpoint disponíveis para cada provedor de modelo.

nota

A Databricks criptografa e armazena com segurança as credenciais fornecidas para cada provedor de modelo. Essas credenciais são excluídas automaticamente quando o endpoint associado é excluído.

Inteligência artificial aberta

Parâmetro de configuração

Descrição

Obrigatório

Padrão

openai_api_key

A referência Databricks chave secreta para um OpenAI API key usando o serviço OpenAI. Se o senhor preferir colar seu API key diretamente, consulte openai_api_key_plaintext.

O senhor deve fornecer um API key usando um dos seguintes campos: openai_api_key ou openai_api_key_plaintext.

openai_api_key_plaintext

O OpenAI API key usando o serviço OpenAI fornecido como uma string de texto simples. Se o senhor preferir fazer referência ao seu key usando Databricks Secrets, consulte openai_api_key.

O senhor deve fornecer um API key usando um dos seguintes campos: openai_api_key ou openai_api_key_plaintext devem ser fornecidos.

openai_api_type

Um campo opcional para especificar o tipo de API OpenAI a ser usado.

Não

openai

openai_api_base

O URL de base para a API do OpenAI.

Não

https://api.openai.com/v1

openai_api_version

Um campo opcional para especificar a versão da API do OpenAI.

Não

openai_organization

Um campo opcional para especificar a organização no OpenAI.

Não

Cohere

Parâmetro de configuração

Descrição

Obrigatório

Padrão

cohere_api_key

A referência Databricks chave secreta para um Cohere API key. Se o senhor preferir colar seu API key diretamente, consulte cohere_api_key_plaintext.

O senhor deve fornecer um API key usando um dos seguintes campos: cohere_api_key ou cohere_api_key_plaintext.

cohere_api_key_plaintext

O Cohere API key é fornecido como uma cadeia de caracteres de texto simples. Se o senhor preferir fazer referência ao seu key usando Databricks Secrets, consulte cohere_api_key.

O senhor deve fornecer um API key usando um dos seguintes campos: cohere_api_key ou cohere_api_key_plaintext.

cohere_api_base

O URL de base do serviço Cohere.

Não

Anthropic

Parâmetro de configuração

Descrição

Obrigatório

Padrão

anthropic_api_key

A referência Databricks chave secreta para um Anthropic API key. Se o senhor preferir colar seu API key diretamente, consulte anthropic_api_key_plaintext.

O senhor deve fornecer um API key usando um dos seguintes campos: anthropic_api_key ou anthropic_api_key_plaintext.

anthropic_api_key_plaintext

O Anthropic API key é fornecido como uma cadeia de caracteres de texto simples. Se o senhor preferir fazer referência ao seu key usando Databricks Secrets, consulte anthropic_api_key.

O senhor deve fornecer um API key usando um dos seguintes campos: anthropic_api_key ou anthropic_api_key_plaintext.

Azure OpenAI

Azure O OpenAI tem um recurso distinto em comparação com o serviço direto do OpenAI. Para obter uma visão geral, consulte a documentação de comparação.

Parâmetro de configuração

Descrição

Obrigatório

Padrão

openai_api_key

A referência Databricks chave secreta para uma OpenAI API key usando o serviço Azure. Se o senhor preferir colar seu API key diretamente, consulte openai_api_key_plaintext.

O senhor deve fornecer um API key usando um dos seguintes campos: openai_api_key ou openai_api_key_plaintext.

openai_api_key_plaintext

O OpenAI API key usando o serviço Azure fornecido como uma cadeia de caracteres de texto simples. Se o senhor preferir fazer referência ao seu key usando Databricks Secrets, consulte openai_api_key.

O senhor deve fornecer um API key usando um dos seguintes campos: openai_api_key ou openai_api_key_plaintext.

openai_api_type

Use azure para validação de tokens de acesso.

Sim

openai_api_base

A URL de base para o serviço de API do Azure OpenAI fornecido pelo Azure.

Sim

openai_api_version

A versão do serviço Azure OpenAI a ser utilizada, especificada por uma data.

Sim

openai_deployment_name

O nome do recurso de implantação do serviço Azure OpenAI.

Sim

openai_organization

Um campo opcional para especificar a organização no OpenAI.

Não

Se estiver usando o Azure OpenAI com o Microsoft Entra ID, use os seguintes parâmetros na configuração do endpoint. Databricks passa https://cognitiveservices.azure.com/ como o escopo default para os tokens de ID Entra Microsoft.

Parâmetro de configuração

Descrição

Obrigatório

Padrão

microsoft_entra_tenant_id

A ID tenant para autenticação Microsoft Entra ID.

Sim

microsoft_entra_client_id

O ID do cliente para autenticação do Microsoft Entra ID.

Sim

microsoft_entra_client_secret

A referência da chave secreta do Databricks para um segredo de cliente usado para autenticação do Microsoft Entra ID. Se você preferir colar o segredo do seu cliente diretamente, consulte microsoft_entra_client_secret_plaintext.

O senhor deve fornecer um API key usando um dos seguintes campos: microsoft_entra_client_secret ou microsoft_entra_client_secret_plaintext.

microsoft_entra_client_secret_plaintext

O segredo do cliente usado para a autenticação do Microsoft Entra ID é fornecido como uma cadeia de caracteres de texto simples. Se o senhor preferir fazer referência ao seu key usando Databricks Secrets, consulte microsoft_entra_client_secret.

O senhor deve fornecer um API key usando um dos seguintes campos: microsoft_entra_client_secret ou microsoft_entra_client_secret_plaintext.

openai_api_type

Use azuread para autenticação usando o Microsoft Entra ID.

Sim

openai_api_base

A URL de base para o serviço de API do Azure OpenAI fornecido pelo Azure.

Sim

openai_api_version

A versão do serviço Azure OpenAI a ser utilizada, especificada por uma data.

Sim

openai_deployment_name

O nome do recurso de implantação do serviço Azure OpenAI.

Sim

openai_organization

Um campo opcional para especificar a organização no OpenAI.

Não

O exemplo a seguir demonstra como criar um endpoint com o Azure OpenAI:

Python
client.create_endpoint(
name="openai-chat-endpoint",
config={
"served_entities": [{
"external_model": {
"name": "gpt-3.5-turbo",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_type": "azure",
"openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}",
"openai_api_base": "https://my-azure-openai-endpoint.openai.azure.com",
"openai_deployment_name": "my-gpt-35-turbo-deployment",
"openai_api_version": "2023-05-15"
}
}
}]
}
)

Google Cloud Vertex AI

Parâmetro de configuração

Descrição

Obrigatório

Padrão

private_key

A referência Databricks chave secreta para um key privado para o serviço account que tem acesso ao serviço Google Cloud Vertex AI. Consulte Práticas recomendadas para gerenciar o serviço account key. Se o senhor preferir colar seu API key diretamente, consulte private_key_plaintext.

O senhor deve fornecer um API key usando um dos seguintes campos: private_key ou private_key_plaintext.

private_key_plaintext

O key privado para o serviço account que tem acesso ao serviço Google Cloud Vertex AI fornecido como um segredo de texto simples. Consulte Práticas recomendadas para gerenciar o serviço account key. Se o senhor preferir fazer referência ao seu key usando Databricks Secrets, consulte private_key.

O senhor deve fornecer um API key usando um dos seguintes campos: private_key ou private_key_plaintext.

region

Esta é a região do serviço Google Cloud Vertex AI. Consulte as regiões suportadas para obter mais detalhes. Alguns modelos só estão disponíveis em regiões específicas.

Sim

project_id

Esse é o ID do projeto do Google Cloud ao qual o serviço account está associado.

Sim

Amazon Bedrock

Para usar Amazon Bedrock como um provedor de modelo externo, os clientes precisam garantir que o Bedrock esteja ativado na região AWS especificada e que o par AWS key especificado tenha as permissões adequadas para interagir com o serviço Bedrock. Para obter mais informações, consulte AWS Identity and Access Management.

Se houver problemas de permissão do AWS, a Databricks recomenda que o senhor verifique as credenciais diretamente com a API do Amazon Bedrock.

AI21 Labs

Parâmetro de configuração

Descrição

Obrigatório

Padrão

ai21labs_api_key

A referência Databricks chave secreta para um AI21 Labs API key. Se o senhor preferir colar seu API key diretamente, consulte ai21labs_api_key_plaintext.

O senhor deve fornecer um API key usando um dos seguintes campos: ai21labs_api_key ou ai21labs_api_key_plaintext.

ai21labs_api_key_plaintext

Um AI21 Labs API key fornecido como uma cadeia de caracteres de texto simples. Se o senhor preferir fazer referência ao seu key usando Databricks Secrets, consulte ai21labs_api_key.

O senhor deve fornecer um API key usando um dos seguintes campos: ai21labs_api_key ou ai21labs_api_key_plaintext.

Provedor personalizado

Parâmetro de configuração

Descrição

Obrigatório

Padrão

custom_provider_url

O URL de onde reside o modelo do provedor personalizado.

Sim

bearer_token_auth

Se o provedor personalizado utilizar autenticação de tokens de portador, especifique os campos obrigatórios.

Você deve fornecer um método de autenticação usando um dos seguintes campos: bearer_token_auth ou api_key_auth.

token

A referência de segredo de chave Databricks para os tokens de autenticação de portador. Esse parâmetro deve estar aninhado em bearer_token_auth. Se o senhor preferir colar seu API key diretamente, consulte token_plaintext.

Se estiver usando a autenticação de portador, o senhor deve fornecer um API key usando um dos seguintes campos: token ou token_plaintext.

token_plaintext

Os tokens para autenticação do portador são fornecidos como cadeias de texto simples. Esse parâmetro deve estar aninhado em bearer_token_auth. Se o senhor preferir fazer referência ao seu key usando os segredos do Databricks, consulte token.

Se estiver usando a autenticação de portador, o senhor deve fornecer um API key usando um dos seguintes campos: token ou token_plaintext.

api_key_auth

Se o provedor personalizado utilizar a autenticação API key , especifique os campos obrigatórios.

Você deve fornecer um método de autenticação usando um dos seguintes campos: bearer_token_auth ou api_key_auth.

key

O key para autenticação API key . Esse parâmetro deve estar aninhado em api_key_auth

Sim, ao usar a autenticação API key .

value

O Databricks chave secreta referência para o valor da autenticação API key . Se o senhor preferir colar seu API key diretamente, consulte value_plaintext.

Se estiver usando a autenticação API key , o senhor deverá fornecer um API key usando um dos seguintes campos: value ou value_plaintext.

value_plaintext

O valor da autenticação API key é fornecido como uma cadeia de caracteres de texto simples. Se o senhor preferir fazer referência ao seu key usando os segredos do Databricks, consulte value.

Se estiver usando a autenticação API key , o senhor deverá fornecer um API key usando um dos seguintes campos: value ou value_plaintext.

O exemplo a seguir demonstra como criar um endpoint com um provedor personalizado usando a autenticação de portador :

Python
client.create_endpoint(
name="custom-provider-completions-endpoint",
config={
"served_entities": [
{
"external_model": {
"name": "custom-provider-model",
"provider": "custom",
"task": "llm/v1/chat",
"custom_provider_config": {
"custom_provider_url": "https://my-custom-provider.com",
"bearer_token_auth": {
"token": "{{secrets/my_custom_provider_secret_scope/custom_provider_token}}"
}
}
}
}
]
},
)

O exemplo a seguir demonstra como criar um endpoint com um provedor personalizado usando a autenticaçãoAPI key :

Python
client.create_endpoint(
name="custom-provider-completions-endpoint",
config={
"served_entities": [
{
"external_model": {
"name": "custom-provider-model",
"provider": "custom",
"task": "llm/v1/chat",
"custom_provider_config": {
"custom_provider_url": "https://my-custom-provider.com",
"api_key_auth": {
"key": "X-API-KEY",
"value": "{{secrets/my_custom_provider_secret_scope/custom_provider_api_key}}"
}
}
}
}
]
},
)

Configurar o AI Gateway em um endpoint

O senhor também pode configurar o site endpoint para habilitar Mosaic AI Gateway recursos, como limitação de taxa, acompanhamento de uso e registro.

Consulte Configure AI Gateway on servindo modelo endpoint.

Consultar um endpoint de modelo externo

Depois de criar um endpoint de modelo externo, ele estará pronto para receber tráfego dos usuários.

O senhor pode enviar solicitações de pontuação para o endpoint usando o cliente OpenAI, a API REST ou o SDK do MLflow Deployments.

O exemplo a seguir consulta o modelo de conclusões do claude-2 hospedado pelo Anthropic usando o cliente OpenAI. Para usar o cliente OpenAI, preencha o campo model com o nome do modelo de serviço endpoint que hospeda o modelo que o senhor deseja consultar.

Este exemplo usa um endpoint, anthropic-completions-endpoint, criado anteriormente, configurado para acessar modelos externos do provedor de modelos Anthropic. Veja como criar um endpoint de modelo externo.

Consulte Modelos compatíveis para ver modelos adicionais que você pode consultar e seus fornecedores.

Python
import os
import openai
from openai import OpenAI

client = OpenAI(
api_key="dapi-your-databricks-token",
base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

completion = client.completions.create(
model="anthropic-completions-endpoint",
prompt="what is databricks",
temperature=1.0
)
print(completion)

Formato de resposta de saída esperado:

Python
{
"id": "123", # Not Required
"model": "anthropic-completions-endpoint",
"choices": [
{
"text": "Hello World!",
"index": 0,
"logprobs": null, # Not Required
"finish_reason": "length" # Not Required
}
],
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}

Parâmetros de consulta adicionais

O senhor pode passar quaisquer parâmetros adicionais suportados pelo provedor do endpoint como parte de sua consulta.

Por exemplo:

  • logit_bias (com o apoio da OpenAI, Cohere).
  • top_k (apoiado por Anthropic, Cohere).
  • frequency_penalty (com o apoio da OpenAI, Cohere).
  • presence_penalty (com o apoio da OpenAI, Cohere).
  • stream (apoiado por OpenAI, Anthropic, Cohere, Amazon Bedrock for Anthropic). Isso só está disponível para solicitações de bate-papo e preenchimento.

Limitações

Dependendo do modelo externo escolhido, sua configuração pode fazer com que seus dados sejam processados fora da região de origem dos dados. Veja servindo modelo limites e regiões.

Recurso adicional