Willian Moreira
💻 Engenheiro de Machine Learning no iFood
A revolução digital trouxe desafios e oportunidades para o mundo das entregas de alimentos. Emergindo como uma Food Tech líder na América Latina, o iFood tem constantemente se adaptado à crescente demanda. Mas, com mais usuários e parcerias, veio uma responsabilidade aprimorada: assegurar uma experiência de usuário impecável.
A prevenção às fraudes é crucial no ecossistema das Food Techs. Como uma empresa que processa milhões de pedidos diariamente, o iFood se tornou um alvo atraente para fraudadores, especialmente para os que realizam testes com cartões roubados ou gerados. As tentativas de fraude não só prejudicam a integridade financeira da plataforma, mas também comprometem a confiança dos clientes e dos estabelecimentos parceiros. Em resposta a essa ameaça persistente, o iFood desenvolveu uma abordagem estratégica que combina mecanismos tradicionais de segurança com modelos avançados de inteligência artificial. Esses modelos são treinados para reconhecer padrões suspeitos e avaliar, entre diversos parâmetros, o risco de estornos futuros de transações. Dessa forma, cada pedido não é apenas uma transação, mas também uma verificação contínua da legitimidade, garantindo a segurança de todos os envolvidos no processo.
Contudo, gerir esses modelos é uma tarefa muito complexa. Um dos principais desafios enfrentados é manter as características (features) dos modelos atualizadas e assegurar a integridade e a baixa latência no acesso aos dados. E é aqui que entra a inovação do iFood: a Plataforma de Features. Esta solução foi projetada para simplificar a vida dos Cientistas de Dados. Enquanto eles definem ‘o quê’, a plataforma gerencia ‘como’, assegurando a coerência de dados e promovendo uma colaboração eficaz entre equipes. Apoiada pela infraestrutura da AWS, a Plataforma de Features não apenas aborda os desafios intrínsecos da gestão de modelos, mas também permite que a equipe do iFood se concentre no que faz de melhor: oferecer uma experiência superior aos seus clientes.
O que é uma Plataforma de Features?
Uma Plataforma de Features é, essencialmente, um sistema centralizado que facilita a gestão e a utilização de features de ML em toda a organização. Features são os inputs individuais (ou variáveis) que alimentam um modelo de ML. Uma vez que estas features são criadas, elas precisam ser armazenadas, gerenciadas, e recuperadas de forma eficiente para treinamento e inferência de modelos.
1. Reusabilidade: Com uma Plataforma de Features, cientistas de dados e engenheiros de ML não precisam recriar ou reprocessar features sempre que desenvolvem um novo modelo. As features existentes podem ser acessadas e compartilhadas por diferentes modelos, economizando tempo e recursos.
2. Consistência: Garante que todas as equipes estejam usando as mesmas definições e transformações de features. Isso é vital para garantir que os insights e previsões gerados por diferentes modelos sejam consistentes e confiáveis.
3. Eficiência: Reduz a complexidade ao gerenciar o ciclo de vida das features, desde a criação até o deployment. Também reduz a latência, pois as features necessárias para a inferência em tempo real estão prontamente disponíveis.
4. Escalabilidade: A plataforma é otimizada para lidar com altos volumes de dados, garantindo a construção eficaz de features.
5. Monitoramento/Governança: Oferece total transparência no cálculo das features, registrando fontes, filtros, agregação e mantendo histórico de alterações.
Solução proposta
Modelos de detecção de fraudes são vitais, particularmente em cenários onde o tempo de resposta é essencial, como é o caso do iFood. O desafio não reside apenas na operação de um modelo crítico em tempo real, mas também nas demandas impostas à produtização de features, um aspecto que, por si só, constitui um grande desafio de engenharia. A exigência é por respostas rápidas e consistentes, o que impulsionou o iFood a desenvolver a Plataforma de Features.
Antes da plataforma, o tempo de resposta médio do sistema de fraude era de 250 ms. Com a implementação da plataforma, esse tempo foi reduzido para 50 ms, evidenciando uma melhoria significativa na resposta do sistema. A plataforma não apenas simplificou a criação e o gerenciamento das features, mas também assegurou a consistência, atacando o problema de diferenças entre a lógica da feature executada em um pipeline de treinamento e a lógica da feature para a inferência (feature skew), uma questão crítica na produtização de modelos de detecção de fraude.
Desenvolvida principalmente para processar features em tempo real, a Plataforma de Features integra ferramentas como Apache Spark, Apache Kafka, Delta Lake e Redis, esta combinação garante desempenho máximo, independentemente do volume de dados, estabelecendo um novo padrão de eficiência e eficácia na detecção e prevenção à fraudes. Esta infraestrutura robusta não apenas acelera a detecção de atividades fraudulentas, mas também proporciona um ambiente mais ágil e flexível para os cientistas de dados, facilitando a inovação contínua e aprimoramento dos modelos de fraude.
Como a Plataforma de Features impulsion a inovação no iFood?
A rotina de uma equipe de ciência de dados é repleta de etapas complexas, por exemplo, a gestão de pipelines de dados, engenharia de features, monitoramento de modelos em tempo real, etc. Uma das fases mais trabalhosas é a operacionalização das features; estabelecer uma infraestrutura robusta para criar e testar features é, sem dúvida, um desafio. É aqui que a Plataforma de Features se destaca, proporcionando uma agilidade para as equipes. A plataforma não só otimiza processos, mas também traz consigo uma série de benefícios, tais como:
– Agilidade no Desenvolvimento de Modelos: A Plataforma de Features permite que os cientistas de dados do iFood se concentrem na experimentação e otimização dos modelos, em vez de gastar tempo na produtização de features.
– Integração Contínua e Delivery (CI/CD) para Features: A natureza descritiva das features facilita a integração e entrega contínuas, permitindo que as atualizações sejam implementadas de forma mais rápida e fluida.
– Colaboração Melhorada: Com um repositório centralizado, as equipes podem colaborar melhor, compartilhando insights e melhorias nas features.
– Disponibilização Rápida e Confiável: A plataforma não só armazena features, mas também garante que elas sejam entregues de forma eficaz e em tempo real para os modelos em produção. Isso é crucial para modelos de baixa latência.
Como a Plataforma de Features funciona?
A plataforma de features é composta por três abstrações principais: a Feature Engine, a Feature Store e a Feature Management, como pode ser observada na Imagem 1. Cada camada é responsável por garantir as etapas necessárias para entregar as features o mais rápido possível garantindo segurança, resiliência e simplicidade.
Feature Engine
Esta camada consiste na abstração de todo o motor de agregação da plataforma. O processo de agregação é fundamental para transformar grandes volumes de dados em informações significativas que podem ser usadas para análises, relatórios e tomada de decisões.
Notamos também que no desenvolvimento das features os Cientistas de Dados costumam usar várias features semelhantes, variando apenas a janela, por exemplo, contagem de pedidos dos últimos 7, 30 e 60 dias. Por isso desenvolvemos o que chamamos de agregação em duas etapas, como pode ser observado na imagem 2.
O Two Step Aggregator organiza internamente o dado em janelas menores que chamamos de passo. Por exemplo, se o objetivo final é agregar dados de um mês, o passo pode ser de um dia. Esta abordagem permite que os resultados desses pequenos segmentos sejam armazenados como estados intermediários, que são essencialmente resultados parciais que serão usados para criar quaisquer janelas maiores.
Uma vez que os estados intermediários são armazenados, combinamos esses resultados para produzir a agregação final. Por exemplo, os resultados de cada “passo da janela” diário seriam combinados para produzir o resultado agregado do mês. Este passo oferece alguns benefícios, por exemplo, há uma redução de custos, pois possibilita termos várias janelas sendo processadas numa mesma execução de query Spark, algo que o Spark nativo não suporta hoje, sendo necessário uma query dedicada a cada janela.
Além disso, a plataforma traz o streaming como foco principal, e com isso conseguimos usar a mesma base de código para processar tanto os dados em batch quanto em streaming. Ou seja, tudo que funciona no streaming também funciona no processamento em batch.
Finalmente, cada atualização da feature é armazenada em uma Delta Table localizada em um bucket do S3. Os dados são estruturados em formato transacional, o que significa que toda vez que uma alteração é feita na feature, uma nova entrada é registrada nessa tabela. Isso facilita a reconstrução de qualquer banco de dados em momentos subsequentes, atuando de maneira análoga a um log transacional de um banco de dados.
Feature Store
A Feature Store é um componente central que serve como um repositório para as features processadas e prontas para uso em modelos de machine learning.
A principal vantagem da Feature Store é sua capacidade de reutilizar e compartilhar features entre diversos modelos e aplicações, proporcionando consistência e minimizando a necessidade de retrabalho.
A Feature Store pode ser segmentada em duas categorias, atendendo a necessidades distintas:
Armazenamento Online
O armazenamento online é projetado para ser rápido e eficiente. Ele é otimizado para consultas de baixa latência, tornando-o ideal para aplicações em tempo real. No iFood armazenamos as features em um Redis, com isso atingimos latências menores do que 10 milissegundos para recuperação das features, mesmo com um volume alto de requisições.
Características Principais:
- Baixa Latência: Servimos features em menos de 10 milisegundos
- Escalabilidade: Combinando o Redis com uma aplicação no Kubernetes, atingimos sem esforço taxas de 3 milhões de requisições por minuto. Essa solução é bastante flexível e escalável, pois em momentos de baixo fluxo os recursos desnecessários são deslocados, trazendo otimização de custo.
Exemplos de Uso:
- Recomendações de pratos e restaurantes;
- Segmentações;
- Detecção de fraudes.
Armazenamento Offline
O armazenamento offline, por outro lado, é otimizado para capacidade e durabilidade. Além de permitir armazenar grandes volumes de dados por longos períodos de tempo, também possibilita “viajar no tempo”, ou seja, possibilita recuperar valores de uma feature num certo ponto no tempo, necessário para treinamento de modelos. Para isso utilizamos a Delta Table para nosso armazenamento offline, isso nos traz uma flexibilidade grande, principalmente por termos a possibilidade de usar tanto streaming quanto batches para atualizá-la.
Características Principais:
- Grande Capacidade: Pode armazenar terabytes ou até petabytes de dados.
- Durabilidade: Baseado no AWS S3, garante segurança e resistência a falhas.
- Viagem no Tempo: Permite acessar features em determinados pontos temporais de maneira eficiente.
Exemplos de Uso:
- Treinamento de modelos de machine learning: Os modelos são treinados usando grandes conjuntos de dados para melhor precisão.
- Análises históricas: Permite análises de tendências ao longo do tempo.
- Inferência em lote, possibilitando modelos offline realizarem processamento em lote de forma eficiente sem impactar o fluxo online.
Para cada tipo de armazenamento, utilizamos o que denominamos de ‘materializadores’. Estes são encarregados de ler as transações da Delta Table e armazená-las no destino adequado. Para o armazenamento online, temos o ‘Redis Materializer’, que se encarrega de salvar apenas a versão mais recente da feature em um Redis para rápida recuperação. Por outro lado, o ‘Delta Materializer’ é responsável por assegurar a consistência do histórico, armazenando-o em uma Delta Table.
Feature Management
A camada de Feature Engine é responsável por calcular a feature, a camada de Feature Store é responsável por armazenar e servir as features de forma consistente, mas ainda tem uma gama de serviços e aplicações que são necessárias para manter toda a plataforma saudável e segura. Para isso introduzimos a camada de Feature Management, que garante a integridade, eficiência e segurança da plataforma de features, atuando como um guardião para assegurar que as features sejam geradas, armazenadas e acessadas de maneira adequada. Uma das funções vitais do Feature Management é o monitoramento contínuo, que é crucial para manter a saúde da plataforma de features. Através dele, é possível identificar problemas antes que eles afetem os usuários finais, otimizar o desempenho da plataforma e receber notificações em tempo real sobre quaisquer irregularidades ou falhas.
Além do monitoramento, o Feature Management é responsável pelo gerenciamento do ciclo de vida das features. Isso envolve determinar quais features podem ser deletadas, identificar quais são frequentemente acessadas e por quem, além de monitorar custos e avisar sobre features que não estão sendo utilizadas. Esta camada também fornece ferramentas para alterar ou deletar features conforme necessário.
O versionamento é outra função crucial, permitindo rastrear e gerenciar diferentes versões de features, mantendo um histórico de todas as alterações e garantindo que modelos e aplicações estejam usando a versão correta das features. Além de manter registros de todas as operações realizadas, permitindo rastrear quem acessou ou modificou features. Em resumo, o Feature Management é fundamental para garantir que a plataforma de features funcione de maneira otimizada e segura, atendendo às necessidades dos usuários.
Como a plataforma resolveu os problemas para combate à fraude.
Embora nossos modelos de fraude já aproveitem as vantagens do Amazon SageMaker, garantindo escalabilidade e resiliência, enfrentávamos desafios internos relacionados à criação e manutenção de features. Estes processos onerosos resultaram em latências significativas, além dos outros problemas mencionados. Mas como a equipe realmente utiliza a plataforma de features em sua rotina?
A plataforma disponibiliza uma SDK que fornece os mecanismos facilitadores para recuperação de features tanto para o treinamento através do enriquecimento de dataset, quanto para a inferência onde oferece uma interface para a recuperação dos últimos valores das features
Durante o treinamento, nosso foco é extrair dados históricos utilizando um identificador único e um momento preciso no tempo. Para assegurar a não exposição de informações futuras, adotamos uma abordagem de janela de tempo fechada. Isso significa que o momento escolhido para análise deve ser sempre posterior ao término desta janela. Por exemplo, se selecionarmos um período após as 12:15, obtemos o valor 5. Se optarmos por um momento posterior às 12:30, o valor será 10, e assim por diante, conforme ilustrado na imagem 5.
O produto final desse processo é um dataframe do Spark, onde cada característica é convertida em uma coluna distinta. Nossa plataforma assegura a correta agregação dos dados no momento apropriado, eliminando riscos como o vazamento de dados futuros ou inconsistências nos dados.
No contexto de treinamento, a precisão dos dados é nossa principal preocupação, sem a necessidade de focar em latência. Contudo, durante a fase de inferência, a latência assume um papel crucial. Para atender a essa demanda, oferecemos uma API REST especializada na recuperação de features, que é altamente escalável e capaz de processar milhões de requisições por minuto. Durante a inferência, precisamos somente do identificador para acessar os dados mais recentes. Com isso cada modelo acessa a plataforma de features através da API recuperando todas as features necessárias para sua etapa de inferência e sem seguida realiza sua predição.
Com essa abordagem, alcançamos uma melhoria significativa na eficiência da inferência dos nossos modelos, reduzindo a latência na recuperação de features de 250ms para 50ms. Essa otimização não só viabiliza a exploração de novas possibilidades pelos cientistas, mas também garante uma experiência excepcional para os usuários do iFood.
Conclusão
A adoção da Plataforma de Features foi crucial para o time de fraude do iFood. Substituindo processos manuais e demorados, o time agora tem uma solução automatizada e otimizada. Esta plataforma não só simplificou o gerenciamento de features, mas também abordou e solucionou os problemas de latência, reduzindo a latência em aproximadamente cinco vezes.
Além de impactar na velocidade de processamento, a plataforma também impulsionou a colaboração e eficiência dentro do time. Ao tratar features como código e oferecer uma biblioteca padronizada, incentivou-se a reutilização e descoberta de features entre as equipes. Isso possibilitou que os cientistas de dados concentram seus esforços na criação e otimização de modelos, acelerando a inovação.
A Plataforma de Features, ao reduzir a carga operacional e melhorar a latência, elevou o padrão de desempenho do time de fraude. Porém, os benefícios não se restringiram apenas a este time. Hoje, a plataforma serve mais de um bilhão de requisições diárias, abrangendo mais de 800 features, e é usada por times como recomendação, logística, marketing, entre outros, consolidando seu valor no iFood.