Habilite tabelas de inferência no endpoint do modelo interativo usando a API

Visualização

Esse recurso está em visualização pública.

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

Você pode ativar tabelas de inferência ao criar um novo endpoint ou em um endpoint existente. A Databricks recomenda que você 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 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 site endpoint quanto o modificador devem ter permissão para gerenciar o site 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 tabelas de inferência na criação do endpoint usando a API

O senhor 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 endpoints de modelo de serviço personalizado.

Na API, o corpo da solicitação tem um auto_capture_config para especificar:

  • O catálogo do Unity Catalog: strings que representam o catálogo para armazenar a tabela

  • 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. Se isso não for especificado, o nome endpoint será usado.

  • (opcional) enabled: Valor Boolean usado para habilitar ou desabilitar tabelas de inferência. Isso é verdade por default.

Depois de especificar um catálogo, um esquema e, opcionalmente, um prefixo de tabela, é criada uma tabela 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.

Observação

Não há suporte para a especificação de uma tabela existente, pois a tabela de endpoint é sempre criada automaticamente na criação ou nas atualizações endpoint .

Aviso

A tabela de inferência poderá ser 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 do endpoint mostra um estado FAILED para a tabela de carga útil. Se isso acontecer, você deverá criar um novo endpoint para continuar usando tabelas de inferência.

O exemplo a seguir demonstra como habilitar 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 é semelhante a:

{
  "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 tabelas de inferência tiver sido habilitado, aguarde até que seu endpoint esteja pronto. Então você pode começar a ligar.

Depois de criar uma tabela de inferência, a evolução do esquema e a adição de dados deverão ser tratadas pelo sistema.

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

  • Executando OPTIMIZE, ANALYZE e VACUUM na tabela.

  • Excluindo dados antigos não utilizados.

Se você não especificar um auto_capture_config, por default , a configuração da versão de configuração anterior será reutilizada. Por exemplo, se as tabelas de inferência já estavam habilitadas, as mesmas configurações serão usadas na próxima atualização do endpoint ou se as tabelas de inferência foram desabilitadas, elas continuarão desabilitadas.

{
  "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 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 chamadas de API de endpoint de atualização para continuar usando tabelas de inferência.

Observação

Não há suporte para alterar o local da tabela após ativar 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"
  }
}

Desabilitar tabelas de inferência

Ao desabilitar tabelas de inferência, não é necessário especificar catálogo, esquema ou prefixo de 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. O senhor pode usar a mesma tabela ou especificar uma nova tabela.

Próximas etapas

Depois de ativar as tabelas de inferência, pode monitorizar os modelos servidos no seu endpoint do modelo instalado com Databricks Lakehouse Monitoring. Para obter detalhes, consulte fluxo de trabalho: Monitorar o desempenho do modelo usando tabelas de inferência.