Por André Ruas, Desenvolvedor na Senior Sistemas;
Paula Campigotto, Pesquisadora na Senior Sistemas;
Amanda Machado, Squad Leader na Senior Sistemas e
Felipe Brito, Arquiteto de Soluções na AWS

A Senior Sistemas, parceiro AWS, é uma empresa brasileira referência nacional em tecnologia para gestão, tendo um dos mais completos portfolios em Gestão Empresarial, Logística, Gestão de Pessoas, Relacionamento com Clientes, Supermercados e Gestão de Acesso e Segurança. Neste post, iremos compartilhar como a Senior Sistemas desenvolveu sua plataforma de Aprendizado de Máquina No-Code utilizando AWS.

Introdução

Visando atender o restante da demanda por aplicações que não são suprida pela mão de obra ofertada no mercado de Tecnologia da Informação (TI), diversas empresas de tecnologia oferecem soluções chamadas de plataformas No-Code (PCN) e Low-Code (LCP). Essas plataformas, também chamadas de plataformas self-servicesão aplicações que geralmente dispõem de uma interface gráfica (no caso das NCPs) ou apresentam paradigmas de programação de alto nível (no caso das LCPs). Elas possuem como principal objetivo facilitar a criação de aplicações para pessoas com pouco ou nenhum conhecimento na área de programação. Além disso, áreas como Aprendizado de Máquina, também chamada de Machine Learning (ML), também possuem escassez de profissionais qualificados, por se tratarem de assuntos complexos e que exigem qualificação.

A partir destas premissas, foi desenvolvido um projeto no Laboratório de Pesquisa Aplicada da Senior (Senior Labs) que busca implantar um produto de Aprendizado de Máquina No-Code na plataforma de inovações Senior X Platform.

O Plataforma X Sênior

O X Platform é uma plataforma de inovações da Senior Sistemas que tem como objetivo oferecer diferentes soluções e produtos personalizados para seus clientes. A Figura 1 ilustra alguns dos produtos oferecidos pelo X Platform, como o BPM, ferramenta que mapeia, modela, executa, otimiza e automatiza processos de negócio.

Figura 01 – Produtos oferecidos pelo X platform

Desafios

Para a construção do produto de Aprendizado de Máquina No-Code, foi priorizado a elaboração de uma API hospedada inteiramente na AWS, visando, além da escabilidade e disponibilidade oferecidas pela nuvem AWS, a flexibilidade para alteração da arquitetura conforme a evolução do projeto.

Afim de enquadrar-se no conceito No-Code, a proposta da API é que ela seja capaz de a partir de um arquivo com dados rotulados, construir o modelo de Aprendizado de Máquina e na sequência, tornar disponível para o usuário a utilização desse modelo para classificação de novos dados.

O maior desafio enfrentado, foi a elaboração de uma arquitetura funcional e assertiva com o intuito de fornecer uma melhor experiência aos usuários e concomitantemente minimizar os custos operacionais.

Solução Proposta

A primeira etapa do projeto foi a definição de um framework de AutoML, que se deu a partir de um estudo comparativo realizado entre os frameworks presentes no mercado e os requisitos do projeto. Com base no estudo, foi selecionado o AutoGluon-Tabularum framework open-source de AutoM desenvolvido pela AWS e que tem como princípios a simplicidade, robustez, previsilbilidade de tempo e tolerância a falhas. Além desses atributos, outros fatores que direcionaram a escolha pelo AutoGluon para composição da plataforma No-Code foram:

– Capacidade de identificação dos problemas entre classificação e regressão;

– Realização da etapa de pré-processamento de dados;

– Possibilidade de automatizar a otimização de hiperparâmetros.

Após a seleção do framework de AutoML, iniciou-se a elaboração da arquitetura da API, que pode ser visualizada em sua versão final na Figura 2.

Figura 02 – Arquitetura final do produto de Aprendizado de Máquina No-Code.

A arquitetura final da API pode ser dividida em 5 diferentes fluxos:

  1. Requisição do upload dos dados:
  2. Upload dos dados
  3. Treinamento do modelo
  4. Inferência dos dados
  5. Consulta dos dados e status dos modelos criados

O fluxo 1 envolve a utilização de uma Função do AWS Lambda que retorna uma presigned URL do bucket S3. Essa URL é utilizada por outra função Lambda, no fluxo 2para realização do upload de dados diretamente no bucket do Amazon S3. A criação desse fluxo foi necessária para permitir o recebimento de dados armazenados em arquivos grandes, assim como para evitar que os dados sejam enviados diretamente via Amazon API Gateway. Com o objetivo de minimizar a replicação de recursos, as Lambdas que compartilhavam requisitos foram conteinerizadas junto com suas dependências em um Amazon Elastic Container Registry (ECR).

O fluxo 3que engloba o treinamento do modelo, representou um grande desafio, uma vez que foi necessário identificar a melhor estratégia para utilização do AutoGluon dentro da AWS. Dado que esse fluxo objetivava apenas o treinamento do modelo, optou-se pela utilização da API do Amazon SageMaker em conjunto com o algoritmo do AutoGluon obtido pelo Docker Registry Path que é disponibilizado pelo Amazon SageMaker. Dessa forma, para cada conjunto de dados que a API recebe, é iniciado um evento de Training Job assíncrono e, assim que a criação do modelo é finalizada, os outputs são salvos no Amazon S3.

A criação do modelo no S3 atua como um trigger para uma função Lambda que move os arquivos do S3 para o Sistema de arquivos elástico da Amazono qual está montado e é acessado por uma aplicação Flask, hospedada em um container gerenciado pelo serviço Serviço de contêiner elástico da Amazon (ECS), em conjunto com o AWS Fargate. Quanto a aplicação, esta possui como responsabilidade acessar os modelos no sistema de arquivos e retornar o resultado das inferências.

Na sequência, para realizar as inferências (fluxo 4), foi utilizado uma função Lambda que recebe os dados enviados pelo usuário para serem classificados, e se comunica com a aplicação Flask mencionada anteriormente.

Por fim, para o fluxo 5utilizamos os serviços API Gateway, Lambda e Amazon DynamoDB com o objetivo de fornecer para o usuário final todas informações em relação aos modelos.

Considerações Finais

A elaboração da API de Aprendizado de Máquina No-Code viabilizou a inserção da inteligência artificial em diversos projetos e setores da empresa. A arquitetura desenvolvida facilitou o consumo da API e desencadeou maiores possibilidades de integração com a solução.

Os próximos passos abrangem o monitoramento da API para acompanhamento de sua utilização e de seus custos operacionais.


Sobre os autores

André Ruas é desenvolvedor na Senior Sistemas, e também atua na área de pesquisa de software. Possui interesse nos campos de arquitetura serverless e inteligência artificial.

Paula Campigotto é pesquisadora na Senior Sistemas, atua desenvolvendo aplicações utilizando aprendizado de máquina, computação na nuvem, arquitetura serverless e outras tecnologias em expansão. Além disso, é mestranda na Universidade Federal do Paraná na área de Computação Bioinspirada.

Amanda Machado é squad leader na Senior Sistemas e mestranda da Universidade Federal de Santa Catarina (UFSC) na área de otimização de algoritmos. Tem experiência na área de ciência de dados, aprendizado de máquina e desenvolvimento de aplicações com foco em pesquisa e inovação.

Felipe Brito é arquiteto de soluções na AWS e atua guiando clientes nas melhores práticas de arquitetura na nuvem. Possui experiência com projetos de desenvolvimento de software e Analytics.


Fonte

Previous articleSelecionando a ferramenta de descoberta certa para sua migração para a nuvem
Next articleAcelere a refatoração de código utilizando as Recomendações Automatizadas do AWS Microservice Extractor for .NET

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.