O blog da AWS

Como o iFood Aprimorou a Gestão de Features para Combater a Fraude

Por Willian Moreira, Machine Learning Engineer –  iFood e Renato Azevedo, AWS Solution Architect, DNB – LATAM

 

Neste publicação, apresentamos como o iFood se beneficiou da utilização de uma Plataforma de Features, que além de  simplificar o gerenciamento de features, também proporcionou uma infraestrutura robusta, eficiente e mitigou problemas de latência anteriormente enfrentados na detecção e combate à fraudes.

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.

Por que é crucial?

  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.

 

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

 

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

 

  1. Escalabilidade: A plataforma é otimizada para lidar com altos volumes de dados, garantindo a construção eficaz de features.

 

  1. 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 impulsiona 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 do iFood 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.

Imagem 1: Arquitetura da Plataforma de features contendo os três componentes principais, Feature Engine, Feature Store, e Feature Management.

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.

Imagem 2: A Feature Engine é responsável por realizar os pré-processamentos e agrupamentos das features.

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.

Imagem 3: Exemplo com três janelas distintas sendo calculadas a partir da mesma sequência de janelas menores, ou seja, cada janela é na verdade a soma de um conjunto menor de janelas intermediárias.

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.

Imagem 4: Arquitetura interna da Feature Store, onde cada materializador é responsável por salvar em seu respectivo armazenamento. E também cada armazenamento possui um consumer específico, para as features em real-time temos uma API REST e para o histórico temos uma SDK em python para buscar os dados históricos.

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.

 

Imagem 5: Cada janela tem uma data e hora de início e um de fim. Todas as janelas selecionadas obrigatoriamente são janelas fechadas, ou seja, que o ponto no tempo informado é superior ao fim da janela. 

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.

Imagem 6: Imagem ilustra a arquitetura utilizada para servir as features em tempo real, onde temos uma aplicação que serve tanto para modelos no SageMaker quanto para outras aplicações que queiram consumir features em tempo real.

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 é aproveitada por times como recomendação, logística, marketing, entre outros, consolidando seu valor no iFood.

 

Biografia dos autores

 

Willian Moreira é Machine Learning Engineer com 7 anos de experiência na área de dados. Atualmente, lidera o time de plataforma de features do iFood, uma gigante no mundo do delivery no Brasil. Formado em Ciências da Computação pela UTFPR, Willian é um entusiasta de big data e streaming processing.

https://www.linkedin.com/in/willianmrs

Renato Azevedo é Solutions Architect na AWS, especialista em computação em nuvem e mestre em Informática pela Universidade Federal do Rio de Janeiro. Ao longo de sua carreira, ele se concentrou em Cloud Computing, Data Centers, Resiliência, DevOps, Plataforma, Infraestrutura como código e observabilidade. Atualmente ajuda clientes em sua jornada na nuvem e a arquitetar arquiteturas resilientes.

https://www.linkedin.com/in/renatow4