Modelos externos no Mosaic AI Model Serving
Importante
Os exemplos de código nestes artigos demonstram o uso da API CRUD de implantações do MLflow de visualização pública .
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?
Importante
Agora, o senhor pode configurar o Mosaic AI Gateway no endpoint de modelo de serviço que atende a modelos externos. O IA Gateway traz governança, monitoramento e prontidão de produção para esses endpoints de modelo de serviço. Consulte 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 do Databricks para modelos externos fornece gerenciamento centralizado de credenciais. Ao armazenar key de API em um local seguro, as organizações podem aprimorar sua postura de segurança, minimizando a exposição de key de API confidenciais em todo o sistema. Também ajuda a evitar a exposição dessas key no código ou a exigência de que os usuários finais gerenciem key 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
API key ou campos de autenticação para o provedor de modelo.
Databricks workspace em regiões suportadas por modelos externos.
Provedores de modelos
Os modelos externos no modelo de atividade são projetados para oferecer suporte a 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 modelos oferecidos pela OpenAI e pelas integrações do Azure para Azure OpenAI e Azure OpenAI com AAD.
antrópico: Para modelos oferecidos pela Anthropic.
cohere: Para modelos oferecidos pela Cohere.
Amazon-bedrock: Para modelos oferecidos por Amazon Bedrock.
google-cloud-vertex-IA: Para modelos oferecidos pelo Google cloud Vertex IA.
databricks-servindo modelo: Para o endpoint Mosaic AI Model Serving com esquemas compatíveis. Consulte Configuração do endpoint.
Para solicitar suporte para um provedor não listado aqui, entre em contato com sua equipe account do Databricks.
Modelos suportados
O modelo escolhido afeta diretamente os resultados das respostas obtidas nas 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 chat. Por outro lado, para gerar incorporações de texto, você pode escolher um modelo de incorporação.
A tabela abaixo apresenta uma lista não exaustiva de modelos suportados e tipos de endpoint correspondentes. As associações de modelos listadas abaixo podem ser usadas como um guia útil ao configurar um endpoint para qualquer tipo de modelo recém-lançado à medida que se tornam disponíveis em um determinado provedor. Os clientes são responsáveis por garantir compliance com os modelos de licença aplicáveis.
Observação
Com o rápido desenvolvimento dos LLMs, não há garantia de que esta lista esteja sempre atualizada.
Modelo de provedor |
llm/v1/conclusões |
llm/v1/chat |
llm/v1/embeddings |
---|---|---|---|
OpenAI** |
|
|
|
Azure OpenAI** |
|
|
|
Antrópico |
|
|
|
Cohere** |
|
|
|
Mosaic AI Model Serving |
Databricks servindo endpoint |
Databricks servindo endpoint |
Databricks servindo endpoint |
Amazon Bedrock |
Anthropic:
Cohere:
AI21 Labs:
|
Anthropic:
Cohere:
|
Amazon:
Cohere:
|
AI21 Labs† |
|
||
Google cloud Vertex IA |
texto-bisão |
|
Textembedding-gecko |
**
O provedor de modelos oferece suporte a modelos de conclusão e bate-papo com ajuste fino. Para consultar um modelo de ajuste fino, preencha o campo name
da configuração external model
com o nome do modelo de ajuste fino.
† O provedor de modelos oferece suporte a modelos de conclusão personalizados.
Use modelos servidos no endpoint Mosaic AI Model Serving
Mosaic AI Model Serving como provedor é compatível com os tipos llm/v1/completions
, llm/v1/chat
e llm/v1/embeddings
endpoint. 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 da API para obter parâmetros de consulta padrão.
Esses endpoint devem produzir respostas no seguinte formato OpenAI.
Para tarefas de conclusão:
{
"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 tarefa de bate-papo:
{
"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 tarefa de incorporações:
{
"data": [
{
"embedding": [
0.0023064255,
-0.009327292,
.... # (1536 floats total for ada-002)
-0.0028842222,
],
"index": 0
},
{
"embedding": [
0.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 de 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 atendimento, 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 solicitações. Ao especificar um modelo, é fundamental que o fornecedor suporte o modelo que você está solicitando. Por exemplo, openai
como provedor oferece suporte a modelos como text-embedding-ada-002
, mas outros provedores talvez não. Se o modelo não for suportado pelo fornecedor, o Databricks devolve um erro HTTP 4xx ao tentar encaminhar pedidos para esse modelo.
A tabela abaixo resume os parâmetros do campo external_model
. Consulte POSTendpoint para parâmetros de configuração endpoint .
Parâmetro |
Descrições |
---|---|
|
O nome do modelo a ser usado. Por exemplo, |
|
Especifica o nome do provedor para este modelo. Este valor strings deve corresponder a um provedor de modelo externo compatível. Por exemplo, |
|
A tarefa corresponde ao tipo de interação do modelo de linguagem que você deseja. As tarefas suportadas são “llm/v1/completions”, “llm/v1/chat”, “llm/v1/embeddings”. |
|
Contém quaisquer detalhes de configuração adicionais necessários para o modelo. Isso inclui a especificação do URL base da API e da key da API. Consulte Configurar o provedor para um endpoint. |
Veja 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
.
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, você 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.
Observação
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.
OpenAI
Parâmetro de configuração |
Descrição |
Obrigatório |
Padrão |
---|---|---|---|
|
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 |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
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 |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
Um campo opcional para especificar o tipo de API OpenAI a ser usada. |
Não |
|
|
O URL base da API OpenAI. |
Não |
|
|
Um campo opcional para especificar a versão da API OpenAI. |
Não |
|
|
Um campo opcional para especificar a organização no OpenAI. |
Não |
Coerente
Parâmetro de configuração |
Descrição |
Obrigatório |
Padrão |
---|---|---|---|
|
A referência Databricks chave secreta para um Cohere API key. Se o senhor preferir colar seu API key diretamente, consulte |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
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 |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
O URL de base do serviço Cohere. |
Não |
Antrópico
Parâmetro de configuração |
Descrição |
Obrigatório |
Padrão |
---|---|---|---|
|
A referência Databricks chave secreta para um Anthropic API key. Se o senhor preferir colar seu API key diretamente, consulte |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
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 |
O senhor deve fornecer um API key usando um dos seguintes campos: |
Azure Open AI
Azure OpenAI possui recurso distinto em comparação com o serviço OpenAI direto. Para uma visão geral, consulte a documentação de comparação.
Parâmetro de configuração |
Descrição |
Obrigatório |
Padrão |
---|---|---|---|
|
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 |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
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 |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
Use |
Sim |
|
|
A URL base do serviço API Azure OpenAI fornecido pelo Azure. |
Sim |
|
|
A versão do serviço Azure OpenAI a utilizar, especificada por uma data. |
Sim |
|
|
O nome do recurso de implantação do serviço Azure OpenAI. |
Sim |
|
|
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.
Parâmetro de configuração |
Descrição |
Obrigatório |
Padrão |
---|---|---|---|
|
A ID tenant para autenticação Microsoft Entra ID. |
Sim |
|
|
O ID do cliente para autenticação do Microsoft Entra ID. |
Sim |
|
|
A referência da chave secreta do Databricks para um segredo de cliente usado para autenticação do Microsoft Entra ID. Se o senhor preferir colar o segredo do cliente diretamente, consulte |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
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 |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
Use |
Sim |
|
|
A URL base do serviço API Azure OpenAI fornecido pelo Azure. |
Sim |
|
|
A versão do serviço Azure OpenAI a utilizar, especificada por uma data. |
Sim |
|
|
O nome do recurso de implantação do serviço Azure OpenAI. |
Sim |
|
|
Um campo opcional para especificar a organização no OpenAI. |
Não |
O exemplo a seguir demonstra como criar um endpoint com Azure OpenAI:
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 IA
Parâmetro de configuração |
Descrição |
Obrigatório |
Padrão |
---|---|---|---|
|
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 |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
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 |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
Esta é a região do serviço Google cloud Vertex IA. Consulte as regiões suportadas para obter mais detalhes. Alguns modelos estão disponíveis apenas em regiões específicas. |
Sim |
|
|
Esse é o ID do projeto do Google cloud ao qual o serviço account está associado. |
Sim |
Amazon Bedrock
Para usar o 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.
Parâmetro de configuração |
Descrição |
Obrigatório |
Padrão |
---|---|---|---|
|
A região da AWS a ser usada. Bedrock deve estar habilitado lá. |
Sim |
|
|
Amazon recurso Nome (ARN) do instance profile que a entidade atendida utiliza para acessar o AWS recurso. |
O senhor deve se autenticar usando um instance profile ou uma chave de acesso. Se o senhor preferir usar a chave de acesso, consulte |
|
|
A referência Databricks chave secreta para um acesso AWS key ID com permissões para interagir com o serviço Bedrock. Se o senhor preferir colar seu API key diretamente, consulte |
O senhor deve se autenticar usando um instance profile ou uma chave de acesso. Se o senhor optar por usar a chave de acesso, deverá fornecer um API key usando um dos seguintes campos: |
|
|
Um acesso AWS key ID com permissões para interagir com o serviço Bedrock fornecido como uma cadeia de texto simples. Se o senhor preferir fazer referência ao seu key usando Databricks Secrets, consulte |
O senhor deve se autenticar usando um instance profile ou uma chave de acesso. Se o senhor optar por usar a chave de acesso, deverá fornecer um API key usando um dos seguintes campos: |
|
|
A referência Databricks chave secreta para um acesso AWS secreto key emparelhado com o ID de acesso key, com permissões para interagir com o serviço Bedrock. Se o senhor preferir colar seu API key diretamente, consulte |
O senhor deve se autenticar usando um instance profile ou uma chave de acesso. Se o senhor optar por usar a chave de acesso, deverá fornecer um API key usando um dos seguintes campos: |
|
|
Um acesso secreto AWS key emparelhado com o ID de acesso key, com permissões para interagir com o serviço Bedrock fornecidas como strings de texto simples. Se o senhor preferir fazer referência ao seu key usando Databricks Secrets, consulte |
O senhor deve se autenticar usando um instance profile ou uma chave de acesso. Se o senhor optar por usar a chave de acesso, deverá fornecer um API key usando um dos seguintes campos: |
|
|
O provedor subjacente no Amazon Bedrock. Os valores suportados (sem distinção entre maiúsculas e minúsculas) incluem: Anthropic, Cohere, AI21Labs, Amazon |
Sim |
O exemplo a seguir demonstra como criar um endpoint com Amazon Bedrock usando um instance profile. Se o senhor preferir usar a chave de acesso, use aws_access_key_id
e aws_secret_access_key
.
client.create_endpoint(
name="bedrock-anthropic-completions-endpoint",
config={
"served_entities": [
{
"external_model": {
"name": "claude-v2",
"provider": "amazon-bedrock",
"task": "llm/v1/completions",
"amazon_bedrock_config": {
"aws_region": "<YOUR_AWS_REGION>",
"instance_profile_arn": "<YOUR_AWS_INSTANCE_PROFILE_ARN>", ## Remove if using access keys
# "aws_access_key_id": "{{secrets/my_amazon_bedrock_secret_scope/aws_access_key_id}}",
# "aws_secret_access_key": "{{secrets/my_amazon_bedrock_secret_scope/aws_secret_access_key}}",
"bedrock_provider": "anthropic",
},
}
}
]
},
)
Se houver problemas de permissão do AWS, a Databricks recomenda que o senhor verifique as credenciais diretamente com a API do Amazon Bedrock.
Laboratórios AI21
Parâmetro de configuração |
Descrição |
Obrigatório |
Padrão |
---|---|---|---|
|
A referência Databricks chave secreta para um AI21 Labs API key. Se o senhor preferir colar seu API key diretamente, consulte |
O senhor deve fornecer um API key usando um dos seguintes campos: |
|
|
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 |
O senhor deve fornecer um API key usando um dos seguintes campos: |
Configurar o IA Gateway em um endpoint
O senhor também pode configurar seu endpoint para ativar o recurso Mosaic AI Gateway, como limitação de taxa, acompanhamento de uso e guardrails.
Consulte Configurar o IA Gateway no endpoint do modelo de serviço.
Consultar um endpoint de modelo externo
Depois de criar um endpoint de modelo externo, ele estará pronto para receber tráfego de 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.
Consulte os parâmetros de consulta padrão para uma solicitação de pontuação em POST /serving-endpoint/{name}/invocations.
O exemplo a seguir consulta o modelo de conclusões claude-2
hospedado pelo Anthropic usando o cliente OpenAI. Para usar o cliente OpenAI, preencha o campo model
com o nome do ponto de extremidade do modelo de serviço que hospeda o modelo que o senhor deseja consultar.
Este exemplo usa um site criado anteriormente endpoint, anthropic-completions-endpoint
, configurado para acessar modelos externos do provedor de modelos Anthropic. Veja como criar endpoints de modelos externos.
Consulte Modelos suportados para conhecer outros modelos que o senhor pode consultar e seus fornecedores.
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:
{
"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
Você pode passar quaisquer parâmetros adicionais compatíveis com o provedor do endpoint como parte da sua query.
Por exemplo:
logit_bias
(apoiado por OpenAI, Cohere).top_k
(apoiado por Anthropic, Cohere).frequency_penalty
(apoiado por OpenAI, Cohere).presence_penalty
(apoiado por OpenAI, Cohere).stream
(apoiado por OpenAI, Anthropic, Cohere, Amazon Bedrock for Anthropic). Isso só está disponível para solicitações de bate-papo e conclusões.
Limitações
Dependendo do modelo externo que o senhor escolher, sua configuração poderá fazer com que seus dados sejam processados fora da região de origem dos dados. Veja servindo modelo limites e regiões.