O que é Feature Store (Armazernamento de Recursos)?
Se os dados forem o novo ouro (termo usado em excesso, mas mesmo assim verdadeiro), eu diria que os recursos são, na verdade, barras de ouro e, portanto, precisam ser tratados em conformidade. Para chegar ao ouro, você precisa cavar e trabalhar duro, o que também é válido para encontrar as características certas.
O processo de criação de recursos (features) é chamado de engenharia de recursos (ou engenharia de atributos), que é um componente complicado, mas crítico para qualquer processo de aprendizado de máquina. Melhores recursos significam melhores modelos, resultando em melhores resultados de negócios.
Gerar um novo recurso exige uma quantidade enorme de trabalho – e criar o pipeline para construir o recurso é apenas um aspecto. Para chegar a esse estágio, você provavelmente teve um longo processo de tentativa e erro, com uma grande variedade de recursos, até chegar a um ponto em que ficou satisfeito com seu novo recurso singular. Em seguida, você precisava calculá-lo e armazená-lo como parte de um pipeline operacional, que difere, dependendo se o recurso está online ou offline.
Além disso, todo projeto de Ciência de Dados começa com a busca pelos recursos certos. O problema é que, na maioria das vezes, não há um lugar único e centralizado para pesquisar; recursos estão hospedados em todos os lugares. Portanto, em primeiro lugar, o armazenamento de recursos fornece um único painel de vidro para compartilhar todos os recursos disponíveis. Quando um Cientista de Dados inicia um novo projeto, ele ou ela pode acessar este catálogo e encontrar facilmente os recursos que procura. Mas um armazenamento de recursos não é apenas uma camada de dados, é também um serviço de transformação de dados que permite aos usuários manipular dados brutos e armazená-los como recursos prontos para serem usados por qualquer modelo de aprendizado de máquina.
Recursos offline e Online
Existem dois tipos de recursos: online e offline
Recursos off-line – alguns recursos são calculados como parte de um trabalho em lote. Por exemplo, gasto médio mensal. Eles são usados principalmente por processos offline. Dada a sua natureza, a criação desses tipos de recursos pode levar tempo. Normalmente, os recursos off-line são calculados por meio de estruturas como Spark ou simplesmente executando consultas SQL em um determinado banco de dados e, em seguida, usando um processo de inferência em lote.
Recursos online – Esses recursos são um pouco mais complicados, pois precisam ser calculados muito rapidamente e geralmente são exibidos em latência de milissegundos. Por exemplo, calcular uma pontuação z para detecção de fraude em tempo real. Nesse caso, o pipeline é construído calculando a média e o desvio padrão em uma janela deslizante em tempo real. Esses cálculos são muito mais desafiadores, exigindo computação rápida, bem como acesso rápido aos dados. Os dados podem ser armazenados na memória ou em um banco de dados de valores-chave muito rápido. O processo em si pode ser realizado em vários serviços na nuvem ou em uma plataforma como a Plataforma de Ciência de Dados Iguazio, que possui todos esses componentes como parte de sua oferta principal.
Aqui está um exemplo de um pipeline online e offline usando armazenamento de recursos (Feature Store). Foi projetado pela Uber como parte de sua plataforma Michelangelo:
Benefícios:
● Desenvolvimento Mais Rápido
O ideal é que os Cientistas de Dados se concentrem no que estudaram para fazer e no que são melhores: em construir modelos. No entanto, eles frequentemente se veem tendo que gastar a maior parte do tempo em configurações de engenharia de dados. Alguns recursos são caros para computar e requerem agregação, enquanto outros são bastante diretos. Mas isso realmente não é algo que deva preocupar os Cientistas de Dados ou impedi-los de aproveitar os melhores recursos para seu modelo. Portanto, o conceito de armazenamento de recursos é abstrair todas as camadas de engenharia e fornecer acesso fácil para leitura e escrita de recursos.
Conforme mencionado anteriormente, os recursos online e offline têm características diferentes. Nos bastidores, os recursos off-line são construídos principalmente em estruturas como o Spark ou SQL, onde os recursos reais são armazenados em um banco de dados ou como arquivos em parquet. Enquanto os recursos online podem exigir acesso a dados usando APIs para mecanismos de streaming, como Kafka, Kinesis, ou bancos de dados de valores-chave na memória, como Redis ou Cassandra.
Trabalhar com um armazenamento de recursos abstrai essa camada, de forma que quando um Cientista de Dados está procurando por um recurso, em vez de escrever um código de engenharia, ele pode usar uma API simples para recuperar os dados de que precisa. Pode ser simples como executar o seguinte:
df = feature_store.get (“transaction_volume”). filter_by (transaction_id)
● Fácil Implantação do Modelo em Produção
Um dos principais desafios na implementação do aprendizado de máquina em produção surge do fato de que os recursos que estão sendo usados para treinar um modelo no ambiente de desenvolvimento não são os mesmos que os recursos na camada de serviço de produção. Portanto, habilitar um conjunto de recursos consistente entre a camada de treinamento e de serviço permite um processo de implantação mais suave, garantindo que o modelo treinado realmente reflita a maneira como as coisas funcionariam na produção.
● Maior Precisão do Modelo
Além dos recursos reais, o armazenamento de recursos mantém metadados adicionais para cada recurso. Por exemplo, uma métrica que mostra o impacto do recurso no modelo ao qual está associada. Essas informações podem ajudar os Cientistas de Dados tremendamente ao selecionar recursos para um novo modelo, permitindo que eles se concentrem naqueles que alcançaram um impacto melhor em modelos existentes semelhantes.
● Melhor Colaboração
Como diz o velho ditado – compartilhar é cuidar! A realidade hoje é que quase todos os novos serviços de negócios são baseados em Machine Learning, portanto, o número de projetos e recursos está crescendo exponencialmente. Isso reduz nossa capacidade de ter uma boa visão geral abrangente dos recursos disponíveis, uma vez que são tantos. Em vez de desenvolver em silos, o armazenamento de recursos nos permite compartilhar nossos recursos junto com seus metadados com nossos colegas. Está se tornando um problema comum em grandes organizações que equipes diferentes acabem desenvolvendo soluções semelhantes, simplesmente porque não estão cientes das tarefas umas das outras. Os armazenamentos de recursos preenchem essa lacuna e permitem que todos compartilhem seu trabalho e evitam a duplicação.
● Rastreamento da Linhagem e Tratamento da Conformidade
Para atender às diretrizes e regulamentações, especialmente nos casos em que os modelos de IA gerados atendem a setores como saúde, serviços financeiros e segurança, é importante rastrear a linhagem dos algoritmos em desenvolvimento. Alcançar isso requer visibilidade do fluxo de dados de ponta a ponta para entender melhor como o modelo está gerando seus resultados. Como os recursos estão sendo gerados como parte do processo, é necessário rastrear o fluxo do processo de geração de recursos. Em um armazenamento de recursos, podemos manter a linhagem de dados de um recurso. Isso fornece as informações de rastreamento necessárias que capturam como o recurso foi gerado e fornece a visão e os relatórios necessários para conformidade regulamentar.
Feature Store e MLOps
MLOps é uma extensão do DevOps em que a ideia é aplicar os princípios do DevOps em pipelines de Machine Learning. O desenvolvimento de um pipeline de aprendizado de máquina é diferente do desenvolvimento de software, principalmente por causa do aspecto dos dados. A qualidade do modelo não se baseia apenas na qualidade do código. Também é baseado na qualidade dos dados – ou seja, os recursos – que são usados para executar o modelo. De acordo com o Airbnb, cerca de 60%-80% do tempo dos Cientistas de Dados é gasto na criação, treinamento e teste. Os armazenamentos de recursos permitem que os Cientistas de Dados reutilizem recursos em vez de reconstruí-los repetidas vezes para modelos diferentes, economizando tempo e esforço valiosos. Os armazenamentos de recursos automatizam esse processo e podem ser acionados mediante alterações de código que são enviadas para o Git ou pela chegada de novos dados. Essa engenharia automatizada de recursos é uma parte importante do conceito de MLOps.
Conclusão
Algumas das maiores empresas de tecnologia que lidam extensivamente com IA criaram suas próprias Feature Stores (Uber, Twitter, Google, Netflix, Facebook, Airbnb, etc.). Essa é uma boa indicação para o resto do setor de como é importante usar armazenamento de recursos como parte de um pipeline de Machine Learning eficiente. Dado o crescente número de projetos de IA e as complexidades associadas a colocar esses projetos em produção, a indústria precisa de uma forma de padronizar e automatizar o núcleo da engenharia de recursos. Portanto, é justo supor que o armazenamento de recursos está posicionado para ser um componente básico de qualquer pipeline de aprendizado de máquina.
Referência:
What are Feature Stores and Why Are They Critical for Scaling Data Science?
David Matos
1 thought on “O Que São Feature Stores e Por Que São Essenciais na Escalabilidade em Data Science?”