Data Science Python

Deploy de Modelos com Heroku

Fala galera! Hoje vou mostrar como fazer o deploy de modelos, ou seja, colocar em produção de uma aplicação que usa modelos de machine learning, de uma forma bem simples. Vamos utilizar a aplicação criada no post (Modelos em Produção com Streamlit), se não viu ainda, corre lá para ver! Para construir a aplicação utilizamos o pandas para organizar nosso dataset e utilizar os dados no scikit-learn para criar nosso modelo. Para exibir os dados de uma forma gráfica contamos com o matplotlib, juntamos tudo isso no framework streamlit e criamos uma aplicação web. Tudo isso utilizando a linguagem python! Ainda tem dúvidas se o python é útil?

Agora vou te apresentar mais duas plataformas para você colocar no seu kit de ferramentas. Assim vai ser possível fazer o deploy de uma aplicação. Quanto mais ferramentas você tiver em seu kit, mais possibilidades você tem para resolver seus problemas. Agora vamos conhecer o Heroku e o Git, e os passo que precisamos seguir para realizar o tão sonhado deploy.

O que é o Heroku?

O Heroku é uma plataforma de serviços em nuvem, que suporta diversas linguagens de programação, inclusive o python! Lá é possível hospedar uma aplicação web rodando como serviço fornecido pelo Heroku. A plataforma disponibiliza de um serviço free (gratuito) com uma certa limitação de recurso. Mas que é suficientes para pequenas demonstrações de aplicações de ciência de dados.

A aplicação vai ficar disponível para ser consumida através do link fornecido no momento do deploy. Podendo ser acessada em qualquer lugar do mundo, legal isso né?! Agora vai ser preciso criar uma conta na plataforma, cujo site está na imagem abaixo. Para criar uma conta gratuita basta clicar aqui.

Agora com a conta criada podemos criar o nosso app para fazer o deploy. Botão New > Create new app.

Colocar um nome válido em App name, escolher a região em Choose a region, onde vai estar o servidor da aplicação e selecionar o pipeline em Add this app to a pipeline.

Como estamos criando um novo app, então vamos criar um nome pipeline também, ao selecionar Create new pipeline, o nome já vem sugerido com o mesmo nome da aplicação (mas pode ser alterado). Como vamos colocar em produção, na opção Choose a stage to add this app to selecionar production. Em seguida o botão Create app.

Vamos utilizar a opção de deploy com Heroku Git.

Para isso vamos realizar o download e instalar o Heroku CLI que vamos utilizar ele no momento de fazer o deploy. Agora vamos ver o que é Git, que é necessário para realizarmos o deploy.

O que é o Git?

O Git é um sistema de versionamento, ou seja, controla as versões de arquivos de um projeto. É uma plataforma free e open source (gratuita e de código aberto), muito utilizada para desenvolvimento de software. Para utilizá-la preciso realizar o download e instalar o Git.

Pode ser utilizado contas do GitHub e GitLab por exemplo, que tem hospedagem gratuita de código fonte para repositório Git.

Neste repositório do Git vamos ter todos os nossos arquivos necessários para que a aplicação rode, como podemos ver abaixo.

Note que além do arquivo app.py, que é a nossa aplicação em python com streamlit, temos alguns outros arquivos que são importantes para configuração. Vou te apresentar os arquivos essenciais para o deploy no Heroku.

Arquivos de Configuração Heroku

Além do arquivo da aplicação, três arquivos de configuração não podem faltar. Sem eles a aplicação não vai rodar no Heroku, são eles o requirements.txt, o setup.sh e o Procfile.

Requirements

O arquivo requirements.txt é responsável por importar as bibliotecas python necessárias para a aplicação. Todas as que usamos no import na aplicação e suas dependências, mas não se preocupe, caso se esqueça alguma, o Heroku vai apresentar um erro na hora do deploy, basta acrescentar e fazer o deploy novamente. Abaixo podemos ver as bibliotecas que utilizamos no app.

Setup

O arquivo setup.sh é responsável por fazer a configuração do streamlit no servidor Heroku. Caso você copie o arquivo para a sua aplicação, basta alterar apenas o e-mail, colocando o que você cadastrou na plataforma Heroku. Abaixo o arquivo e em destaque o ponto de onde alterar o e-mail para utilizar em outra aplicação.

Procfile

O arquivo Procfile, é isso mesmo com P maiúsculo e sem extensão, ele é responsável rodar a aplicação no servidor do Heroku, chamando o streamlit e rodando a aplicação app.py. Caso você copie o arquivo para a sua aplicação, basta alterar apenas o nome do arquivo, colocando o nome que você deu para o arquivo .py. Abaixo o arquivo e em destaque o ponto de onde alterar nome do arquivo para utilizar em outra aplicação.

Onde a Mágica Acontece!

Após todos os arquivos configurados e devidamente no repositório, finalmente vamos realizar o deploy. Vamos aos comandos para subir a aplicação.

Realizar o login no Heroku CLI

heroku login

Criar um novo repositório Git

cd my-project/
git init
heroku git:remote -a nomemeuapp

Deploy da aplicação

git add .
git commit -am "Texto histórico para o commit"
git push heroku master

Ao final vai ser gerado um link similar ao da aplicação na imagem abaixo

Acesse AQUI a aplicação.

Deploy de Modelos ao Cubo

Então, viram como é mais fácil do que imaginavam, pois bem, chegamos ao fim de mais um post! Hoje vimos um passo a passo de como fazer um deploy de modelos, ou seja, colocar em produção de uma aplicação com streamlit na plataforma Heroku. Portanto, fechamos a etapa de como criar uma solução com ciência de dados do zero, no post NLP com scikit-learn pegamos um problema do mundo real de classificação de produtos, então no post Modelos em Produção com Streamlit pegamos o modelo de machine learning solução para o problema, já treinado e demos vida a ele em uma aplicação web. Por fim agora com o Deploy de Modelos com Heroku disponibilizamos ele para ser consumido pelo usuário final.

Vou deixar disponível para quem quiser consultar, copiar, melhorar e usar a vontade o repositório no GitHub, lá vc encontra a aplicação completa. Querendo ver ver a aplicação funcionando dá uma conferida no app Classificação Mercadológica.

Até o próximo post, e lembre-se sempre, a sua melhor referência é a documentação e os links estão logo abaixo.

Referências sobre Deploy de Modelos

Conteúdos ao Cubo

Por fim, deixo algumas sugestões de conteúdos que você pode encontrar no Dados ao Cubo, sempre falando sobre o mundo dos dados.

Então, finalizo com um convite para você ser Parceiro de Publicação Dados ao Cubo e escrever o próximo artigo, compartilhando conhecimento para toda a comunidade de dados. Mas, não esqueça de assinar a nossa Newsletter para ficar por dentro de todas as novidades. 

Gostou? Compartilhe!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *