Criar um endpoint de modelo de serviço personalizado
Visualização
O Mosaic AI Model Serving está em Public Preview e é compatível com os sites us-east1
e us-central1
.
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.
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 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 registrados 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 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 endpoint deve escalar para zero quando não estiver em uso.
Clique em Criar. A página Servindo endpoints aparece com o estado do endpoint de veiculação mostrado como Não pronto.
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 Unity Catalog 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, 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"
}
]
}
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": "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 Unity Catalog registro de modelo. 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 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": [{
"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 com suporte.
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 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 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 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.