Partilhar via


Criar modelo de base servindo endpoints

Neste artigo, você aprenderá a criar pontos de extremidade de serviço de modelo que servem modelos de fundação.

O Databricks Model Serving suporta os seguintes modelos de base:

  • Modelos abertos de última geração disponibilizados pelas APIs do Foundation Model. Esses modelos são arquiteturas de modelo de base selecionadas que suportam inferência otimizada. Modelos básicos, como Llama-2-70B-chat, BGE-Large e Mistral-7B estão disponíveis para uso imediato com preços pagos por token . As cargas de trabalho de produção, usando modelos básicos ou ajustados, podem ser implantadas com garantias de desempenho usando taxa de transferência provisionada.
  • Modelos externos. Estes são modelos que são hospedados fora do Databricks. Os endpoints 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 fundação como, GPT-4 da OpenAI, Claude da Anthropic, e outros.

O Model Serving fornece as seguintes opções para a criação de pontos finais de serviço de modelo:

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

Para criar pontos de extremidade que servem modelos tradicionais de ML ou Python, consulte Criar ponto de extremidade de serviço de modelo personalizado.

Requerimentos

import mlflow.deployments

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

Criar um modelo de base que sirva o ponto de extremidade

A seguir descrevemos como criar um ponto de extremidade que serve a um modelo de base disponibilizado usando modelos externos Databricks. Para pontos de extremidade que atendem variantes ajustadas dos modelos disponibilizados usando APIs de modelo básico, consulte Criar seu ponto de extremidade de taxa de transferência provisionado usando a API REST.

Servindo ui

  1. No campo Nome, forneça um nome para o seu ponto de extremidade.
  2. Na secção Entidades servidas
    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 na sua seleção. Consulte os modelos externos disponíveis.
    6. Selecione o tipo de tarefa. As tarefas disponíveis são chat, finalizações e incorporaçõ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 do ponto de extremidade de serviço mostrado como Não pronto.

Criar um ponto de extremidade de serviço de modelo

API de descanso

Importante

Os parâmetros da API REST para criar pontos de extremidade de serviço que servem modelos de base estão em Visualização pública.

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

Consulte POST /api/2.0/serving-endpoints para obter os parâmetros de configuração do ponto final.

{
  "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"
    }
  ]
}

Segue-se 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
}

Mlflow deployments sdk

O seguinte cria um ponto de extremidade para incorporações com 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.

Você também pode criar pontos de extremidade para conclusão e tarefas de chat, conforme especificado pelo task campo na external_model seção da configuração. Consulte Modelos externos em Databricks Model Serving para modelos e provedores suportados 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 do modelo de fundação

Depois de 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 um papel fundamental nos recursos alocados para atender ao seu modelo.

Até que a nova configuração esteja pronta, a configuração antiga continua servindo o 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, você pode 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 servidas só pode ter um objeto served_entity. Os pontos de extremidade existentes com um external_model não podem ser atualizados para não terem mais um external_modelarquivo . Se o ponto de extremidade for criado sem um external_model, você não poderá atualizá-lo para adicionar um external_modelarquivo .

API de descanso

Para atualizar seu 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}}"
        }
      }
    }
  ]
}

Mlflow deployments sdk

Para atualizar seu 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