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

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

  • gpt-3.5-turbo-instruct

  • babbage-002

  • davinci-002

  • gpt-3.5-turbo

  • gpt-4

  • gpt-4o

  • gpt-4o-2024-05-13

  • gpt-4o-mini

  • 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

  • gpt-4o

  • gpt-4o-mini

  • 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-5-sonnet-20240620

  • claude-3-haiku-20240307

  • claude-3-opus-20240229

  • claude-3-sonnet-20240229

  • claude-2.1

  • claude-2.0

  • claude-instant-1.2

Cohere**

  • Comando

  • luz de comando

  • comando-r-plus

  • comando-r

  • 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

Mosaic AI Model Serving

Databricks servindo endpoint

Databricks servindo endpoint

Databricks servindo endpoint

Amazon Bedrock

Anthropic:

  • claude-instant-v1

  • claude-v2

Cohere:

  • comando-texto-v14

  • texto de luz de comando-v14

AI21 Labs:

  • j2-grande-instrutor

  • j2-jumbo-instruct

  • j2-mid

  • j2-mid-v1

  • j2-ultra

  • j2-ultra-v1

Anthropic:

  • claude-v2

  • claude-v2:1

  • claude-3-sonnet-20240229-v1:0

  • claude-3-5-sonnet-20240620-v1:0

Cohere:

  • comando-r-plus-v1:0

  • comando-r-v1:0

Amazon:

  • titan-embed-text-v1

  • titan-embed-g1-text-02

Cohere:

  • embed-english-v3

  • embed-multilingual-v3

AI21 Labs†

  • j2-mid

  • j2-light

  • j2-ultra

Google cloud Vertex IA

texto-bisão

  • chat-bison

  • gemini-pro

  • gemini-1.0-pro

  • gemini-1.5-pro

  • gemini-1.5-flash

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 API para obter os 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 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.

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.

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

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

Não

openai

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

Antrópico

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 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 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 a validação access token.

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

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

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 o senhor preferir colar o segredo do 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 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

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

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

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.

Configurar o IA Gateway em um endpoint

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

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.

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.