Conceitos
Esta seção descreve conceitos para ajudá-lo a usar tabelas de recursos em Databricks.
Feature Store
Um armazenamento de recursos é um repositório centralizado que permite que o site data scientists encontre e compartilhe recursos e também garante que o mesmo código usado para compute os valores de recursos seja usado para treinamento e inferência de modelos. A implementação de um recurso store em Databricks depende do fato de o site workspace estar habilitado para Unity Catalog ou não. No espaço de trabalho habilitado para Unity Catalog, qualquer tabela Delta funciona como uma tabela de recurso e Unity Catalog funciona como um armazenamento de recurso - nenhuma etapa separada é necessária para registrar uma tabela como uma tabela de recurso. O espaço de trabalho não habilitado para Unity Catalog que foram criados antes de 19 de agosto de 2024, 4:00:00 PM (UTC) têm acesso ao recurso Store do espaço de trabalho legado.
O machine learning usa dados existentes para construir um modelo para prever resultados futuros. Em quase todos os casos, os dados brutos exigem pré-processamento e transformação antes de serem 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 recursos é complexo e demorado. Uma complicação adicional é que, para machine learning, os cálculos de recurso precisam ser feitos para o treinamento do modelo e, em seguida, 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 realizaram. Um repositório de recursos foi projetado para resolver esses problemas.
Tabelas de recursos
recurso são organizados como tabelas de recursos. Cada tabela deve ter uma key primária e é apoiada por uma tabela Delta e metadados adicionais. Os metadados da tabela de recurso rastreiam a fonte de dados a partir da qual uma tabela foi gerada e o Notebook e Job que criaram ou gravaram na tabela.
Com Databricks Runtime 13.3 LTS e acima, se o seu workspace estiver habilitado para Unity Catalog, o senhor poderá usar qualquer tabela Delta em Unity Catalog com um key primário como uma tabela de recurso. Consulte Trabalhar com tabelas de recurso em Unity Catalog. As tabelas de recurso armazenadas no recurso Store do espaço de trabalho local são chamadas de "tabelas de recurso do espaço de trabalho". Consulte Trabalhar com tabelas de recurso no espaço de trabalho Recurso Store (legado).
recurso em uma tabela de recursos normalmente são compute e atualizados usando uma função de computação comum.
Você pode publicar uma tabela de recursos em um armazenamento 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 ensinar um modelo utilizando recurso, você cria um FeatureLookup
para cada tabela de recurso. O FeatureLookup
especifica qual recurso usar da tabela e também define a key a ser usada para join a tabela de recursos aos dados do rótulo passados para create_training_set
.
O diagrama ilustra como um FeatureLookup
funciona. Neste exemplo, você deseja ensinar um modelo utilizando recurso de duas tabelas de recursos, customer_features
e product_features
. Você cria um FeatureLookup
para cada tabela de recurso, especificando o nome da tabela, o recurso (colunas) a ser selecionado na tabela e a key de pesquisa a ser usada na junção do recurso para criar um dataset de treinamento.
Você então chama create_training_set
, também mostrado no diagrama. Esta 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 básica. Os dados de treinamento devem conter coluna(s) correspondente(s) a cada uma das key primárias das tabelas de recursos. Os dados nas tabelas de recursos são unidos ao DataFrame de entrada de acordo com estas key. O resultado é mostrado no diagrama como “ dataset de treinamento”.
FeatureFunction
Um recurso pode depender de informações que só estão disponíveis no momento da inferência. O senhor pode especificar um FeatureFunction
que combina entradas reais de tempo com valores de recurso para compute valores de recurso atualizados. Um exemplo é mostrado no diagrama. Para obter detalhes, consulte compute recurso on demand usando Python funções definidas pelo usuário.
Conjunto de treinamento
Um conjunto de treinamento consiste em uma lista de recursos e um DataFrame contendo dados de treinamento brutos, rótulos e key primária para procurar recursos. Você cria o conjunto de treinamento especificando os 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.
Quando o senhor ensina e log um modelo usando o recurso engenharia em Unity Catalog, é possível view 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. Ver recurso governança e linhagem.
Tabelas de recurso de séries temporais (pesquisas pontuais)
Os dados usados para ensinar um modelo geralmente possuem dependências de tempo incorporadas a ele. Ao construir o modelo, você deve considerar apenas os valores de recursos até o momento do valor alvo observado. Se você ensinar recursos com base em dados medidos após o carimbo de data/hora do valor de destino, o desempenho do modelo poderá ser prejudicado.
As tabelas de recursos de série temporal incluem uma coluna de carimbo de data/hora que garante que cada linha no dataset de treinamento represente os valores de recurso conhecidos mais recentes a partir 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 no tempo.
Ao criar uma tabela de recursos de série temporal, você especifica colunas relacionadas ao tempo em sua key primária como colunas de série temporal usando o argumento timeseries_columns
(para recurso engenharia no Unity Catalog) ou o argumento timestamp_keys
(para recurso Store workspace ). Isso permite pesquisas pontuais quando você usa create_training_set
ou score_batch
. O sistema executa uma join de carimbo de data e hora usando o timestamp_lookup_key
especificado.
Se você não usar o argumento timeseries_columns
ou o argumento timestamp_keys
e designar apenas uma coluna de série temporal como uma coluna key primária, o recurso Store não aplicará lógica point-in-time à coluna de série temporal durante join. Em vez disso, ele corresponde apenas às linhas com uma correspondência de hora exata, em vez de corresponder a todas as linhas anteriores ao carimbo de data/hora.
processamento off-line
O repositório offline de recursos é usado para descoberta de recursos, treinamento de modelo e inferência de lotes. Ele contém tabelas de recursos materializadas como tabelas Delta.
processamento online
Um armazenamento online é um banco de dados de baixa latência usado para inferência de modelos em tempo real. Para obter uma lista de lojas online suportadas pelo Databricks, consulte Lojas online de terceiros.
transmissão
Além das gravações de lotes, a Databricks recurso Store oferece suporte à transmissão. Você pode gravar valores de recursos em uma tabela de recursos a partir de uma fonte transmitida, e o código de computação de recursos pode utilizar estruturada transmitida para transformar dados brutos transmitidos em recursos.
Você também pode transmitir tabelas de recursos do armazenamento off-line para um armazenamento on-line.
Modelo de embalagem
Quando o senhor ensina um modelo do machine learning usando o recurso engenharia em Unity Catalog ou workspace repositório de recursos e log o utiliza usando o método log_model()
do cliente, o modelo mantém referências a esses recursos. No momento da inferência, o modelo pode, opcionalmente, recuperar os valores do recurso automaticamente. O chamador só precisa fornecer o key primário do recurso usado no modelo (por exemplo, user_id
), e o modelo recupera todos os valores de recurso necessários.
Na inferência de lotes, os valores dos recursos são recuperados do armazenamento off-line e combinados com novos dados antes da pontuação. Na inferência em tempo real, os valores dos recursos são recuperados do armazenamento online.
Para empacotar um modelo com metadados de recurso, use FeatureEngineeringClient.log_model
(para recurso engenharia no Unity Catalog) ou FeatureStoreClient.log_model
(para workspace recurso Store).