Share via


Habilitar tabelas de inferência em pontos de extremidade de modelo de serviço usando a API

Importante

Esse recurso está em uma versão prévia.

Este artigo explica como usar a API do Databricks para habilitar tabelas de inferência para um modelo que fornece de ponto de extremidade. Para obter informações gerais sobre como usar tabelas de inferência, incluindo como habilitá-las usando a interface do usuário do Databricks, consulte tabelas de inferência para modelos de monitoramento e depuração.

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

O proprietário das tabelas de inferência é o usuário que criou o ponto de extremidade. Todas as ACLs (listas de controle de acesso) na tabela seguem as permissões padrão do Catálogo do Unity e podem ser modificadas pelo proprietário da tabela.

Requisitos

  • Seu workspace precisa estar com o Catálogo do Unity habilitado.
  • Para habilitar tabelas de inferência em um ponto de extremidade, o criador do ponto de extremidade e o modificador precisam das seguintes permissões:
    • Permissão PODE GERENCIAR no ponto de extremidade.
    • Permissões USE CATALOG no catálogo especificado.
    • Permissões USE SCHEMA no esquema especificado.
    • Permissões CREATE TABLE no esquema.

Habilitar tabelas de inferência na criação do ponto de extremidade usando a API

Você pode habilitar tabelas de inferência para um ponto de extremidade durante a criação do ponto de extremidade usando a API. Para obter instruções sobre como criar um ponto de extremidade, consulte Criar modelo personalizado que atende pontos de extremidade.

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

  • O catálogo do Unity Catalog: cadeia de caracteres que representa o catálogo para armazenar a tabela
  • O esquema do Catálogo do Unity: cadeia de caracteres que representa o esquema para armazenar a tabela
  • (opcional) Prefixo da tabela: cadeia de caracteres usada como prefixo para o nome da tabela de inferência. Se isso não for especificado, o nome do ponto de extremidade será usado.
  • (opcional) habilitado: valor booleano usado para habilitar ou desabilitar tabelas de inferência. Isso é true por padrão.

Depois de especificar um catálogo, esquema e, como opção, um prefixo de tabela, uma tabela é criada em <catalog>.<schema>.<table_prefix>_payload. Essa tabela cria automaticamente uma tabela gerenciada do Catálogo do Unity. O proprietário da tabela é o usuário que cria o ponto de extremidade.

Observação

Não há suporte para a especificação de uma tabela existente, pois a tabela de inferência é sempre criada automaticamente na criação de ponto de extremidade ou atualizações de ponto de extremidade.

Aviso

A tabela de inferência poderá ficar corrompida se você fizer o seguinte:

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

Nesse caso, o auto_capture_config do status do ponto de extremidade mostra um estado FAILED para a tabela de conteúdo. Se isso acontecer, você deverá criar um novo ponto de extremidade para continuar usando tabelas de inferência.

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

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 tem essa aparência:

{
  "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 nas tabelas de inferência tiver sido habilitado, aguarde até que o ponto de extremidade esteja pronto. Então você pode começar a chamá-lo.

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

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

  • Executando OPTIMIZE, ANALYZE e VACUUM na tabela.
  • Exclusão de dados antigos não utilizados.

Se você não especificar um auto_capture_config, por padrão, a configuração de configurações da versão de configuração anterior será reutilizada. Por exemplo, se as tabelas de inferência já estiverem habilitadas, as mesmas configurações serão usadas na próxima atualização de ponto de extremidade ou se as tabelas de inferência tiverem sido desabilitadas, elas continuarão sendo 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
  }
}

Habilitar tabelas de inferência em um ponto de extremidade existente usando a API

Você também pode habilitar tabelas de inferência em um ponto de extremidade existente usando API. Depois que as tabelas de inferência estiverem habilitadas, continue especificando o mesmo corpo auto_capture_config em futuras chamadas de API de ponto de extremidade de atualização para continuar usando tabelas de inferência.

Observação

Não há suporte para alterar o local da tabela depois de habilitar 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 habilitar novamente uma tabela de inferência desabilitada, siga as instruções em Habilitar tabelas de inferência em um ponto de extremidade existente. Você pode usar a mesma tabela ou especificar uma nova tabela.

Próximas etapas

Depois de habilitar as tabelas de inferência, você pode monitorar os modelos atendidos no serviço de modelo do ponto de extremidade com o Monitoramento do Databricks Lakehouse. Para obter detalhes, confira Fluxo de trabalho: monitorar o desempenho do modelo usando tabelas de inferência.