Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta página explica como o Repositório de Recursos do Databricks funciona e define termos importantes.
Como funciona a engenharia de recursos no Databricks?
O fluxo de trabalho típico de machine learning usando a engenharia de recursos no Databricks segue este caminho:
Escreva código para converter dados brutos em recursos e crie um DataFrame do Spark contendo os recursos desejados.
Crie uma tabela Delta no Catálogo do Unity que tenha uma chave primária.
Treine e registre um modelo usando a tabela de recursos. Quando você faz isso, o modelo armazena as especificações dos recursos usados para treinamento. Quando o modelo é usado para inferência, ele une automaticamente recursos das tabelas de recursos apropriadas.
Registrar modelo no Registro de Modelo.
Agora você pode usar o modelo para fazer previsões sobre novos dados. Para casos de uso em lotes, o modelo recupera automaticamente os recursos necessários do Repositório de Recursos.
Para casos de uso de serviço em tempo real, publique os recursos em um repositório de recursos online.
Durante a inferência, o endpoint do serviço do modelo usa automaticamente os IDs de entidade nos dados de solicitação para consultar features computadas previamente do repositório online e pontuar o modelo de ML. O ponto de extremidade usa o Catálogo do Unity para resolver a linhagem do modelo servido para os recursos usados para treinar esse modelo e rastreia a linhagem para o repositório de recursos online para acesso em tempo real.
Glossário do repositório de recursos
Repositório de recursos
Um repositório de recursos é um repositório centralizado que permite que os cientistas de dados encontrem e compartilhem recursos. O uso de um repositório de recursos também garante que o código usado para calcular valores de recursos seja o mesmo durante o treinamento de modelo e quando o modelo é usado para inferência. O funcionamento do feature store no Databricks depende de o seu workspace estar habilitado para o Unity Catalog ou não.
- Em workspaces habilitados para o Catálogo do Unity, você pode usar qualquer tabela Delta no Catálogo do Unity que inclua uma restrição de chave primária como uma tabela de recursos.
- Workspaces não habilitados para o Unity Catalog que foram criados antes de 19 de agosto de 2024, às 16:00:00 (UTC), têm acesso ao repositório legado de recursos do workspace.
O aprendizado de máquina usa os dados existentes para criar um modelo e prever resultados futuros. Em quase todos os casos, os dados brutos exigem pré-processamento e transformação antes que possam ser usados para criar um modelo. Esse processo é chamado de engenharia de recursos e as saídas dele são chamadas de recursos: os blocos de construção do modelo.
O desenvolvimento de recursos é complexo e demorado. Uma complicação adicional é que, para o aprendizado de máquina, os cálculos de recursos precisam ser feitos para o treinamento do modelo e depois novamente, quando o modelo é usado para fazer previsões. Essas implementações podem não ser feitas pela mesma equipe ou usando o mesmo ambiente de código, o que pode levar a atrasos e erros. Além disso, equipes diferentes em uma organização geralmente têm necessidades de recursos semelhantes, mas podem não estar cientes do trabalho que outras equipes fizeram. Um repositório de recursos foi projetado para resolver esses problemas.
Tabelas de recursos
Os recursos são organizados como tabelas de recursos. Cada tabela deve ter uma chave primária e é apoiada por uma tabela Delta e metadados adicionais. Os metadados da tabela de recursos acompanham as fontes de dados a partir das quais uma tabela foi gerada e os notebooks e trabalhos que criaram ou escreveram na tabela.
Com o Databricks Runtime 13.3 LTS e versões superiores, se o workspace estiver habilitado para o Catálogo do Unity, você poderá usar qualquer tabela Delta no Catálogo do Unity com uma chave primária como uma tabela de recursos. Consulte Trabalhar com tabelas de recursos no Catálogo do Unity. As tabelas de recursos armazenadas no Repositório de Recursos do Workspace local são chamadas de "Tabelas de recursos do workspace". Consulte Trabalhar com tabelas de recursos no Repositório de Recursos do Workspace (herdado).
Os recursos em uma tabela de recursos normalmente são computados e atualizados usando uma função de computação comum.
Você pode publicar uma tabela de recursos em um repositório online para inferência de modelo em tempo real.
FeatureLookup
Muitos modelos diferentes podem utilizar os recursos de uma determinada tabela específica, e nem todos os modelos precisarão de todos os recursos. Para treinar um modelo utilizando recursos, você deve criar um FeatureLookup para cada tabela em destaque.
FeatureLookup especifica quais recursos da tabela devem ser usados e também define as chaves a serem usadas para a junção da tabela em destaque com os dados do rótulo passados para create_training_set.
O diagrama ilustra como funciona um FeatureLookup. Neste exemplo, você deseja treinar um modelo utilizando os recursos de duas tabelas em destaque, customer_features e product_features. Você deve criar um FeatureLookup para cada tabela em destaque, especificando o nome da tabela, os recursos (colunas) a serem selecionados na tabela e a chave de pesquisa a ser utilizada na junção de recursos para criar um conjunto de dados de treinamento.
Em seguida, você chama create_training_set, também mostrado no diagrama. Essa chamada de API especifica o DataFrame que contém os dados brutos de treinamento (label_df), o FeatureLookups a ser usado e label, uma coluna que contém a verdade fundamental. Os dados de treinamento devem conter coluna(s) correspondente(s) a cada uma das chaves primárias das tabelas de recursos. Os dados nas tabelas em destaque são ingressados no DataFrame de entrada de acordo com essas chaves. O resultado é mostrado no diagrama como o "Conjunto de dados de treinamento".
FeatureFunction
Um recurso pode depender de informações que só estão disponíveis no momento da inferência. Você pode especificar uma FeatureFunction que combina entradas em tempo real com valores de recurso para calcular valores de recursos atualizados. Um exemplo é mostrado no diagrama. Para obter detalhes, consulte a computação de recursos sob demanda.
Conjunto de treinamento
Um conjunto de treinamento consiste em uma lista de recursos e um DataFrame que contém dados de treinamento brutos, rótulos e chaves primárias por meio dos quais pesquisar recursos. Você cria o conjunto de treinamento especificando os recursos a serem extraídos do Repositório de recursos e fornece o conjunto de treinamento como entrada durante o treinamento do modelo.
Consulte Criar um conjunto de dados de treinamento para obter um exemplo de como criar e usar um conjunto de treinamento.
Ao treinar e registrar um modelo usando a Engenharia de Recursos no Catálogo do Unity, você pode exibir a linhagem do modelo no Gerenciador de Catálogos. Tabelas e funções que foram usadas para criar o modelo são automaticamente acompanhadas e exibidas. Consulte Governança e linhagem de recursos.
FeatureSpec
Um FeatureSpec é uma entidade do Unity Catalog que define um conjunto reutilizável de recursos e funções para disponibilização.
FeatureSpecs combinam FeatureLookups de tabelas de características e FeatureFunctions em uma única unidade lógica que pode ser usada no treinamento de modelo ou implementada usando endereços de serviço de características.
FeatureSpecs são armazenados e gerenciados pelo Unity Catalog, com acompanhamento completo de linhagem para suas tabelas de funcionalidades offline e funções constituintes. Isso permite governança, descoberta e reutilização em diferentes modelos e aplicativos.
Você pode usar o FeatureSpec das seguintes maneiras:
- Crie um endpoint de serviço de recurso usando a API Python ou a API REST. Consulte pontos de extremidade de Servição de Recurso ou implante diretamente usando a IU de Servição de Modelo. Para aplicativos de alto desempenho, habilite a otimização de rota.
- Utilize no treinamento de modelos fazendo referência ao
FeatureSpecemcreate_training_set.
Um FeatureSpec sempre faz referência às tabelas de recursos offline, mas elas devem ser publicadas em um repositório online para cenários de serviço em tempo real.
Tabelas de recursos de série temporal (pesquisas pontuais)
Os dados usados para treinar um modelo geralmente apresentam dependências de tempo internas. Ao compilar o modelo, você deve levar em consideração apenas valores de recurso até o momento do valor de destino observado. Se você treinar um modelo usando características baseadas em dados medidos após o carimbo de data/hora do valor de destino, o desempenho do modelo poderá sofrer.
As tabelas de características de séries temporais incluem uma coluna de carimbo de data/hora que garante que cada linha no conjunto de dados de treinamento represente os valores de característica mais recentes conhecidos no momento do carimbo de data/hora da linha. Você deve usar tabelas de recursos de série temporal sempre que os valores de recurso mudarem ao longo do tempo, por exemplo, com dados de série temporal, dados baseados em eventos ou dados agregados por tempo.
Ao criar uma tabela de recursos de série temporal, especifique colunas relacionadas ao tempo em suas chaves primárias para serem colunas de série temporal usando o timeseries_columns argumento (para Engenharia de Recursos no Catálogo do Unity) ou o timestamp_keys argumento (para o Repositório de Recursos do Workspace). Isso permite pesquisas pontuais ao usar create_training_set ou score_batch. O sistema executa uma união de carimbo de data/hora usando o timestamp_lookup_key especificado por você.
Se você não usar o timeseries_columns argumento ou o timestamp_keys argumento e designar apenas uma coluna de série temporal como uma coluna de chave primária, o Repositório de Recursos não aplicará lógica pontual à coluna de série temporal durante as junções. Em vez disso, ele corresponderá apenas a linhas com uma correspondência de tempo exata em vez de todas as linhas antes do carimbo de data/hora.
Repositório offline
O repositório de recursos offline é usado para descoberta de recursos, treinamento de modelo e inferência de lote. Ele contém tabelas de recursos materializadas como tabelas Delta.
Repositório de recursos online
O Repositório de Recursos do Databricks Online é uma solução escalonável e de alto desempenho para fornecer dados de recursos a aplicativos online e modelos de machine learning em tempo real.
Alimentado pelo Databricks Lakebase, ele fornece acesso de baixa latência aos dados de recursos em alta escala, mantendo a governança, a linhagem e a consistência com suas tabelas de recursos offline.
Você pode provisionar Lojas Online na plataforma Lakebase sem servidor. As APIs permitem gerenciar instâncias e réplicas de leitura e dimensionar instâncias conforme necessário. Você pode usar APIs convenientes para publicar tabelas do Catálogo do Unity em lojas online. Essas tabelas também são entidades do Catálogo do Unity que rastreiam nativamente a linhagem para as tabelas de origem. O Databricks também dá suporte a lojas online de terceiros.
Transmissão ao vivo
Além das gravações em lote, o Repositório de recursos do Databricks dá suporte a streaming. Você pode gravar valores de recursos em uma tabela de recursos a partir de uma fonte de streaming, e o código de computação de recursos pode utilizar o streaming estruturado para transformar fluxos de dados brutos em recursos.
Você também pode transmitir tabelas de recursos a partir do repositório offline para um repositório online.
Empacotamento de modelo
Ao treinar um modelo de machine learning usando Engenharia de Características no Unity Catalog ou no Workspace Feature Store e fizer o registro usando o método de cliente log_model(), o modelo mantém referências a essas características. No momento da inferência, o modelo pode opcionalmente recuperar valores dos recursos. O chamador só precisa fornecer a chave primária dos recursos usados no modelo (por exemplo, user_id), e o modelo recupera todos os valores dos recursos necessários.
Na inferência de lote, os valores de recursos são recuperados do repositório offline e associados a novos dados antes da pontuação. Na inferência em tempo real, os valores de recursos são recuperados do repositório online.
Para empacotar um modelo com metadados de recursos, use FeatureEngineeringClient.log_model (para engenharia de recursos no Unity Catalog) ou FeatureStoreClient.log_model (para Repositório de Recursos do Workspace).