Share via


Modelos externos no Databricks Model Serving

Importante

Os exemplos de código neste artigo demonstram o uso da API CRUD de implantações MLflow do Public Preview .

Este artigo descreve modelos externos no Databricks Model Serving 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. Suportados pelo Model Serving, os modelos externos permitem agilizar o uso e o gerenciamento de vários provedores de modelos de linguagem grande (LLM), como OpenAI e Anthropic, dentro de uma organização. Você também pode usar o Databricks Model Serving como um provedor para servir modelos personalizados, que oferece limites de taxa para esses pontos de extremidade. Como parte desse suporte, o Model Serving oferece uma interface de alto nível que simplifica a interação com esses serviços, fornecendo um ponto de extremidade unificado para lidar com solicitações específicas relacionadas ao LLM.

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

Consulte Tutorial: Criar pontos de extremidade de modelo externos para consultar modelos OpenAI para obter orientação passo a passo sobre a criação de ponto de extremidade de modelo externo e consulta de modelos suportados atendidos por esses pontos de extremidade usando o SDK de implantações MLflow. Consulte os guias a seguir para obter instruções sobre como usar a interface do usuário de serviço e a API REST:

Requerimentos

  • Chave de API para o provedor de modelo.
  • Espaço de trabalho Databricks em regiões suportadas por modelos externos.

Fornecedores de modelos

Os modelos externos no Model Serving foram concebidos para suportar uma variedade de fornecedores de modelos. Um provedor representa a origem dos modelos 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 dentro do external_model campo da configuração de ponto final do modelo externo.

Os seguintes provedores são suportados:

Para solicitar suporte para um provedor não listado aqui, entre em contato com sua equipe de conta Databricks.

Modelos suportados

O modelo escolhido afeta diretamente os resultados das respostas obtidas das chamadas de API. Portanto, escolha um modelo que se adapte aos seus requisitos de caso de uso. Por exemplo, para gerar respostas de conversação, 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 terminais correspondentes. As associações de modelo listadas abaixo podem ser usadas como um guia útil ao configurar um ponto de extremidade para qualquer tipo de modelo recém-lançado à medida que eles se tornam disponíveis com um determinado provedor. Os clientes são responsáveis por garantir a conformidade com as licenças de modelo aplicáveis.

Nota

Com o rápido desenvolvimento dos LLMs, não há garantia de que esta lista esteja sempre atualizada.

Provedor de modelo LLM/v1/Conclusão LLM/v1/bate-papo LLM/v1/Incorporações
OpenAI** * GPT-3.5-turbo-instruir
* Babbage-002
* Davinci-002
* GPT-3.5-Turbo
* GPT-4
* GPT-3.5-turbo-0125
* GPT-3.5-Turbo-1106
* gpt-4-0125-pré-visualização
* GPT-4-Turbo-Pré-visualização
* gpt-4-1106-pré-visualização
* gpt-4-visão-visualização
* gpt-4-1106-visão-visualização
* texto-embedding-ada-002
* texto-embedding-3-large
* texto-embedding-3-small
Azure OpenAI** * texto-davinci-003
* GPT-35-turbo-instruir
* GPT-35-Turbo
* GPT-35-Turbo-16K
* GPT-4
* GPT-4-32K
* texto-embedding-ada-002
* texto-embedding-3-large
* texto-embedding-3-small
Anthropic * Claude-1
* Claude-1.3-100K
* Claude-2
* Claude-2,1
* Claude-2,0
* Claude-instante-1.2
* claude-3-opus-20240229
* claude-3-soneto-20240229
* Claude-2,1
* Claude-2,0
* Claude-instante-1.2
Coaqui** * comando
* comando-luz-noite
* Comando-luz
* comando-noturno
* embed-inglês-v2.0
* incorporar-multilingue-v2.0
* embed-inglês-luz-v2.0
* embed-inglês-v3.0
* embed-inglês-luz-v3.0
* incorporar-multilingue-v3.0
* incorporar-multilingue-luz-v3.0
Servindo modelo Databricks Databricks servindo endpoint Databricks servindo endpoint Databricks servindo endpoint
Substrato rochoso amazônico Antrópico:

* claude-instante-v1
* Claude-V1
* Claude-V2

Coaqui:

* comando-texto-v14
* comando-text-v14:7:4k
* comando-light-text-v14
* comando-light-text-v14:7:4k

Laboratórios AI21:

* j2-grande-instruir
* j2-jumbo-instruir
* J2-MID
* J2-Mid-V1
* J2-Ultra J2-Ultra-V1
Antrópico:

* claude-instante-v1:2:100k
* Claude-V2
* Claude-V2:0:18K
* Claude-V2:0:100K
* Claude-v2:1
* Claude-V2:1:18K
* Claude-V2:1:200K
* claude-3-soneto-20240229-v1:0
Amazônia:

* titan-embed-text-v1
* titan-embed-g1-texto-02
* titan-embed-text-v1:2:8k
Laboratórios AI21† * J2-MID
* j2-luz
* J2-Ultra
Google Cloud Vertex AI texto-bisão * bate-papo-bisão
* Gêmeos-Pro
textembedding-lagartixa

** O provedor de modelos suporta modelos de conclusão e bate-papo ajustados. Para consultar um modelo ajustado, preencha o nameexternal model campo da configuração com o nome do modelo ajustado.

† provedor de modelo oferece suporte a modelos de conclusão personalizados.

Usar modelos servidos em pontos de extremidade de serviço de modelo Databricks

O Databricks Model Serving endpoints como um provedor é suportado para os llm/v1/completionstipos , llm/v1/chate llm/v1/embeddings endpoint. Esses pontos de extremidade devem aceitar os parâmetros de consulta padrão marcados como necessários, enquanto outros parâmetros podem ser ignorados, dependendo se o ponto de extremidade Databricks Model Serving os suporta ou não.

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

Esses endpoints 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 tarefas de chat:

{
  "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:

{
  "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 do ponto final

Para servir e consultar modelos externos, você precisa configurar um ponto de extremidade de serviço. Consulte Criar pontos de extremidade de serviço de modelo personalizado

Para um modelo externo que serve o ponto de extremidade, você deve incluir o external_model campo e seus parâmetros na served_entities seção da configuração do ponto final.

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

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

Parâmetro Descrições
name O nome do modelo a ser usado. Por exemplo, gpt-3.5-turbo para o modelo da GPT-3.5-Turbo OpenAI.
provider Especifica o nome do provedor para este modelo. Esse valor de cadeia de caracteres deve corresponder a um provedor de modelo externo suportado. Por exemplo, openai para os GPT-3.5 modelos da OpenAI.
task 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".
<provider>_config Contém todos os detalhes de configuração adicionais necessários para o modelo. Isso inclui especificar a URL base da API e a chave da API. Consulte Configurar o provedor para um ponto de extremidade.

A seguir está um exemplo de criação de um ponto de extremidade de modelo externo usando a create_endpoint() API. Neste exemplo, uma solicitação enviada para o ponto de extremidade de conclusão é encaminhada para o claude-2 modelo fornecido pela 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 ponto de extremidade

Ao criar um ponto de extremidade, 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 ponto de extremidade disponíveis para cada provedor de modelo.

OpenAI

Parâmetro de configuração Description Necessário Predefinição
openai_api_key A chave de API para o serviço OpenAI. Sim
openai_api_type Um campo opcional para especificar o tipo de API OpenAI a ser usado. Não
openai_api_base A URL base para a API OpenAI. Não https://api.openai.com/v1
openai_api_version Um campo opcional para especificar a versão da API OpenAI. Não
openai_organization Um campo opcional para especificar a organização no OpenAI. Não

Cohere

Parâmetro de configuração Description Necessário Predefinição
cohere_api_key A chave de API para o serviço Cohere. Sim

Anthropic

Parâmetro de configuração Description Necessário Predefinição
anthropic_api_key A chave de API para o serviço Anthropic. Sim

Azure OpenAI

O Azure OpenAI tem recursos distintos 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 Description Necessário Predefinição
openai_api_key A chave de API para o serviço Azure OpenAI. Sim
openai_api_type Ajuste esse parâmetro para representar o protocolo de validação de acesso de segurança preferido. Para validação de token de acesso, use azure. Para autenticação usando o Azure Ative Directory (Azure AD), use azureado . Sim
openai_api_base A URL base para o serviço de API OpenAI do Azure fornecido pelo Azure. Sim
openai_api_version A versão do serviço OpenAI do Azure a ser utilizada, especificada por uma data. Sim
openai_deployment_name O nome do recurso de implantação para o 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 ponto de extremidade com o 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 AI

Parâmetro de configuração Description Necessário Predefinição
private_key Esta é a chave privada para a conta de serviço que tem acesso ao Google Cloud Vertex AI Service. Consulte Práticas recomendadas para gerenciar chaves de conta de serviço. Sim
region Esta é a região para o Google Cloud Vertex AI Service. Consulte as regiões suportadas para obter mais detalhes. Alguns modelos só estão disponíveis em regiões específicas. Sim
project_id Este é o ID do projeto do Google Cloud ao qual a conta de serviço está associada. Sim

Substrato rochoso amazônico

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

Parâmetro de configuração Description Necessário Predefinição
aws_region A região da AWS a ser usada. Bedrock tem que ser habilitado lá. Sim
aws_access_key_id Um ID de chave de acesso da AWS com permissões para interagir com os serviços Bedrock. Sim
aws_secret_access_key Uma chave de acesso secreta da AWS emparelhada com o ID da chave de acesso, com permissões para interagir com os serviços Bedrock. Sim
bedrock_provider 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 da AWS, o Databricks recomenda que você verifique as credenciais diretamente com a API do Amazon Bedrock.

Laboratórios AI21

Parâmetro de configuração Description Necessário Predefinição
ai21labs_api_key Esta é a chave de API para o serviço AI21 Labs. Sim

Consultar um ponto de extremidade de modelo externo

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

Você pode enviar solicitações de pontuação para o endpoint usando o cliente OpenAI, a API REST ou o SDK de implantações MLflow.

O exemplo a seguir consulta o claude-2 modelo de conclusão hospedado pela Anthropic usando o cliente OpenAI. Para usar o cliente OpenAI, preencha o model campo com o nome do ponto de extremidade de serviço do modelo que hospeda o modelo que você deseja consultar.

Este exemplo usa um ponto de extremidade criado anteriormente, anthropic-completions-endpoint, configurado para acessar modelos externos do provedor de modelo antrópico. Veja como criar pontos de extremidade de modelo externos.

Consulte Modelos suportados para obter modelos adicionais que você pode consultar e seus provedores.

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 suportados pelo provedor do ponto de extremidade como parte de sua consulta.

Por exemplo:

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

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.

Consulte Limites e regiões de serviço do modelo.

Recursos adicionais