Feature Store
Um repositório de recursos define, armazena e disponibiliza recursos de ML para que o treinamento e as previsões em tempo real usem os mesmos valores, com repositórios offline e online.
Um repositório de características é um sistema de dados que define, calcula, armazena e disponibiliza as características de entrada de modelos de aprendizado de máquina, para que o modelo veja os mesmos valores de características durante o treinamento e ao fazer previsões em tempo real. Uma característica é uma entrada do modelo, como o número de transações de um cartão na última hora, a avaliação média de um produto ou uma incorporação de uma imagem. O repositório mantém a definição de cada característica junto com seu histórico completo em um armazenamento offline para criar conjuntos de treinamento, e seu valor mais recente em um armazenamento online para consultas rápidas no momento da previsão. Em uma publicação de 2017 sobre a plataforma de aprendizado de máquina Michelangelo, a Uber descreveu um repositório de características compartilhado. Depois veio o Feast, um repositório de características de código aberto criado pela Gojek com o Google Cloud, assim como os repositórios de características gerenciados do Amazon SageMaker, Google Vertex AI, Azure Machine Learning e Databricks.
Como funciona um repositório de atributos#
As características começam como eventos e tabelas brutos, e os pipelines os transformam em entradas de modelo por meio da engenharia de características, como contar as transações de um cartão em uma janela móvel de uma hora, ou da extração de características com uma rede neural. Um repositório de características organiza esse trabalho em alguns componentes:
- Registro de características: O nome de cada característica, a chave da entidade (o cliente, cartão, produto ou câmera que ela descreve), o tipo de dados, o código de transformação, o proprietário e a versão, com possibilidade de pesquisa para que as equipes reutilizem características em vez de recriá-las.
- Armazenamento offline: Todos os valores históricos com o carimbo de data e hora do evento, mantidos em um armazém de dados ou em um lago de dados, para criar conjuntos de treinamento e executar avaliações em lote.
- Armazenamento online: O valor mais recente de cada entidade em um banco de dados de chave-valor, como Redis ou DynamoDB, lido em poucos milissegundos durante a inferência.
- Materialização: Tarefas em lote ou de streaming que calculam novos valores e copiam os mais recentes do armazenamento offline para o online.
No momento da previsão, um serviço como uma verificação antifraude envia o ID do cartão, recebe suas características atuais do armazenamento online e as fornece ao modelo, mantendo a latência de inferência baixa o bastante para a inferência em tempo real durante o pagamento.
Correção pontual no tempo#
Cada linha de treinamento deve usar os valores dos atributos tal como eram quando ocorreu o evento rotulado. Um valor calculado posteriormente contém informações do futuro, uma forma de vazamento de dados que faz um modelo parecer preciso offline e falhar em produção. Os armazenamentos de atributos evitam isso com junções pontuais no tempo, que associam cada rótulo ao valor de atributo mais recente, no mesmo período ou antes do carimbo de data/hora do rótulo e para a mesma entidade. A função do pandas merge_asof executa a mesma junção:
import pandas as pd
# Armazenamento offline: contagem de transações de cada cartão na última hora, registrada ao longo do tempo
features = pd.DataFrame(
{
"card_id": ["A", "B", "A", "A"],
"time": pd.to_datetime(["2026-10-01 09:00", "2026-10-01 10:00", "2026-10-01 12:00", "2026-10-01 15:00"]),
"txn_count_1h": [1, 2, 4, 9],
}
)
# Eventos rotulados para treinamento: cada transação foi fraudulenta?
labels = pd.DataFrame(
{
"card_id": ["B", "A"],
"time": pd.to_datetime(["2026-10-01 11:00", "2026-10-01 13:30"]),
"is_fraud": [0, 1],
}
)
# Junção pontual no tempo: cada rótulo recebe o valor de atributo mais recente do cartão, no mesmo período ou antes do horário do evento
training_rows = pd.merge_asof(labels, features, on="time", by="card_id")
print(training_rows)O rótulo de fraude do cartão A, às 13:30, recebe a contagem 4 registrada às 12:00, enquanto a contagem 9, registrada às 15:00, depois da transação, fica fora do conjunto de treinamento. O rótulo do cartão B, às 11:00, recebe seu próprio valor 2, porque o argumento by associa as linhas pela chave da entidade.
Divergência entre treinamento e inferência#
A divergência entre treinamento e inferência é uma diferença entre os atributos com que um modelo foi treinado e os atributos que recebe em produção. Ela surge quando uma tarefa SQL em lote calcula os atributos de treinamento, enquanto um código de aplicação escrito separadamente calcula os atributos de inferência, e os dois diferem em fusos horários, limites de janelas, unidades ou na forma como preenchem valores ausentes. As Regras de aprendizado de máquina do Google dedicam uma seção a essa divergência e recomendam registrar os atributos usados durante a inferência para que treinamentos futuros possam usar exatamente esses valores. Um armazenamento de atributos elimina o caminho de código duplicado ao calcular cada atributo uma única vez, com base em uma definição comum às duas utilizações, e registra a atualidade, os valores ausentes e a deriva de dados de cada atributo para que o monitoramento de modelos possa identificar uma entrada com problemas como causa de uma queda na precisão.
Armazenamento de atributos e sistemas relacionados#
- Lago de dados: Armazena arquivos brutos e processados em qualquer formato. Muitos armazenamentos offline ficam dentro de um lago de dados, e o armazenamento de atributos acrescenta chaves de entidade, carimbos de data/hora, recuperação pontual no tempo e inferência online.
- Banco de dados vetorial: Encontra os embeddings armazenados mais semelhantes a um vetor de consulta. Um armazenamento de atributos pesquisa valores pelo ID da entidade e pode conter embeddings como um atributo junto a contagens, médias e categorias.
- Registro de modelos: Versiona modelos treinados e seus metadados, enquanto o armazenamento de atributos versiona as entradas que esses modelos consomem.
- Serviço de inferência de modelos: Executa o modelo por trás de uma API e chama o armazenamento online para obter atributos para cada solicitação.
Atributos de visão computacional#
A análise de vídeo transforma os feeds das câmeras em atributos para previsão, detecção de anomalias e modelagem preditiva: contagens horárias de visitantes na entrada de uma loja, tamanho das filas nos caixas ou taxas de defeitos por linha de produção, cada uma associada ao ID e ao carimbo de data/hora da câmera ou da linha. No varejo, a contagem de pessoas alimenta modelos de equipe e demanda; na manufatura, as contagens de defeitos por turno alimentam modelos de manutenção. A contagem de objetos do Ultralytics YOLO gera esses valores diretamente: rastreia cada objeto detectado entre os quadros e retorna totais acumulados de in_count e out_count, além de contagens por classe, à medida que os objetos cruzam uma linha ou região, prontos para serem gravados no armazenamento de atributos como valores com carimbo de data/hora para cada câmera.










