Share via


Criar pontos de extremidade de serviço de modelo de fundação

Neste artigo, você aprenderá a criar pontos de extremidade de serviço de modelo que atendem modelos de base.

O Serviço de Modelo do Databricks dá suporte aos seguintes foundation models:

  • Modelos abertos de última geração disponibilizados pelas APIs de Modelos de Base. Esses modelos são arquiteturas de modelo de base com curadoria que dão suporte à inferência otimizada. Modelos de base, como Llama-2-70B-chat, BGE-Large e Mistral-7B estão disponíveis para uso imediato com preços de pagamento por token. Cargas de trabalho de produção, usando modelos de base ou ajustados, podem ser implantadas com garantias de desempenho usando a taxa de transferência provisionada.
  • Modelos externos. Estes são modelos que são hospedados fora do Databricks. Os pontos de extremidade que atendem modelos externos podem ser controlados centralmente e os clientes podem estabelecer limites de taxa e controle de acesso para eles. Exemplos incluem modelos de base como GPT-4 da OpenAI, Claude da Antropic e outros.

O Serviço de Modelo fornece as seguintes opções para criação de ponto de extremidade de modelagem:

  • A interface do usuário de serviço
  • API REST
  • SDK de Implantações do MLflow

Para criar pontos de extremidade que atendem modelos ML ou Python tradicionais, consulte Criar modelo personalizado que atende pontos de extremidade.

Requisitos

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

Criar um ponto de extremidade de serviço de foundation model

O conteúdo a seguir descreve como criar um ponto de extremidade que atende a um modelo de fundação disponibilizado por meio do uso de modelos externos do Databricks. Para pontos de extremidade que atendem a variantes ajustadas dos modelos disponibilizados pelo uso de APIs do Modelo de Fundação, consulte Criar ponto de extremidade de taxa de transferência provisionada usando a API REST.

Servindo interface do usuário

  1. No campo Nome, forneça um nome para o ponto de extremidade.
  2. Na seção Entidades atendidas
    1. Clique no campo Entidade para abrir o formulário Selecionar entidade atendida.
    2. Selecione Modelo externo.
    3. Selecione o provedor de modelo que você deseja usar.
    4. Clique em Confirmar
    5. Forneça o nome do modelo externo que você deseja usar. O formulário é atualizado dinamicamente com base em sua seleção. Consulte os modelos externos disponíveis.
    6. Selecione o tipo de tarefa. As tarefas disponíveis são chat, conclusões e inserções.
    7. Forneça os detalhes de configuração para acessar o provedor de modelo selecionado. Normalmente, esse é o segredo que faz referência ao token de acesso pessoal que você deseja que o ponto de extremidade use para acessar esse modelo.
  3. Clique em Criar. A página Pontos de extremidade de serviço é exibida com o estado De serviço do ponto de extremidade mostrado como Não Pronto.

Criar um ponto de extremidade de serviço de modelo

API REST

Importante

Os parâmetros da API REST para criar pontos de extremidade de serviço que atendem a modelos de base estão em Versão Prévia Pública.

O exemplo a seguir cria um ponto de extremidade que fornece a primeira versão do modelo text-embedding-ada-002 fornecido pela OpenAI.

Consulte POST /api/2.0/serving-endpoints para obter os parâmetros de configuração dos pontos de extremidade.

{
  "name": "openai_endpoint",
  "config":{
    "served_entities": [
      {
        "name": "openai_embeddings",
        "external_model":{
          "name": "text-embedding-ada-002",
          "provider": "openai",
          "task": "llm/v1/embeddings",
          "openai_config":{
            "openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
          }
        }
      }
    ]
  },
  "rate_limits": [
    {
      "calls": 100,
      "key": "user",
      "renewal_period": "minute"
    }
  ],
  "tags": [
    {
      "key": "team",
      "value": "gen-ai"
    }
  ]
}

A seguir, um exemplo de resposta.

{
  "name": "openai_endpoint",
  "creator": "user@email.com",
  "creation_timestamp": 1699617587000,
  "last_updated_timestamp": 1699617587000,
  "state": {
    "ready": "READY"
  },
  "config": {
    "served_entities": [
      {
        "name": "openai_embeddings",
        "external_model": {
          "provider": "openai",
          "name": "text-embedding-ada-002",
          "task": "llm/v1/embeddings",
          "openai_config": {
            "openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
          }
        },
        "state": {
          "deployment": "DEPLOYMENT_READY",
          "deployment_state_message": ""
        },
        "creator": "user@email.com",
        "creation_timestamp": 1699617587000
      }
  ],
    "traffic_config": {
      "routes": [
        {
          "served_model_name": "openai_embeddings",
          "traffic_percentage": 100
        }
      ]
    },
    "config_version": 1
  },
  "tags": [
    {
      "key": "team",
      "value": "gen-ai"
    }
  ],
  "id": "69962db6b9db47c4a8a222d2ac79d7f8",
  "permission_level": "CAN_MANAGE",
  "route_optimized": false
}

SDK de implantações do Mlflow

A seguir, cria um ponto de extremidade para inserções com o OpenAI text-embedding-ada-002.

Para pontos de extremidade de modelo de base, você deve fornecer chaves de API para o provedor de modelo que deseja usar. Consulte POST /api/2.0/serving-endpoints na API REST para obter detalhes do esquema de solicitação e resposta.

Também é possível criar pontos de extremidade para conclusões e tarefas de chat, conforme especificado pelo campo task na seção external_model da configuração. Consulte Modelos externos no Serviço de Modelo do Databricks para modelos e provedores com suporte para cada tarefa.


from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
    name="chat",
    config={
        "served_entities": [
            {
                "name": "completions",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{secrets/scope/key}}",
                    },
                },
            }
        ],
    },
)
assert endpoint == {
    "name": "chat",
    "creator": "alice@company.com",
    "creation_timestamp": 0,
    "last_updated_timestamp": 0,
    "state": {...},
    "config": {...},
    "tags": [...],
    "id": "88fd3f75a0d24b0380ddc40484d7a31b",
}

Atualizar um ponto de extremidade de modelo de fundação

Após habilitar um ponto de extremidade de modelo, você pode definir a configuração de computação conforme desejado. Essa configuração é particularmente útil se você precisar de recursos adicionais para seu modelo. O tamanho da carga de trabalho e a configuração de computação desempenham uma função fundamenta em quais os recursos são alocados para servir seu modelo.

Até que a nova configuração esteja pronta, a configuração antiga continuará atendendo ao tráfego de previsão. Embora haja uma atualização em andamento, outra atualização não pode ser feita. Na interface do usuário de serviço, é possível cancelar uma atualização de configuração em andamento selecionando Cancelar atualização no canto superior direito da página de detalhes do ponto de extremidade. Essa funcionalidade só está disponível na interface do usuário de serviço.

Quando um external_model está presente em uma configuração de ponto de extremidade, a lista de entidades atendidas só pode ter um objeto served_entity. Os pontos de extremidade existentes com external_model não podem ser atualizados para que deixem de ter external_model. Se o ponto de extremidade for criado sem um external_model, você não poderá atualizá-lo para adicionar um external_model.

API REST

Para atualizar o ponto de extremidade do modelo de fundação, consulte a documentação de configuração de atualização da API REST para obter detalhes do esquema de solicitação e resposta.

{
  "name": "openai_endpoint",
  "served_entities":[
    {
      "name": "openai_chat",
      "external_model":{
        "name": "gpt-4",
        "provider": "openai",
        "task": "llm/v1/chat",
        "openai_config":{
          "openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
        }
      }
    }
  ]
}

SDK de implantações do Mlflow

Para atualizar o ponto de extremidade do modelo de fundação, consulte a documentação de configuração de atualização da API REST para obter detalhes do esquema de solicitação e resposta.

from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
endpoint = client.update_endpoint(
    endpoint="chat",
    config={
        "served_entities": [
            {
                "name": "chats",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{secrets/scope/key}}",
                    },
                },
            }
        ],
    },
)
assert endpoint == {
    "name": "chats",
    "creator": "alice@company.com",
    "creation_timestamp": 0,
    "last_updated_timestamp": 0,
    "state": {...},
    "config": {...},
    "tags": [...],
    "id": "88fd3f75a0d24b0380ddc40484d7a31b",
  }

rate_limits = client.update_endpoint(
    endpoint="chat",
    config={
        "rate_limits": [
            {
                "key": "user",
                "renewal_period": "minute",
                "calls": 10,
            }
        ],
    },
)
assert rate_limits == {
    "rate_limits": [
        {
            "key": "user",
            "renewal_period": "minute",
            "calls": 10,
        }
    ],
}

Recursos adicionais