Habilite tabelas de inferência no endpoint servindo modelo usando o API
Visualização
Esse recurso está em Public Preview.
Este artigo descreve os tópicos que se aplicam às tabelas de inferência para modelos personalizados. Para modelos externos ou cargas de trabalho de taxa de transferência de provisionamento, use tabelas de inferência habilitadas peloAI Gateway.
Este artigo explica como usar o Databricks API para habilitar tabelas de inferência para um modelo de serviço endpoint. Para obter informações gerais sobre o uso de tabelas de inferência, incluindo como ativá-las usando a UI Databricks, consulte Tabelas de inferência para modelos de monitoramento e depuração.
O senhor pode ativar as tabelas de inferência ao criar um novo endpoint ou em um endpoint existente. Databricks recomenda que o senhor crie o endpoint com uma entidade de serviço para que a tabela de inferência não seja afetada se o usuário que criou o endpoint for removido do workspace.
O proprietário das tabelas de inferência é o usuário que criou o site endpoint. Todas as listas de controle de acesso (ACLs) na tabela seguem as permissões padrão do Unity Catalog e podem ser modificadas pelo proprietário da tabela.
Requisitos
- Seu workspace deve ter o Unity Catalog habilitado.
- Tanto o criador do endpoint quanto o modificador devem ter permissão para gerenciar o endpoint. Consulte Listas de controle de acesso.
- Tanto o criador do site endpoint quanto o modificador devem ter as seguintes permissões em Unity Catalog:
USE CATALOG
permissões no catálogo especificado.USE SCHEMA
permissões no esquema especificado.CREATE TABLE
permissões no esquema.
Habilite as tabelas de inferência na criação do site endpoint usando o API
O senhor pode ativar tabelas de inferência para um endpoint durante a criação do endpoint usando a API. Para obter instruções sobre como criar um endpoint, consulte Criar endpoint de modelo de serviço personalizado.
Na API, o corpo da solicitação tem um auto_capture_config
para especificar:
- O catálogo Unity Catalog: cadeias de caracteres que representam o catálogo para armazenar a tabela
- O esquema Unity Catalog: cadeias de caracteres que representam o esquema para armazenar a tabela
- (opcional) prefixo da tabela: cadeias de caracteres usadas como prefixo para o nome da tabela de inferência. Se isso não for especificado, será usado o nome do endpoint.
- (opcional) enabled: Valor booleano usado para ativar ou desativar as tabelas de inferência. Isso é verdade em default.
Depois de especificar um catálogo, um esquema e, opcionalmente, um prefixo de tabela, uma tabela é criada em <catalog>.<schema>.<table_prefix>_payload
. Essa tabela cria automaticamente uma tabela gerenciarUnity Catalog. O proprietário da tabela é o usuário que cria o site endpoint.
Não há suporte para a especificação de uma tabela existente, pois a tabela de inferência é sempre criada automaticamente na criação do site endpoint ou nas atualizações do site endpoint.
A tabela de inferência pode ficar corrompida se você fizer o seguinte:
- Altere o esquema da tabela.
- Altere o nome da tabela.
- Exclua a tabela.
- Perder permissões para o catálogo ou esquema do Unity Catalog.
Nesse caso, o auto_capture_config
do status endpoint mostra um estado FAILED
para a tabela de carga útil. Se isso acontecer, o senhor deverá criar um novo endpoint para continuar usando as tabelas de inferência.
O exemplo a seguir demonstra como ativar as tabelas de inferência durante a criação do endpoint.
POST /api/2.0/serving-endpoints
{
"name": "feed-ads",
"config":
{
"served_entities": [
{
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config":
{
"catalog_name": "ml",
"schema_name": "ads",
"table_name_prefix": "feed-ads-prod"
}
}
}
A resposta parece ser:
{
"name": "feed-ads",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "NOT_READY",
"config_update": "IN_PROGRESS"
},
"pending_config": {
"start_time": 1666718879000,
"served_entities": [
{
"name": "ads1-1",
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true,
"state": {
"deployment": "DEPLOYMENT_CREATING",
"deployment_state_message": "Creating"
},
"creator": "customer@example.com",
"creation_timestamp": 1666829055000
}
],
"config_version": 1,
"traffic_config": {
"routes": [
{
"served_model_name": "ads1-1",
"traffic_percentage": 100
}
]
},
"auto_capture_config": {
"catalog_name": "ml",
"schema_name": "ads",
"table_name_prefix": "feed-ads-prod",
"state": {
"payload_table": {
"name": "feed-ads-prod_payload"
}
},
"enabled": true
}
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
Depois que o registro em log para tabelas de inferência tiver sido ativado, aguarde até que o endpoint esteja pronto. Então, o senhor pode começar a chamá-lo.
Depois que o senhor cria uma tabela de inferência, a evolução do esquema e a adição de dados devem ser tratadas pelo sistema.
As operações a seguir não afetam a integridade da tabela:
- Executar OPTIMIZE, ANALYZE e vacuum na tabela.
- Excluindo dados antigos não utilizados.
Se o senhor não especificar um auto_capture_config
, em default a configuração das definições da versão anterior da configuração será reutilizada. Por exemplo, se as tabelas de inferência já estiverem ativadas, as mesmas configurações serão usadas na próxima atualização do site endpoint ou, se as tabelas de inferência estiverem desativadas, elas continuarão desativadas.
{
"served_entities": [
{
"name": "current",
"entity_name": "model-A",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config": {
"enabled": false
}
}
Habilitar tabelas de inferência em um endpoint existente usando a API
O senhor também pode ativar tabelas de inferência em um endpoint existente usando a API. Depois que as tabelas de inferência forem ativadas, continue especificando o mesmo corpo auto_capture_config
em futuras atualizações endpoint API chamadas para continuar usando as tabelas de inferência.
Não há suporte para alterar a localização da tabela depois de ativar as tabelas de inferência.
PUT /api/2.0/serving-endpoints/{name}/config
{
"served_entities": [
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
},
{
"name":"challenger",
"entity_name":"model-B",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"traffic_config":{
"routes": [
{
"served_model_name":"current",
"traffic_percentage":"50"
},
{
"served_model_name":"challenger",
"traffic_percentage":"50"
}
]
},
"auto_capture_config":{
"catalog_name": "catalog",
"schema_name": "schema",
"table_name_prefix": "my-endpoint"
}
}
Desativar tabelas de inferência
Ao desativar as tabelas de inferência, você não precisa especificar o prefixo do catálogo, do esquema ou da tabela. O único campo obrigatório é enabled: false
.
POST /api/2.0/serving-endpoints
{
"name": "feed-ads",
"config":{
"served_entities": [
{
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config":{
"enabled": false
}
}
}
Para reativar uma tabela de inferência desativada, siga as instruções em Ativar tabelas de inferência em um endpoint existente. Você pode usar a mesma tabela ou especificar uma nova tabela.
Próximas etapas
Depois de ativar as tabelas de inferência, o senhor pode monitorar os modelos servidos no seu modelo endpoint com o monitoramento Databricks lakehouse. Para obter detalhes, consulte fluxo de trabalho: Monitorar o desempenho do modelo usando tabelas de inferência.