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

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**

  • gpt-3.5-turbo-instruct

  • babbage-002

  • davinci-002

  • gpt-3.5-turbo

  • gpt-4

  • gpt-3.5-turbo-0125

  • gpt-3.5-turbo-1106

  • gpt-4-0125-preview

  • gpt-4-turbo-preview

  • gpt-4-1106-preview

  • gpt-4-vision-preview

  • gpt-4-1106-vision-preview

  • incorporação de texto-ada-002

  • incorporação de texto-3-grande

  • text-embedding-3-small

Azure OpenAI**

  • text-davinci-003

  • gpt-35-turbo-instruct

  • gpt-35-turbo

  • gpt-35-turbo-16k

  • gpt-4

  • gpt-4-32k

  • incorporação de texto-ada-002

  • incorporação de texto-3-grande

  • text-embedding-3-small

Antrópico

  • claude-1

  • claude-1.3-100k

  • claude-2

  • claude-2.1

  • claude-2.0

  • claude-instant-1.2

  • claude-3-opus-20240229

  • claude-3-sonnet-20240229

  • claude-2.1

  • claude-2.0

  • claude-instant-1.2

Cohere**

  • Comando

  • comando-light-nightly

  • luz de comando

  • comando-noturno

  • embed-english-v2.0

  • embed-multilingual-v2.0

  • embed-english-light-v2.0

  • embed-english-v3.0

  • embed-english-light-v3.0

  • embed-multilingual-v3.0

  • embed-multilingual-light-v3.0

Modelo de databricks em operação

Databricks servindo endpoint

Databricks servindo endpoint

Databricks servindo endpoint

Amazon Bedrock

Anthropic:

  • claude-instant-v1

  • claude-v1

  • claude-v2

Cohere:

  • comando-texto-v14

  • comando-texto-v14:7:4k

  • texto de luz de comando-v14

  • comando-light-text-v14:7:4k

AI21 Labs:

  • j2-grande-instrutor

  • j2-jumbo-instruct

  • j2-mid

  • j2-mid-v1

  • j2-ultra j2-ultra-v1

Anthropic:

  • claude-instant-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-sonnet-20240229-v1:0

Amazon:

  • titan-embed-text-v1

  • titan-embed-g1-text-02

  • titan-embed-text-v1:2:8k

AI21 Labs†

  • j2-mid

  • j2-light

  • j2-ultra

Google cloud Vertex IA

texto-bisão

  • chat-bison

  • gemini-pro

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

name

O nome do modelo a ser usado. Por exemplo, gpt-3.5-turbo para o modelo GPT-3.5-Turbo da OpenAI.

provider

Especifica o nome do provedor para este modelo. Este valor strings deve corresponder a um provedor de modelo externo compatível. Por exemplo, openai para modelos GPT-3.5 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 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

openai_api_key

A key de API do serviço OpenAI.

Sim

openai_api_type

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

Não

openai_api_base

O URL base da 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

Coerente

Parâmetro de configuração

Descrição

Obrigatório

Padrão

cohere_api_key

A key de API do serviço Cohere.

Sim

Antrópico

Parâmetro de configuração

Descrição

Obrigatório

Padrão

anthropic_api_key

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

openai_api_key

A key API para o serviço Azure OpenAI.

Sim

openai_api_type

Ajuste este parâmetro para representar o protocolo de validação de acesso de segurança preferencial. Para validação access token , use azure. Para autenticação usando o Azure Active Directory (Azure AD), use azuread.

Sim

openai_api_base

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

Sim

openai_api_version

A versão do serviço Azure OpenAI a utilizar, 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 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

private_key

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

region

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

project_id

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

aws_region

A região da AWS a ser usada. Bedrock deve estar habilitado lá.

Sim

aws_access_key_id

Um ID key de acesso AWS com permissões para interagir com o serviço Bedrock.

Sim

aws_secret_access_key

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

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

ai21labs_api_key

Esta é a key API para o serviço AI21 Labs.

Sim

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.

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 escolhido, 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.