Modelos externos em Databricks modelo específico
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 modelos externos no modelo de atividade do Databricks, incluindo seus provedores de modelo suportados e limitações.
O que são modelos externos?
Modelos externos são modelos de terceiros hospedados fora do Databricks. Apoiados pelo modelo de atividade, os modelos externos permitem agilizar o uso e o gerenciamento de vários provedores de grandes modelos de linguagem (LLM), como OpenAI e Anthropic, dentro de uma organização. Você também pode usar o modelo de uso do Databricks como um provedor para atender modelos personalizados, que oferece limites de taxa para esses endpoint. Como parte desse suporte, o modelo de navegação 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 Tutorial: Crie um ponto de extremidade de modelo externo para consultar modelos OpenAI para obter orientações passo a passo sobre a criação do modelo externo endpoint e a consulta de modelos compatíveis atendidos por esses pontos de extremidade usando o SDK de implantações do MLflow. Consulte o guia a seguir para obter instruções sobre como usar a Serving UI e a REST API:
Requisitos
API key para o provedor de modelos.
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.
ai21labs: Para modelos oferecidos pela AI21Labs.
google-cloud-vertex-IA: Para modelos oferecidos pelo Google cloud Vertex IA.
databricks-servindo modelo: Para endpoint de modelo instalado do Databricks 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** |
|
|
|
Modelo de databricks em operação |
Databricks servindo endpoint |
Databricks servindo endpoint |
Databricks servindo endpoint |
Amazon Bedrock |
Anthropic:
Cohere:
AI21 Labs:
|
Anthropic:
|
Amazon:
|
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.
Usar modelos servidos no endpointdo modelo de uso do Databricks
O modelo endpointdo Databricks como provedor é compatível com os tipos endpoint llm/v1/completions
, llm/v1/chat
e llm/v1/embeddings
. Esses endpoint devem aceitar os parâmetros query padrão marcados como necessários, enquanto outros parâmetros podem ser ignorados dependendo se o endpoint do modelo de operação do Databricks os suporta ou não.
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 endpoint de modelo de serviço personalizado
Para um endpoint de modelo externo, você deve incluir o campo external_model
e seus parâmetros na seção served_entities
da configuração do endpoint.
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.
OpenAI
Parâmetro de configuração |
Descrição |
Obrigatório |
Padrão |
---|---|---|---|
|
A key de API do serviço OpenAI. |
Sim |
|
|
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 key de API do serviço Cohere. |
Sim |
Antrópico
Parâmetro de configuração |
Descrição |
Obrigatório |
Padrão |
---|---|---|---|
|
A key API do serviço Antrópico. |
Sim |
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 key API para o serviço Azure OpenAI. |
Sim |
|
|
Ajuste este parâmetro para representar o protocolo de validação de acesso de segurança preferencial. Para validação access token , 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 |
---|---|---|---|
|
Este é o key privado para o serviço account que tem acesso ao serviço Google cloud Vertex IA. Consulte Práticas recomendadas para gerenciar o serviço account key. |
Sim |
|
|
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 |
|
|
Um ID key de acesso AWS com permissões para interagir com o serviço Bedrock. |
Sim |
|
|
Uma key de acesso secreta da AWS emparelhada com o ID key de acesso, com permissões para interagir com o serviço Bedrock. |
Sim |
|
|
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 o Amazon Bedrock.
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>",
"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.
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.