Pular para o conteúdo principal

Habilite as tabelas de inferência no endpoint do modelo de serviço usando a API

importante

Esta documentação foi descontinuada e pode não ser atualizada. O produto, serviço ou tecnologia mencionados neste conteúdo não são mais suportados.

Databricks recomenda tabelas de inferência habilitadas paraAI Gateway devido à sua disponibilidade em modelos personalizados, modelos de base e endpoints de atendimento de agentes. Consulte a seção "Migrando para tabelas de inferência do AI Gateway" para obter instruções sobre como migrar para tabelas de inferência habilitadas para AI Gateway.

Este artigo explica como usar a API Databricks para habilitar tabelas de inferência para um endpointde modelo de serviço. Para obter informações gerais sobre o uso de tabelas de inferência, incluindo como habilitá-las usando a UI Databricks , consulte Tabelas de inferência para modelos de monitoramento e depuração.

Você pode habilitar tabelas de inferência ao criar um novo endpoint ou em um endpoint existente. Databricks recomenda que você crie o endpoint com uma entidade de serviço para que a tabela de inferência não seja afetada caso o usuário que criou o endpoint seja removido do workspace.

O proprietário das tabelas de inferência é o usuário que criou o endpoint. Todas as listas de controle de acesso (ACLs) da tabela seguem as permissões padrão 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 a permissão "Pode gerenciar " o endpoint. Consulte Listas de controle de acesso.
  • Tanto o criador do endpoint quanto o modificador devem ter as seguintes permissões no Unity Catalog:
    • USE CATALOG permissões no catálogo especificado.
    • USE SCHEMA permissões no esquema especificado.
    • CREATE TABLE permissões no esquema.

Habilite tabelas de inferência na criação do endpoint usando a API.

Você pode habilitar 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 personalizado servindo modelo.

Na API, o corpo da requisição possui um auto_capture_config para especificar:

  • O catálogo Unity Catalog : strings que representam o catálogo onde a tabela será armazenada.
  • O esquema Unity Catalog : strings que representam o esquema para armazenar a tabela.
  • (opcional) Prefixo da tabela: strings usadas como prefixo para o nome da tabela de inferência. Caso não seja especificado, será utilizado o nome endpoint .
  • (opcional) ativado: Valor booleano usado para ativar ou desativar as tabelas de inferência. Isso é verdade por default.

Após especificar um catálogo, esquema e, opcionalmente, prefixo de tabela, uma tabela é criada em <catalog>.<schema>.<table_prefix>_payload. Esta tabela cria automaticamente uma tabela de gerenciamentoUnity Catalog. O proprietário da tabela é o usuário que cria o endpoint.

nota

Não é possível especificar uma tabela existente, pois a tabela de inferência é sempre criada automaticamente na criação ou atualização endpoint endpoint .

atenção

A tabela de inferência pode ser corrompida se você fizer qualquer uma das seguintes ações:

  • Alterar o esquema da tabela.
  • Alterar o nome da tabela.
  • Apague a tabela.
  • Perda de permissões para o catálogo ou esquema do Unity Catalog.

Neste caso, o auto_capture_config do status do endpoint mostra um estado FAILED para a tabela de carga útil. Caso isso aconteça, você deverá criar um novo endpoint para continuar usando as tabelas de inferência.

O exemplo a seguir demonstra como habilitar tabelas de inferência durante a criação endpoint .

Bash
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 se parece com:

JSON
{
"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"
}

Após habilitar o registro em tabelas de inferência, aguarde até que seu endpoint esteja pronto. Então você pode começar a ligar.

Após a criação de uma tabela de inferência, a evolução do esquema e a adição de dados devem ser gerenciadas pelo sistema.

As seguintes operações não afetam a integridade da tabela:

  • Executando OPTIMIZE, ANALYZE e vacuum na tabela.
  • Excluindo dados antigos e não utilizados.

Se você não especificar um auto_capture_config, por default a configuração da versão anterior 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 endpoint; caso contrário, se estiverem desativadas, elas permanecerão desativadas.

JSON
{
"served_entities": [
{
"name": "current",
"entity_name": "model-A",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config": {
"enabled": false
}
}

Habilite tabelas de inferência em um endpoint existente usando a API.

Você também pode habilitar tabelas de inferência em um endpoint existente usando a API. Após a ativação das tabelas de inferência, continue especificando o mesmo corpo auto_capture_config nas chamadas futuras da API do endpoint de atualização para continuar usando as tabelas de inferência.

nota

Alterar a localização da tabela após ativar as tabelas de inferência não é possível.

Bash
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, não é necessário especificar catálogo, esquema ou prefixo de tabela. O único campo obrigatório é enabled: false.

Bash
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óximos passos

Após habilitar as tabelas de inferência, você pode monitorar os modelos servidos no endpoint de servir modelo com o perfil de dados. Para obter detalhes, consulte fluxo de trabalho: Monitorar o desempenho do modelo usando tabelas de inferência.