Criar um endpoint de modelo de serviço de fundação
Neste artigo, o senhor aprenderá a criar um endpoint de modelo de serviço que implante e sirva modelos de fundação.
O Mosaic AI Model Serving é compatível com os seguintes modelos:
-
Modelos externos. Esses são modelos de base que são hospedados fora da Databricks. que atendem a modelos externos podem ser controlados de forma centralizada e os clientes podem estabelecer limites de taxa e controle de acesso para eles. Os exemplos incluem modelos de fundação como o GPT-4 da OpenAI e o Claude da Anthropic.
-
Modelos de fundação abertos de última geração disponibilizados por APIs de modelo de fundação. Esses modelos são arquiteturas de modelos básicos selecionadas que oferecem suporte à inferência otimizada. Modelos básicos, como Meta-Llama-3.3-70B-Instruct estão disponíveis para uso imediato com preços pay-per-tokens . As cargas de trabalho de produção, usando modelos básicos ou ajustados, podem ser implantadas com garantias de desempenho usando o provisionamento de taxa de transferência .
A servindo modelo oferece as seguintes opções para a criação da servindo modelo endpoint:
- A interface de usuário de serviço
- API REST
- SDK de implantações do MLflow
Para criar um ponto de extremidade que atenda aos modelos tradicionais ML ou Python, consulte Criar ponto de extremidade de modelo de serviço personalizado.
Requisitos
-
Um Databricks workspace em uma região com suporte.
-
Para criar um endpoint usando o MLflow Deployments SDK, o senhor deve instalar o cliente MLflow Deployment. Para instalá-lo, execute:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Criar uma fundação servindo de modelo endpoint
O senhor pode criar um site endpoint que serve variantes ajustadas de modelos de fundação disponibilizados usando o Modelo de Fundação APIs provisionamento Taxa de transferência . Consulte Criar seu provisionamento Taxa de transferência endpoint usando o REST API .
Para os modelos básicos que são disponibilizados usando o modelo básico APIs pay-per-tokens , o Databricks fornece automaticamente um ponto de extremidade específico para acessar os modelos compatíveis em seu Databricks workspace. Para acessá-las, selecione Serving tab na barra lateral esquerda do site workspace. O Foundation Model APIs está localizado na parte superior da lista de endpoints view.
Para consultar esses endpoints, consulte Usar modelos de fundação.
Criar um modelo de serviço externo endpoint
A seguir, descrevemos como criar um endpoint que consulta um modelo básico disponibilizado usando modelos externos do Databricks.
- Serving UI
- REST API
- MLflow Deployments SDK
-
No campo Name (Nome ), forneça um nome para seu endpoint.
-
Na seção Entidades atendidas
- Clique no campo Entidade para abrir o formulário Selecionar entidade servida .
- Selecione os modelos Foundation .
- No campo Selecionar um modelo básico , selecione o fornecedor de modelo que você deseja usar dentre os listados em Fornecedores de modelos externos . O formulário é atualizado dinamicamente com base na seleção do fornecedor do modelo.
- Clique em Confirmar .
- Forneça os detalhes da configuração para acessar o fornecedor do modelo selecionado. Normalmente, esse é o segredo que faz referência aos tokens de acesso pessoal que o senhor deseja que o endpoint use para acessar esse modelo.
- Selecione a tarefa. As tarefas disponíveis são bate-papo, conclusão e incorporação.
- Selecione o nome do modelo externo que você deseja usar. A lista de modelos é atualizada dinamicamente com base na seleção de sua tarefa. Veja os modelos externos disponíveis.
-
Clique em Criar . A página Serving endpoint é exibida com o estado Serving endpoint mostrado como Not Ready.
Os parâmetros do site REST API para a criação de pontos de extremidade de serviço que atendem a modelos externos estão em Public Preview.
O exemplo a seguir cria um endpoint que serve a primeira versão do modelo text-embedding-ada-002
fornecido pela OpenAI.
Consulte POST /api/2.0/serving-endpoint para os parâmetros de configuração do endpoint.
{
"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"
}
]
}
Veja 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
}
A seguir, o senhor cria um endpoint para embeddings com o OpenAI text-embedding-ada-002
.
Para o endpoint de modelo externo, o senhor deve fornecer a chave API para o provedor de modelo que deseja usar. Consulte POST /api/2.0/serving-endpoint em REST API para obter detalhes sobre o esquema de solicitação e resposta. Para obter um guia passo a passo, consulte o tutorial: Criar endpoint de modelo externo para consultar modelos OpenAI.
Também é possível criar pontos de extremidade para conclusões e tarefas de bate-papo, conforme especificado pelo campo task
na seção external_model
da configuração. Consulte Modelos externos no Mosaic AI Model Serving para saber quais são os 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 o endpoint do modelo de serviço
Após habilitar um modelo endpoint, o senhor pode definir a configuração compute conforme desejado. Essa configuração é particularmente útil se o senhor precisar de recurso adicional para o seu modelo. O tamanho da carga de trabalho e a compute configuração key do site desempenham um papel importante em quais recursos são alocados para atender ao seu modelo.
Até que a nova configuração esteja pronta, a configuração antiga continua fornecendo tráfego de previsão. Enquanto houver uma atualização em andamento, outra atualização não poderá ser feita. Na interface de usuário do Serving, o senhor pode cancelar uma atualização de configuração em andamento selecionando Cancel update (Cancelar atualização) no canto superior direito da página de detalhes do endpoint. Essa funcionalidade só está disponível na interface de usuário de serviço.
Quando um external_model
está presente em uma configuração de endpoint, a lista de entidades servidas só pode ter um objeto served_entity. O endpoint existente com um external_model
não pode ser atualizado para não ter mais um external_model
. Se o endpoint for criado sem um external_model
, o senhor não poderá atualizá-lo para adicionar um external_model
.
- REST API
- MLflow Deployments SDK
Para atualizar seu endpoint, consulte a documentação de configuração de atualização da API REST para obter detalhes sobre o 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}}"
}
}
}
]
}
Para atualizar seu endpoint, consulte a documentação de configuração de atualização da API REST para obter detalhes sobre o 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,
}
],
}