Partilhar via


Visão geral da loja de funcionalidades e glossário

Esta página explica como funciona o Databricks Feature Store e define termos importantes.

Como funciona a engenharia de recursos no Databricks?

O fluxo de trabalho típico de aprendizado de máquina usando engenharia de recursos no Databricks segue este caminho:

  1. Escreva código para converter dados brutos em recursos e crie um Spark DataFrame contendo os recursos desejados.

  2. Crie uma tabela Delta no Unity Catalog que tenha uma chave primária.

  3. 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.

  4. Modelo de registo no Registo Modelo.

    Agora você pode usar o modelo para fazer previsões sobre novos dados. Para casos de uso em lote, o modelo recupera automaticamente os recursos necessários do Feature Store.

  5. Para casos de uso de serviço em tempo real, publique os recursos em uma loja de recursos online.

  6. No momento da inferência, o modelo que serve o ponto de extremidade usa automaticamente os IDs de entidade nos dados da solicitação para pesquisar recursos pré-computados da loja online para pontuar o modelo de ML. O ponto de extremidade usa o Unity Catalog para resolver a linhagem do modelo servido para os recursos usados para treinar esse modelo e rastreia a linhagem até a loja de recursos on-line para acesso em tempo real.

Fluxo do Repositório de Recursos para modelos de aprendizado de máquina que são servidos.

Glossário da loja de recursos

Central de funcionalidades

Um repositório de recursos é um repositório centralizado que permite que 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 do modelo e quando o modelo é usado para inferência. Como o armazenamento de recursos no Databricks funciona depende se seu espaço de trabalho está habilitado para o Unity Catalog ou não.

  • Em espaços de trabalho habilitados para o Unity Catalog, você pode usar qualquer tabela Delta no Unity Catalog que inclua uma restrição de chave primária como uma tabela de recursos.
  • Os espaços de trabalho não habilitados para o Catálogo Unity que foram criados antes de 19 de agosto de 2024, 16:00:00 (UTC) têm acesso ao legado Workspace Feature Store.

O aprendizado de máquina usa dados existentes para criar um modelo para prever resultados futuros. Em quase todos os casos, os dados brutos requerem pré-processamento e transformação antes de poderem ser usados para construir um modelo. Esse processo é chamado de engenharia de recursos, e as saídas desse processo são chamadas de recursos - os blocos de construção do modelo.

O desenvolvimento de funcionalidades é 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, 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 terão 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 características

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 funcionalidades rastreiam as fontes de dados das quais uma tabela foi gerada e os notebooks e trabalhos que a criaram ou escreveram nela.

Com o Databricks Runtime 13.3 LTS e superior, se o seu espaço de trabalho estiver habilitado para o Unity Catalog, você poderá usar qualquer tabela Delta no Unity Catalog com uma chave primária como uma tabela de recursos. Consulte Trabalhar com tabelas de funcionalidades no Unity Catalog. As tabelas de recursos armazenadas no Repositório de Recursos de Espaço de Trabalho local são chamadas de "Tabelas de recursos de espaço de trabalho". Veja Trabalhar com tabelas de funcionalidades no Armazenamento de Funcionalidades do Espaço de Trabalho (legado).

Os recursos em uma tabela de recursos são normalmente calculados e atualizados usando uma função de computação comum.

Você pode publicar uma tabela de recursos em uma loja online para inferência de modelo em tempo real.

FeatureLookup

Muitos modelos diferentes podem usar recursos de uma tabela de recursos específica, e nem todos os modelos precisarão de todos os recursos. Para treinar um modelo usando recursos, crie um FeatureLookup para cada tabela de recursos. O FeatureLookup especifica quais recursos usar da tabela e também define as chaves a serem usadas para unir a tabela de recursos aos dados do rótulo passados para create_training_set.

O diagrama ilustra como um FeatureLookup funciona. Neste exemplo, pretende treinar um modelo usando características de duas tabelas de características, customer_features e product_features. Você cria um FeatureLookup para cada tabela de recursos, especificando o nome da tabela, os recursos (colunas) a serem selecionados na tabela e a chave de pesquisa a ser usada quando os recursos de associação criarem um conjunto de dados de treinamento.

Em seguida, você chama create_training_set, também mostrado no diagrama. Esta chamada de API especifica o DataFrame que contém os dados de treinamento brutos (label_df), o FeatureLookups a ser usado e label, uma coluna que contém a verdade básica. Os dados de treinamento devem conter coluna(s) correspondente a cada uma das chaves primárias das tabelas de características. Os dados nas tabelas de características são unidos ao DataFrame de entrada por estas chaves. O resultado é mostrado no diagrama como o "Conjunto de dados de treinamento".

Diagrama de FeatureLookup

FeatureFunction

Um recurso pode depender de informações que só estão disponíveis no momento da inferência. Você pode especificar um FeatureFunction que combine entradas em tempo real com valores de recurso para calcular valores de recurso atualizados. Um exemplo é mostrado no diagrama. Para obter detalhes, consulte Computação de recursos sob demanda.

Diagrama Função de Característica

Conjunto de treino

Um conjunto de treinamento consiste em uma lista de recursos e um DataFrame contendo dados brutos de treinamento, rótulos e chaves primárias pelos quais pesquisar recursos. Você cria o conjunto de treinamento especificando recursos a serem extraídos do Feature Store 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 Unity, você pode exibir a linhagem do modelo no Catalog Explorer. As tabelas e funções que foram usadas para criar o modelo são automaticamente rastreadas e exibidas. Consulte Governança e linhagem de funcionalidades.

FeatureSpec

A FeatureSpec é uma entidade do Unity Catalog que define um conjunto reutilizável de recursos e funções para servir. FeatureSpecs combina FeatureLookups de tabelas de recursos e FeatureFunctions em uma única unidade lógica que pode ser usada no treinamento de modelos ou servida usando pontos de extremidade de serviço de recursos.

FeatureSpecs são armazenados e gerenciados pelo Unity Catalog, com rastreamento completo de linhagem para suas tabelas e funções de recursos offline constituintes. Isso permite governança, capacidade de descoberta e reutilização em diferentes modelos e aplicativos.

Você pode usar um FeatureSpec das seguintes maneiras:

  • Crie um ponto de extremidade de serviço de recursos usando a API Python ou a API REST. Consulte Pontos de extremidade de serviço de recursos ou implante diretamente usando a interface do usuário de serviço de modelo. Para aplicações de alto desempenho, habilite a otimização de rotas.
  • Uso no treinamento do modelo referenciando o FeatureSpec in create_training_set.

A FeatureSpec sempre faz referência às tabelas de recursos offline, mas elas devem ser publicadas em uma loja online para cenários de atendimento em tempo real.

Tabelas de características de séries temporais (consultas pontuais no tempo)

Os dados usados para treinar um modelo geralmente têm dependências de tempo incorporadas nele. Ao criar o modelo, deve considerar apenas os valores das características até o momento do valor alvo observado. Se treinares em características com base em dados medidos após a marca temporal do valor alvo, o desempenho do modelo poderá ser prejudicado.

As tabelas de características de séries temporais incluem uma coluna de carimbo de data/hora que garante que cada linha nos dados de treino represente os valores de características conhecidos mais recentes de acordo com o carimbo de data/hora da linha. Você deve usar tabelas de recursos de séries temporais sempre que os valores de recursos mudarem ao longo do tempo, por exemplo, com dados de séries temporais, dados baseados em eventos ou dados agregados por tempo.

Ao criar uma tabela de recursos de série temporal, você especifica colunas relacionadas ao tempo em suas chaves primárias para serem colunas de séries temporais usando o timeseries_columns argumento (para Engenharia de Recursos no Catálogo Unity) ou o timestamp_keys argumento (para Repositório de Recursos de Espaço de Trabalho). Isso permite pesquisas em ponto no tempo quando se usa create_training_set ou score_batch. O sistema executa uma junção por carimbo de data/hora específico, usando o timestamp_lookup_key que for indicado.

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 Feature Store não aplicará lógica point-in-time à coluna de série temporal durante as junções. Em vez disso, ele alinha-se apenas com linhas que têm uma correspondência de hora exata, em vez de alinhar-se com todas as linhas anteriores ao timestamp.

Loja offline

O repositório de recursos offline é usado para descoberta de recursos, treinamento de modelos e inferência em lote. Contém tabelas de funcionalidades materializadas como tabelas Delta.

Loja de funcionalidades online

A Databricks Online Feature Store é uma solução escalável e de alto desempenho para fornecer dados de recursos para aplicativos on-line e modelos de aprendizado de máquina em tempo real.

Desenvolvido pelo Databricks Lakebase, ele fornece acesso de baixa latência a dados de recursos em alta escala, mantendo governança, linhagem e 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 Unity em lojas online. Essas tabelas também são entidades do Catálogo Unity que rastreiam nativamente a linhagem para as tabelas de origem. O Databricks também suporta lojas online de terceiros.

Serviço de streaming

Além de suportar gravações em lote, o Databricks Feature Store suporta 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 da loja offline para uma loja online.

Modelo de embalagem

Quando se treina um modelo de aprendizagem automática usando Engenharia de Atributos no Unity Catalog ou no Workspace Feature Store e se regista utilizando o método do cliente log_model(), o modelo retém referências a esses atributos. No momento da inferência, o modelo pode, opcionalmente, recuperar valores de feição automaticamente. 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 de recurso necessários.

Na inferência em lote, os valores de características são recuperados do repositório offline e unidos aos novos dados antes da avaliação. Na inferência em tempo real, os valores das características são recuperados da loja online.

Para empacotar um modelo com metadados de recursos, use FeatureEngineeringClient.log_model (para Engenharia de Recursos no Catálogo Unity) ou FeatureStoreClient.log_model (para o Repositório de Recursos do Espaço de Trabalho).