O blog da AWS

Como o PagBank implementou um modelo de ML para forecasting de vendas das maquininhas PagBank

Por Eduardo Akira, especialista em ciência de dados no PagBank; Bruno Rocha Oliveira, Principal Architect & AI/ML Specialist; Ricardo F. Damasceno, cientista de dados no Pagbank; Dennis Alves de Araujo, Gerente de dados e IA; Rafael Rodrigues, arquiteto de solução da AWS; Gabriel Lopes, Customer Solutions Manager e Dayo Oguntoyinbo, cientista de dados sênior na AWS.

O PagBank é uma plataforma financeira digital completa que oferece uma ampla gama de serviços bancários e financeiros incluindo meios de pagamento, conta corrente e investimentos, visando atender às necessidades modernas dos clientes. Combinando inovação e praticidade, o PagBank permite que os usuários gerenciem suas finanças de forma fácil e eficiente através de um aplicativo móvel intuitivo. Desde contas digitais gratuitas até soluções de investimento e empréstimos, o PagBank democratiza o acesso aos serviços financeiros, proporcionando uma experiência simplificada, transparente e segura.

Com mais de 31 milhões de clientes, o Pagbank é o maior adquirente do Brasil em número de clientes. Comprometido com a inclusão financeira, o PagBank se destaca como uma opção acessível e confiável para milhões de brasileiros, facilitando a gestão financeira e melhorando a qualidade de vida dos seus usuários.

Desafio de negócio

O PagBank tinha como objetivo analisar a viabilidade e prever vendas tanto no nível individual de clientes quanto em agrupamentos específicos, como portfólio de produtos e canais de distribuição das maquininhas. Além de implementar a automação de processos que atualmente são executados manualmente. Em ambos os cenários, o PagBank lida com múltiplas séries temporais.

Desafio na previsão de vendas em larga escala

A previsão de valores transacionados em vendas apresenta desafios devido à diversidade e complexidade das séries temporais. O objetivo é prever vendas para cada cliente com base em seu histórico, enfrentando a informalidade de alguns vendedores e a ausência de vendas em determinados dias, o que dificulta previsões diárias precisas.

Fatores externos, como condições econômicas globais e a variedade de clientes (de grandes empresas a vendedores informais), aumentam a complexidade das séries temporais. A escolha por modelos de previsão diários se justifica pela capacidade de detectar padrões complexos e analisar com precisão o impacto de eventos específicos como promoções, feriados e condições climáticas no desempenho das vendas.

Prever séries temporais complexas, especialmente com horizontes de previsão longos como cerca de 1 ano para as séries agrupadas, apresenta desafios significativos devido ao grande volume de dados podendo chegar a centenas de milhões de amostras nas séries no nível de cliente, e à necessidade de capacidade computacional escalável. Empresas que operam em vários mercados enfrentam dinâmicas de venda voláteis e não lineares, dificultando a consistência das tendências e ciclos estimados pelos modelos.

Desenho de solução

Após testes rigorosos, o Centro de Excelência de Inteligência Artificial em conjunto com a diretoria de Planejamento Estratégico do PagBank selecionou o modelo Amazon SageMaker DeepAR para enfrentar esses desafios. O algoritmo de previsão do Amazon SageMaker DeepAR é um algoritmo de aprendizado supervisionado para prever séries temporais escalares (unidimensionais) usando redes neurais recorrentes (RNN). Os métodos clássicos de previsão, como média móvel integrada autorregressiva (ARIMA) ou suavização exponencial (ETS), definem um único modelo para cada série temporal individual. Em seguida, eles usam esse modelo para extrapolar séries temporais no futuro.

Preparação dos dados e treinamento do modelo

Inicialmente o PagBank optou por não realizar o tuning e treinamento usando as centenas de milhões de amostras devido ao tempo estimado conclusão ser superior a 10 dias, o que inviabilizaria a sua utilização. Foi selecionado então um subconjunto de 50.000 séries temporais que representavam apenas os clientes com maior volume de venda. A precisão deste modelo foi boa, atingindo mediana abaixo dos 30% e o primeiro quartil abaixo dos 25%, mas ainda assim levamos cerca de 2 dias para finalizar todo o processo. Portanto, foi testado também agrupamento das séries no nível cliente para nível de carteira e canal de distribuição.

Foi criado um conjunto de dados diários para cada carteira com o objetivo de transformar esses dados em uma forma que permitisse a análise de séries temporais. Para garantir a uniformidade e continuidade necessárias para as análises temporais, nesse dataset não havia dias sem vendas. Após essa etapa de preparação inicial, cada algoritmo precisava de tratamentos de dados específicos para atender às suas necessidades. Por exemplo, a conversão dos dados para o formato jsonlines facilitou a entrada e processamento do SageMaker DeepAR pelo serviço AWS.

O treinamento do SageMaker DeepAR se destaca por sua utilização da otimização bayesiana na AWS para ajustar os hiperparâmetros de forma eficaz, aumentando a precisão das previsões. Este método probabilístico correlaciona os hiperparâmetros com a probabilidade de sucesso da previsão, permitindo ajustes contínuos para manter o modelo relevante ao longo do tempo. Além de prever valores específicos, o SageMaker DeepAR também calcula intervalos de previsão que consideram a incerteza, sendo útil para decisões de negócios que exigem uma compreensão detalhada das possíveis variações futuras. Com sua combinação de técnicas avançadas, o SageMaker DeepAR é uma ferramenta poderosa para previsões dinâmicas e complexas no ambiente empresarial.

Recursos computacionais

Um desafio na adoção do DeepAR como ferramenta de predição para um horizonte de 30 dias foi o tempo de tuning e treinamento dos modelos. Foi então realizado um estudo do tipo de instância para verificar o ganho efetivo nessa definição. Utilizamos unidades de processamento baseadas em CPU e GPU. Veja abaixo uma tabela que resume os testes realizados e a mensuração do tempo de treinamento.

Os modelos de aprendizado profundo se beneficiam principalmente das GPUs devido à capacidade delas de realizar um grande número de operações paralelas, o que é crucial para tarefas como multiplicações de matrizes usadas em redes neurais. No entanto, se a complexidade do modelo ou o tamanho do lote de dados não exigir ou utilizar completamente essa capacidade de processamento paralelo, o benefício de desempenho pode não ser tão significativo.

Tipo de instância vCPU Memória Duração
ml.c5.4xlarge 16 32 1h43min
ml.c5.9xlarge 36 72 1h47min
ml.p3.8xlarge 32 144 1h52min
ml.m5.large 2 8 8h

Outro parâmetro de configuração importante é a definição do mini_batch_size, que representa o tamanho de minilotes usado durante o treinamento. Neste caso, o impacto foi notável para valores maiores (quando comparados ao valor padrão), especialmente para instâncias do tipo GPU.

mini_batch_size 128 1024 4096
Duração – ml.c5.9xlarge 1h47min 1h14min 1h12min
Duração – ml.p3.8xlarge 1h52min 1h00min 0h59min

Um ponto de atenção é que o aumento no tamanho do mini_batch_size, a partir de um certo valor, não traz ganhos significativos na redução do tempo de treinamento. O tamanho do mini_batch_size pode influenciar significativamente a convergência do modelo DeepAR. Um mini_batch_size maior pode acelerar o processo de treinamento, mas também pode levar a uma maior variabilidade nos gradientes estimados, o que por vezes resulta em convergência para mínimos locais subótimos. Portanto, é crucial escolher um tamanho de lote que equilibre eficiência e estabilidade durante o treinamento. Na tabela abaixo, apresentamos os valores da métrica de erro mean_wQuantileLoss para diferentes tamanhos de mini-batch.

mini_batch_size 128 1024 4096
Loss – ml.c5.9xlarge 0.4723 0.4904 0.5171
Loss – ml.p3.8xlarge 0.4756 0.4930 0.5807

Nota: O tempo de treinamento utilizando a instância ml.c5.9xlarge, pode ser potencialmente maior do que utilizando a instância ml.c5.4xlarge. Será notado que o tempo de treinamento exato depende de vários fatores, conforme fornecido abaixo: [1] Complexidade do DeepAR: combinações de parâmetros mais complexos, podem levar mais tempo para ser treinado, independentemente do tipo de instância. [2] volume dos dados de treinamento: conjuntos de dados grandes normalmente levam mais tempo para serem treinador. [3] Características específicas do DeepAR: devido à natureza do algoritmo DeepAR, o modelo pode se beneficiar de recursos adicionais (CPU, memória, etc.) fornecidos por uma instância maior, como a instância ml.c5.9xlarge. As instâncias do tipo c5 pode funcionar relativamente bem se você não estiver lidando com treinamento distribuído. O poder do DeepAR é maior com o treinamento distribuído paralelo.

Comparando o desempenho da ml.c5.9xlarge e ml.c5.4xlarge com o do ml.p3.8xlarge, é importante saber que a ml.p3.8xlarge é um tipo de instância otimizado para GPU oferecido pela AWS para cargas de trabalho de aprendizado de máquina. Ela faz parte da família de instâncias p3, projetada para aplicativos de computação intensiva que podem se beneficiar da aceleração de GPU. Algumas de suas principais especificações são 8 GPUs NVIDIA Volta V100, 32 vCPUs e 244 GiB de memória. Portanto, o DeepAR aproveita da aceleração de GPU para a instância p3 em comparação com as instâncias c5, que são otimizadas para CPU. A ml.p3.8xlarge provavelmente forneceria melhor desempenho para treinar o modelo DeepAR com combinações selecionadas de parâmetros e também pode obter mais ganhos de tempo. Então, idealmente, as instâncias baseadas em GPU são melhores para treinar com o DeepAR. Não importa o tamanho da memória de uma instância sem GPU, ainda assim poderá ocorrer problemas.

Decidimos por seguir com o valor de 512 para mini_batch_size, por este ser o maior valor no range sugerido na documentação do DeepAR. Para obter as informações mais atualizadas referentes a performance e preço entre os diferentes tipos de instância, é recomendado consultar as documentações da AWS mais recentes, assim como relevantes benchmarks ou dados de performance fornecidos pela AWS.

Visão geral da solução

O diagrama a seguir apresenta a arquitetura para o processo de treinamento e implantação ponta a ponta.

O fluxo de trabalho da solução é o seguinte:

  1. Os dados de entrada para o treinamento estão localizados em um bucket do Amazon Simple Storage Service (Amazon S3).
  2.  O notebook do SageMaker obtém os dados de entrada e inicia as etapas seguintes.
  3. O modelo é treinado e os resultados são avaliados usando o SageMaker.
  4. Baseado no modelo treinado, um endpoint HTTPS do Sagemaker capaz de produzir previsões é criado.
  5. Os dados de entrada para inferência estão localizados em um bucket do Amazon S3. Do notebook do SageMaker, envia as solicitações para o endpoint do SageMaker e faz as previsões.
  6. Os dados de saída com score gerado pelo modelo são armazenados no Amazon S3.

Resultados

Duas métricas principais foram usadas para avaliar a precisão e a eficácia das previsões geradas pelo modelo DeepAR após o treinamento e o tuning: o MAPE (Mean Absolute Percentage Error) e WAPE (Weighted Absolute Percentage Error). Cada uma dessas métricas fornece informações úteis sobre várias facetas do desempenho do modelo. A primeira é mais suscetível aos dias sem vendas, portanto, nesses cenários usamos a segunda.

Após uma intensa etapa de tuning, conseguimos atingir um WAPE entre 20% e 30%, dependendo muito do conjunto de dados usado para o treinamento, ou seja, dependendo da seleção das séries. Essas séries eram a nível vendedor.

Devido à complexidade e à presença de muitas séries com valores predominantemente zero, decidimos concentrar nossos esforços em um conjunto de dados menos disperso. Desta vez, o WAPE obtido variava entre 7% e 13% para um determinado portfólio de vendas, mas nesse mesmo portfólio, para o canal longtail, o WAPE ficou bem elevado. Isto demonstra um desafio remanescente que estamos determinados a superar por meio de ajustes contínuos e aprimoramentos em nossos modelos preditivos.

Os avanços significativos alcançados na previsão de vendas em larga escala têm sido diretamente responsáveis pelo aumento da precisão das nossas previsões diárias, apesar da complexidade das séries temporais, diversidade de clientes e fatores econômicos externos. Esta melhoria é essencial para mitigar desafios como a informalidade nas transações e as variações nas vendas diárias, permitindo-nos realizar análises mais detalhadas dos padrões de vendas, incluindo o impacto de promoções e condições climáticas.

Com previsões mais precisas e confiáveis, estamos otimizando os recursos e estratégias comerciais do PagBank, resultando em uma gestão financeira mais eficiente e uma experiência aprimorada para nossos clientes.

Conclusão

A implementação dos modelos SageMaker DeepAR para previsão de vendas representa um passo significativo no compromisso do PagBank com a inovação e a excelência operacional. Os resultados obtidos não apenas aumentaram a precisão das previsões diárias, mas também permitiram enfrentar desafios complexos como a informalidade nas transações e a volatilidade das vendas. Esses modelos permitem entender melhor os padrões de consumo de nossos clientes, incluindo o impacto de variáveis externas como promoções e condições climáticas. Com isso, o PagBank fortalece a capacidade de oferecer serviços financeiros mais eficientes e personalizados, que não apenas atendem, mas superam as expectativas dos clientes. O PagBank continua a investir em tecnologias avançadas e práticas inovadoras para sustentar o compromisso de melhorar continuamente a experiência financeira digital dos clientes.

Sobre os autores

Eduardo Akira é especialista em ciência de dados no PagBank, com sede em São Paulo, Brasil. Como líder do time de Ciência de Dados, ele apoia os cientistas de dados da empresa de forma multifuncional, promovendo a adesão aos padrões de modelagem de dados e melhorando a confiabilidade dos modelos preditivos. Além disso, como membro do Coe-AI (Centro de Excelência em IA), ele auxilia na adoção de IA em toda a empresa.
Bruno Rocha Oliveira atua como Principal Architect & AI/ML Specialist, com experiência em desenvolvimento de pipelines de dados e arquitetura de soluções, colaborando com equipes para escalar automação e melhorar a integração de sistemas, guiando e apoiando o crescimento técnico e estratégico de Dados/IA.
Ricardo F. Damasceno é cientista de dados no Pagbank, onde colabora com os departamentos de planejamento estratégico e financeiro. Ele é responsável por desenvolver projeções detalhadas de diversos indicadores financeiros e comerciais, ajudando a empresa a tomar decisões estratégicas.
Dennis Alves de Araujo atua como Gerente de Dados e IA, liderando equipes especializadas em arquitetura de dados e inteligência artificial. Responsável por direcionar o desenvolvimento estratégico dessas áreas, garantindo que as iniciativas estejam alinhadas aos objetivos de negócio e promovendo uma cultura de inovação e eficiência contínua.
Rafael Rodrigues é um arquiteto de solução da AWS baseado em São Paulo, Brasil. Possui mais de 15 anos de experiência na área de tecnologia e atua apoiando os clientes nas decisões em torno de computação na nuvem.
Gabriel Lopes é Customer Solutions Manager, atentendo o setor de Serviços Financeiros. Gabriel faz parte da comunidade de Machine Learning com foco em IA Generativa.
Dayo Oguntoyinbo é cientista de dados sênior de Sales Insights and Analytics, Data Engineering and Science (SIADS) na AWS. Sua experiência abrange vários setores: seguros, serviços financeiros, publicação, saúde e segurança, farmacêutica, telecomunicações e engenharia. Dayo tem uma sólida experiência em Ciência e Engenharia de Dados, com experiência em IA/ML reproduzíveis e de ciclo de vida completo, incluindo soluções de IA generativa e com grande interesse em impactos comerciais mensuráveis. Dayo se formou como Engenheiro Eletrônico e Elétrico com diplomas adicionais em Tecnologia da Informação (BEng) e Engenharia de Comunicação (MSc. Tech).