Criar um endpoint de modelo de serviço personalizado
Este artigo descreve como criar um endpoint servindo modelo que serve modelos personalizados usando Databricks servindo modelo.
O servindo modelo oferece as seguintes opções para servir a criação do endpoint:
- A interface de usuário de serviço
- API REST
- SDK de implantações do MLflow
Para criar um endpoint que atenda aos modelos generativos do AI, consulte Criar um endpoint que atenda ao modelo.
Requisitos
- Seu workspace deve estar em uma região compatível.
- Se o senhor usar uma biblioteca personalizada ou uma biblioteca de um servidor espelho privado com seu modelo, consulte Usar uma biblioteca personalizada Python com o modelo de serviço antes de criar o modelo endpoint.
- 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")
Controle de acesso
Para entender as opções de controle de acesso para o endpoint servindo modelo para o endpoint gerenciamento,consulte gerenciar permissões em seu endpoint endpoint servindo modelo.
O senhor também pode adicionar variável de ambiente para armazenar credenciais para o modelo de serviço. Consulte Configurar o acesso ao recurso a partir do endpoint servindo modelo
Criar um endpoint
- Serving UI
- REST API
- MLflow Deployments SDK
O senhor pode criar um endpoint para servir o modelo com a Serving UI.
-
Clique em Serving na barra lateral para exibir a Serving UI.
-
Clique em Criar endpoint de serviço .
Para modelos registrados no Unity Catalog:
-
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 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 servir.
- Selecione a porcentagem de tráfego a ser direcionada para seu modelo atendido.
- Selecione o tamanho da CPU ou GPU compute a ser usado. Somente o GPU_MEDIUM compute é compatível com a GPU.
- Em compute escala-out , selecione o tamanho do compute escala out que corresponde ao número de solicitações que esse modelo atendido pode processar ao mesmo tempo. Esse número deve ser aproximadamente igual a QPS x tempo de execução do modelo. Os tamanhos disponíveis são pequeno para 0 a 4 solicitações, médio para 8 a 16 solicitações e grande para 16 a 64 solicitações.
- Especifique se o site endpoint deve ser escalonado para zero quando não estiver em uso. O escalonamento para zero não é recomendado para endpoints de produção, pois a capacidade não é garantida quando escalonada para zero.
-
Na seção AI Gateway , o senhor pode selecionar o recurso de governança a ser ativado no seu endpoint. Consulte a introdução do Mosaic AI Gateway.
-
Clique em Criar . A página Serving endpoint é exibida com o estado Serving endpoint mostrado como Not Ready.
O senhor pode criar um endpoint usando o site REST API. Consulte POST /api/2.0/serving-endpoint para os parâmetros de configuração do endpoint.
O exemplo a seguir cria um endpoint que serve a primeira versão do modelo ads1
que está registrado no registro de modelo Unity Catalog. Para especificar um modelo do Unity Catalog, forneça o nome completo do modelo, incluindo o catálogo pai e o esquema, como, por exemplo, catalog.schema.example-model
.
POST /api/2.0/serving-endpoints
{
"name": "uc-model-endpoint",
"config":
{
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
},
{
"entity_name": "catalog.schema.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"
}
]
}
Veja a seguir um exemplo de resposta. O estado config_update
do endpoint é NOT_UPDATING
e o modelo servido está em um estado READY
.
{
"name": "uc-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": "catalog.schema.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": "catalog.schema.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
}
MLflow O Deployments fornece um API para tarefas de criação, atualização e exclusão. O APIs para essas tarefas aceita os mesmos parâmetros que o REST API para atender ao endpoint. Consulte POST /api/2.0/serving-endpoint para os parâmetros de configuração do endpoint.
O exemplo a seguir cria um endpoint que serve a terceira versão do modelo my-ads-model
que está registrado no registro de modelo Unity Catalog. Você deve fornecer o nome completo do modelo, incluindo o catálogo principal e o esquema, como catalog.schema.example-model
.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.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:
Tipos de carga de trabalho de GPU
A implementação da GPU é compatível com as seguintes versões do 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
em sua configuração endpoint durante a criação doendpoint ou como uma atualização da configuração endpoint usando o API. Para configurar seu endpoint para cargas de trabalho de GPU com a UI de serviço, selecione o tipo de GPU desejado no tipo de computação dropdown.
{
"served_entities": [{
"entity_name": "catalog.schema.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 suportados.
Tipo de carga de trabalho da GPU | Instância de GPU | Memória GPU |
---|---|---|
| L4 |
Modificar um endpoint de modelo personalizado
Depois de ativar um modelo personalizado endpoint, 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 fornecendo tráfego de previsão. Enquanto houver uma atualização em andamento, outra atualização não poderá ser feita. No entanto, você pode cancelar uma atualização em andamento na Serving UI.
- Serving UI
- REST API
- MLflow Deployments SDK
Depois que o senhor habilitar um modelo endpoint, selecione Edit endpoint para modificar a configuração compute do seu endpoint.
Você pode fazer o seguinte:
- Escolha entre alguns tamanhos de carga de trabalho, e a autoescala é configurada automaticamente dentro do tamanho da carga de trabalho.
- Especifique se o site endpoint deve ser reduzido a zero quando não estiver em uso.
- Modifique a porcentagem de tráfego a ser direcionada para seu modelo atendido.
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.
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 MLflow Deployments SDK usa os mesmos parâmetros que o REST API, 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 modelo endpoint
Para pontuar seu modelo, envie solicitações para o servindo modelo endpoint.
- Consulte Ponto de extremidade de serviço de consulta para modelos personalizados.
- Consulte Usar modelos de base.
Recurso adicional
- gerenciar servindo o modelo endpoint.
- Modelos externos no Mosaic AI Model Serving.
- Se preferir usar Python, o senhor pode usar o Python SDK de serviço em tempo real da Databricks.
Notebook exemplos
O Notebook a seguir inclui diferentes Databricks modelos registrados que o senhor pode usar para começar a trabalhar com o endpoint modelo servindo. Para obter exemplos adicionais, consulte o tutorial: implantar e consultar um modelo personalizado.
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 siga as etapas do fluxo de trabalho da interface do usuário para servir o modelo.