Criar um endpoint de modelo de serviço personalizado
Este artigo descreve como criar um endpoint de modelo de serviço que serve modelos personalizados usando o modelo de serviço Databricks.
O servindo modelo oferece as seguintes opções para servir a criação do endpoint:
A UI de serviço
API REST
SDK de implantações do MLflow
Para criar um endpoint que sirva modelos de IA generativa, consulte Criar endpoint de IA generativa servindo modelo.
Requisitos
Seu workspace deve estar em uma região compatível.
Se você usar bibliotecas customizadas ou bibliotecas de um servidor espelho privado com seu modelo, consulte Usar bibliotecas Python customizadas com Model Serving antes de criar o endpoint de modelo.
Para criar um endpoint usando o SDK do MLflow Deployments, o senhor deve instalar o cliente do MLflow Deployment. Para instalá-lo, execute:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Controle de acesso
Para entender as opções de controle de acesso para o endpoint da servindo modelo para o gerenciamento endpoint, consulte gerenciar permissões em sua servindo modelo endpoint.
Você também pode:
Criar um ponto de extremidade
Você pode criar um endpoint para exibição de modelo com a IU de exibição .
Clique em Envio na barra lateral para exibir a IU de Envio.
Clique em Criar endpoint de veiculação.
Para modelos cadastrados no workspace registro de modelo ou modelos no Unity Catalog:
No campo Nome , forneça um nome para o seu endpoint.
Na seção Entidades atendidas
Clique no campo Entidade para abrir o formulário Selecionar entidade atendida .
Selecione o tipo de modelo que você deseja servir. O formulário é atualizado dinamicamente com base na sua seleção.
Selecione qual modelo e versão do modelo você deseja atender.
Selecione a porcentagem de tráfego a ser encaminhada para seu modelo atendido.
Selecione o tamanho do site compute a ser usado. O senhor pode usar a computação de CPU ou GPU para suas cargas de trabalho. Consulte Tipos de carga de trabalho de GPU para obter mais informações sobre a computação de GPU disponível.
Em escalonamentocompute , selecione o tamanho do escalonamento compute que corresponde ao número de solicitações que esse modelo atendido pode processar ao mesmo tempo. Este número deve ser aproximadamente igual ao tempo de execução do modelo QPS x.
Os tamanhos disponíveis são Pequeno para 0 a 4 solicitações, Médio 8 a 16 solicitações e Grande para 16 a 64 solicitações.
Especifique se o endpoint deve escalar para zero quando não estiver em uso.
Em Advanced configuration, o senhor pode adicionar um instance profile para se conectar ao AWS recurso do seu endpoint.
Clique em Criar. A página Servindo endpoints aparece com o estado do endpoint de veiculação mostrado como Não pronto.
Você pode criar endpoint usando a API REST. Consulte POSTendpoint para parâmetros de configuração endpoint .
O exemplo a seguir cria um endpoint que atende à primeira versão do modelo ads1
registrado no registro de modelo. Para especificar um modelo do Unity Catalog, forneça o nome completo do modelo, incluindo o catálogo pai e o esquema, como catalog.schema.example-model
.
POST /api/2.0/serving-endpoints
{
"name": "workspace-model-endpoint",
"config":
{
"served_entities": [
{
"name": "ads-entity"
"entity_name": "my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
},
{
"entity_name": "my-ads-model",
"entity_version": "4",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config":
{
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
},
{
"served_model_name": "my-ads-model-4",
"traffic_percentage": 20
}
]
}
},
"tags": [
{
"key": "team",
"value": "data science"
}
]
}
A seguir está um exemplo de resposta. O estado config_update
do endpoint é NOT_UPDATING
e o modelo servido está em um estado READY
.
{
"name": "workspace-model-endpoint",
"creator": "user@email.com",
"creation_timestamp": 1700089637000,
"last_updated_timestamp": 1700089760000,
"state": {
"ready": "READY",
"config_update": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "ads-entity",
"entity_name": "my-ads-model-3",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true,
"workload_type": "CPU",
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1700089760000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "data science"
}
],
"id": "e3bd3e471d6045d6b75f384279e4b6ab",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
O MLflow Deployments fornece uma API para criar, atualizar e excluir tarefas. As APIs para essas tarefas aceitam os mesmos parâmetros que a API REST para servir o endpoint. Consulte POST /api/2.0/serving-endpoint para os parâmetros de configuração do endpoint.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="workspace-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
}
]
}
}
)
Você também pode:
Adicione um instance profile ao seu modelo de serviço endpoint para acessar AWS recurso.
Habilite tabelas de inferência para capturar automaticamente solicitações de entrada e respostas de saída para seu modelo de endpoint autônomo.
Tipos de carga de trabalho de GPU
A implantação de GPU é compatível com as seguintes versões de pacote:
PyTorch 1.13.0 - 2.0.1
TensorFlow 2.5.0 - 2.13.0
MLflow 2.4.0 e acima
Para implantar seus modelos usando GPUs, inclua o campo workload_type
na configuração do endpoint durante a criação do endpoint ou como uma atualização da configuração do endpoint usando a API. Para configurar seu endpoint para cargas de trabalho de GPU com a UI de serviço, selecione o tipo de GPU desejado em compute Type dropdown.
{
"served_entities": [{
"name": "ads1",
"entity_version": "2",
"workload_type": "GPU_MEDIUM",
"workload_size": "Small",
"scale_to_zero_enabled": false,
}]
}
A tabela a seguir resume os tipos de carga de trabalho de GPU disponíveis com suporte.
Tipo de carga de trabalho da GPU |
Instância de GPU |
Memória GPU |
---|---|---|
|
1xT4 |
16 GB |
|
1xA10G |
24 GB |
|
4xA10G |
96 GB |
|
8xA10G |
192 GB |
|
8xA100-80GB |
320 GB |
Modificar um endpoint de modelo personalizado
Depois de ativar um endpoint de modelo personalizado, o senhor pode atualizar a configuração do compute conforme desejar. 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 atendendo ao tráfego de previsão. Enquanto houver uma atualização em andamento, outra atualização não poderá ser feita. No entanto, o senhor pode cancelar uma atualização em andamento na interface de usuário do Serving.
Depois de ativar um endpoint modelo, selecione Editar endpoint para modificar a configuração compute do seu endpoint.
Você pode fazer o seguinte:
Escolha entre alguns tamanhos de carga de trabalho e autoscale é configurado automaticamente dentro do tamanho da carga de trabalho.
Especifique se o endpoint deve ser reduzido a zero quando não estiver em uso.
Modifique a porcentagem de tráfego para rotear para seu modelo servido.
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 UI de serviço.
A seguir, um exemplo de atualização de configuração de endpoint usando a API REST. Consulte PUT /api/2.0/serving-endpoint/{{name}/config.
PUT /api/2.0/serving-endpoints/{name}/config
{
"name": "unity-catalog-model-endpoint",
"config":
{
"served_entities": [
{
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "5",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config":
{
"routes": [
{
"served_model_name": "my-ads-model-5",
"traffic_percentage": 100
}
]
}
}
}
O SDK do MLflow Deployments usa os mesmos parâmetros da API REST, consulte PUT /api/2.0/serving-endpoint/{name}/config para obter detalhes do esquema de solicitação e resposta.
O exemplo de código a seguir usa um modelo do site Unity Catalog registro de modelo:
import mlflow
from mlflow.deployments import get_deploy_client
mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name=f"{endpointname}",
config={
"served_entities": [
{
"entity_name": f"{catalog}.{schema}.{model_name}",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": True
}
],
"traffic_config": {
"routes": [
{
"served_model_name": f"{model_name}-1",
"traffic_percentage": 100
}
]
}
}
)
Pontuação de um endpoint de modelo
Para pontuar seu modelo, envie solicitações para o endpoint servindo modelo.
Recursos adicionais
Se preferir usar Python, o senhor pode usar o Python SDK de serviço em tempo real da Databricks.
exemplos Notebook
O Notebook a seguir inclui diferentes modelos registrados do Databricks que você pode usar para começar a funcionar com o modelo de instalação endpoint.
Os exemplos de modelos podem ser importados para o site workspace seguindo as instruções em Import a Notebook. Depois de escolher e criar um modelo a partir de um dos exemplos, registre-o em Unity Catalog e, em seguida, siga o fluxo de trabalho UI os passos para servir o modelo.