Como implantar modelos de aprendizado de máquina no Heroku
Publicados: 2021-01-05O aprendizado de máquina é um processo contínuo que envolve extração de dados, limpeza, seleção de recursos importantes, construção de modelo, validação e implantação para testar o modelo em dados não vistos.
Embora a fase inicial de engenharia de dados e construção de modelo seja um processo bastante tedioso e exija muito tempo para ser gasto com dados, a implantação do modelo pode parecer simples, mas é um processo crítico e depende do caso de uso que você deseja direcionar. Você pode atender o modelo a usuários móveis, sites, dispositivos inteligentes ou por meio de qualquer outro dispositivo IoT.
Pode-se optar por integrar o modelo na aplicação principal, incluí-lo no SDLC ou na nuvem. Existem várias estratégias para implantar e executar o modelo na plataforma em nuvem, o que parece ser a melhor opção para a maioria dos casos devido à disponibilidade de ferramentas como Google Cloud Platform, Azure, Amazon Web Services e Heroku.
Embora você possa optar por expor o modelo no modo Pub/Sub, a API (Application Program Interface) ou o wrapper REST é mais comumente usado para implantar o modelo em produção. À medida que a complexidade do modelo aumenta, diferentes equipes são designadas para lidar com essas situações comumente conhecidas como Engenheiros de Aprendizado de Máquina. Com essa introdução, vamos ver como implantar um modelo de aprendizado de máquina como uma API na plataforma Heroku.
Índice
O que é Heroku?
Heroku é uma plataforma como uma ferramenta de serviço que permite aos desenvolvedores hospedar seu código sem servidor. O que isso significa é que se pode desenvolver scripts para servir um ou outro para propósitos específicos. A própria plataforma Heroku é hospedada na AWS (Amazon Web Services), que é uma ferramenta de infraestrutura como serviço.
O Heroku é uma plataforma gratuita, mas limitada a 500 horas de uptime. Os aplicativos são hospedados como um dinamômetro que, após inatividade de 30 minutos, entra em modo de suspensão. Isso garante que seu aplicativo não consuma todo o tempo livre durante a inatividade. A plataforma suporta Ruby, Java, PHP, Python, Node, Go, Scala. A maioria dos iniciantes em Data Science se refere a essa plataforma para ter uma experiência de execução e implantação de um modelo na nuvem.

Preparando o Modelo
Agora que você já conhece essa plataforma, vamos preparar o modelo para a mesma. Quando um modelo de aprendizado de máquina é treinado, os parâmetros correspondentes são armazenados na própria memória. Esse modelo precisa ser exportado em um arquivo separado para que possamos carregar diretamente esse modelo, passar dados não vistos e obter as saídas.
Diferentes formatos de modelo são normalmente praticados, como Pickle, job-lib que converte o Python Object Model em um bitstream, ONNX, PMML ou MOJO que é um formato de exportação H20.ai e oferece o modelo para ser integrado também em aplicativos Java. Para simplificar, considere que queremos exportar o modelo via pickle, então você pode fazer isso:
importar picles
Pkl_Filename = “model.pkl”
com open(Pkl_Filename, 'wb') como arquivo:
pickle.dump(nome_modelo, arquivo)
O modelo agora está armazenado em um arquivo separado e pronto para ser usado integrado a uma API.
A lógica do servidor
Para fornecer acesso a esse modelo para previsões, precisamos de um código de servidor que possa redirecionar e lidar com todas as solicitações do lado do cliente. Python suporta frameworks de desenvolvimento web e um famoso é o Flask.
É um framework minimalista que permite configurar um servidor com poucas linhas de código. Como é um pacote mínimo, muitas funcionalidades como autenticação e natureza RESTful não são explicitamente suportadas. Estes podem ser integrados com extensões.
Outra opção é optar pelo framework FastAPI recém-lançado. É muito mais rápido, escalável, bem documentado e vem com muitos pacotes integrados. Por enquanto, vamos continuar com o frasco para configurar uma rota de previsão simples.
do frasco importação Frasco
importar picles
app = Flask(__name__)
com open(Filename, 'rb') como arquivo:
modelo = pickle.load(arquivo)
@app.route('/predict', métodos = ['GET', 'POST'])

def pred():
# implementa a lógica para obter parâmetros por meio de consulta ou carga útil
previsão = model.predict([parâmetros obtidos])
return {'resultado': previsão}
Este é um código aproximado para mostrar como proceder com a lógica do servidor. Existem várias estratégias que você pode optar por uma melhor implementação.
Confira: Guia para implantar modelos de ML usando o Streamlit
Configurando arquivos de implantação
O Heroku requer uma lista de todas as dependências exigidas pelo nosso aplicativo. Isso é chamado de arquivo de requisitos. É um arquivo de texto listando todas as bibliotecas externas que o aplicativo usa. Neste exemplo, o conteúdo do arquivo conteria:
frasco
aprender
numpy </p>
pandas
gunicorn
A última biblioteca, gunicorn, nos permite configurar a implementação do servidor WSGI que forma a interface para o cliente e o servidor que trata do tráfego HTTP. O Heroku também exige outro arquivo conhecido como Procfile que é usado para especificar o ponto de entrada do aplicativo. Considere que o arquivo de lógica do servidor é salvo pelo nome main.py, então o comando a ser colocado neste arquivo é:
web: gunicorn main:app

“web” é o tipo de dyno que estamos implantando, “gunicorn” atua como mediador para passar a solicitação para o código do servidor “main” e procurar por “app” em “main”. O aplicativo lida com todas as rotas aqui.
Implantação final
Todos os preparativos estão feitos e agora é hora de executar o aplicativo na nuvem. Crie uma conta se não estiver no Heroku, clique em criar um aplicativo, escolha qualquer região. Depois disso, conecte sua conta do GitHub e escolha o repositório que contém esses arquivos: código do servidor, model.pkl, requirements.txt e Procfile.
Depois disso, basta clicar em deploy branch! Se for bem-sucedido, acesse o link gerado e seu aplicativo deve estar ativo. Agora você pode fazer solicitações para a rota appname.herokuapp.com/predict e deve fornecer as previsões. Saiba mais sobre modelos de aprendizado de máquina.
Conclusão
Esta foi uma introdução ao que é o Heroku, por que é necessário e como implantar um modelo com a ajuda do Flask. Existem muitas plataformas de hospedagem que oferecem recursos mais avançados, como Data Pipelines, streaming, mas o Heroku sendo a plataforma gratuita ainda é uma boa opção para iniciantes que querem apenas ter um gostinho da implantação.
Se você estiver interessado em aprender mais sobre aprendizado de máquina, confira o PG Diploma in Machine Learning & AI do IIIT-B e upGrad, projetado para profissionais que trabalham e oferece mais de 450 horas de treinamento rigoroso, mais de 30 estudos de caso e atribuições, IIIT- B Status de ex-aluno, mais de 5 projetos práticos práticos e assistência de trabalho com as principais empresas.
Quais são as desvantagens de usar a plataforma Heroku?
O Heroku não é ideal para grandes empresas, pois a documentação da plataforma não é extensa. Outro problema é o sistema de arquivos somente leitura, que dificulta o manuseio de uploads de arquivos volumosos, como filmes ou fotografias de alta resolução. Heroku é um provedor de plataforma como serviço com uma quantidade limitada de personalização. A Heroku só aceita pagamentos em USD e não em outras moedas, como EUR. Para os empresários que preferem pagar em sua própria moeda, isso pode ser um pequeno inconveniente. Além disso, dentro do CRE (Common Runtime Environment), o Heroku não fornece endereços IP estáticos.
Como o Heroku é diferente da AWS?
O procedimento de implantação na AWS não é simples e, como resultado, não é particularmente fácil de usar em termos de complexidade. O Heroku fornece um ambiente pronto para uso que é simples de operar. O Heroku é mais caro que o AWS, pois requer menos intervenção humana. A AWS pode lidar com necessidades computacionais altas ou muito altas, enquanto o Heroku pode lidar com demandas computacionais modestas. A Heroku, diferentemente da AWS, não requer manutenção regular de infraestrutura. AWS e Heroku são rápidos quando se trata de implantação.
Por quanto tempo posso usar o Heroku sem nenhum custo?
As contas Heroku têm um conjunto de horas de dinamômetro gratuitas que podem ser usadas em aplicativos gratuitos. Isso substitui o limite de 18 horas nos programas gratuitos, permitindo que funcionem 24 horas por dia, se necessário. Novas contas recebem 550 horas de dinamômetro gratuitas, com 450 horas adicionais se você validar sua identidade com um cartão de crédito. A Heroku oferece um plano gratuito para ajudá-lo a aprender a tecnologia e começar. Muitos complementos do Heroku fornecem um plano gratuito, assim como os Heroku Buttons e Buildpacks.