Modelos de Machine Learning são interessantes e poderosos, mas não são muito úteis por si só. Uma vez que um modelo está completo, ele provavelmente precisa ser implantado (deploy) antes que possa entregar qualquer tipo de valor. Além disso, ser capaz de implantar um modelo preliminar ou um protótipo para obter feedback de outras partes interessadas é extremamente útil.
Recentemente, surgiram várias ferramentas que Cientistas de Dados e Engenheiros de Machine Learning podem usar para implantar de forma rápida e fácil um modelo de aprendizado de máquina.
Neste artigo, veremos 4 alternativas que você pode usar para o deploy de um modelo de Machine Learning: Gradio, Streamlit, Dash e Flask.
Qual Devo Usar?
Vamos começar com um resumo geral:
Gradio: foi desenvolvido especificamente com modelos de aprendizado de máquina em mente. Portanto, se você deseja criar uma interface web especificamente para um modelo de aprendizado de máquina que você construiu, a sintaxe e a configuração simples do Gradio são o caminho a percorrer.
Streamlit: é útil se você deseja ter um painel (dashboard) instalado e funcionando rapidamente e ter a flexibilidade de adicionar muitos componentes e controles. Além disso, o Streamlit permite que você crie uma interface web ou um painel muito mais rápido do que Dash ou Flask.
Dash: escolha o Dash se você deseja ter um painel pronto para produção, já que ele é feito principalmente para ambientes corporativos em médias e grandes empresas.
Flask: escolha Flask se você tiver conhecimento de programação Python / HTML / CSS e quiser construir sua própria solução do zero.
Vamos analisar prós e contras de cada solução.
Gradio
Gradio é uma ferramenta poderosa usada para criar interfaces de usuário de modelo de aprendizado de máquina. É um pacote Python perfeitamente compatível com vários frameworks de Machine Learning, como PyTorch e TensorFlow. Ele também pode ser usado para criar interfaces de usuário em torno de scripts Python de uso geral.
A popularidade da Gradio está aumentando rapidamente. Ele está sendo usado por laboratórios de aprendizado de máquina em grandes empresas como Cisco e Amazon, bem como em ambientes acadêmicos como o de Medicina em Stanford.
Prós
O Gradio oferece vários componentes de UI (User Interface) personalizáveis que são otimizados para modelos de aprendizado de máquina. Por exemplo, o Gradio oferece uma interface de classificação de imagem de arrastar e soltar fácil de usar e altamente otimizada para o usuário.
É muito fácil e rápido configurar o Gradio. Pode ser instalado diretamente através do pip. Além disso, a criação de interfaces no Gradio requer apenas algumas linhas de código.
O Gradio cria links compartilháveis que são provavelmente a maneira mais rápida de colocar um modelo de aprendizado de máquina implantado na frente dos usuários
Ao contrário dos outros pacotes, Gradio pode ser executado em qualquer lugar de dentro de um Jupyter Notebook / Colab ou de um script Python autônomo.
Contras:
Embora o Gradio tenha uma boa documentação no site oficial, é difícil encontrar informações e exemplos suficientes sobre os recursos específicos que oferece, pois ainda é muito novo.
Gradio tem uma comunidade menor do que alguns dos outros pacotes, tornando mais difícil encontrar recursos auxiliares.
O Gradio é específico para a construção de UIs para modelos de aprendizado de máquina e menos para painéis.
Streamlit
Streamlit é outra ferramenta popular usada para criar interfaces de usuário. É uma biblioteca Python de código aberto usada para construir aplicativos web personalizados e poderosos para Ciência de Dados e Machine Learning. O Streamlit é compatível com várias bibliotecas e estruturas importantes, como Latex, OpenCV, Vega-Lite, Seaborn, PyTorch, NumPy, Altair e muito mais.
Assim como o Gradio, o Streamlit também é popular e usado entre grandes líderes da indústria, como Uber e Google.
Prós:
Streamlit é acessível para todos que entendem de Python. Não há requisitos para HTML e CSS.
Possui uma ampla variedade de componentes de UI. Ele cobre quase todos os componentes comuns da UI, como caixa de seleção, controle deslizante, barra lateral recolhível, botões de opção, upload de arquivo, barra de progresso, etc. Além disso, esses componentes são muito fáceis de usar.
Ele suporta várias bibliotecas de visualização interativa, como Latex, OpenCV, Vega-Lite, etc.
Contras:
Embora não seja difícil, o Streamlit requer algum tempo para aprender sua própria sintaxe.
Streamlit não é tão flexível. Ele é baseado apenas em Python, oferece um conjunto limitado de widgets e não se integra com Jupyter Notebooks Python.
O limite de upload de dados é de apenas 50 MB.
O suporte para vídeo / animação é limitado.
Dash
Dash é uma biblioteca Python de código aberto usada para criar aplicativos web. É uma biblioteca de interface do usuário. Dash é uma ferramenta poderosa para construir aplicativos web analíticos.
Prós:
O Dash pode ser usado com vários domínios, como exploração de dados, análise de dados, modelagem, visualização, controle de instrumentos e relatórios.
É muito simples de usar. Pode ser instalado diretamente através do pip.
Além de Python, ele pode ser usado com R e Julia.
Os aplicativos do painel são reativos.
Dash é mais personalizável do que Streamlit. Além disso, o Dash oferece melhor desempenho.
O Dash tem uma documentação melhor, atualizada regularmente e fácil de seguir.
Contras:
O Dash está mais focado no mercado corporativo e não inclui todos os recursos disponíveis na versão de código aberto.
Dash é mais prolixo do que Gradio ou Streamlit; você precisa escrever mais código para criar aplicativos web simples em comparação com outros frameworks.
Flask
https://flask.palletsprojects.com/en/1.1.x/
Flask é um framework web para Linguagem Python usado para construir aplicativos web. Oferece vários módulos para desenvolvimento web que facilitam o trabalho do desenvolvedor. O Flask também tem recursos para implantar um modelo de aprendizado de máquina, embora qualquer trabalho de front-end deva ser feito pelo desenvolvedor. Isso significa que, como Cientista de Dados ou Engenheiro de Machine Learning, você também deve estar familiarizado com HTML, CSS e JavaScript.
Prós:
Por ser um framework, você pode construir tudo do zero de acordo com suas próprias necessidades.
Usando o flask, é mais fácil construir aplicativos personalizáveis.
Aplicativos web mais genéricos podem ser construídos usando o Flask.
O Flask é muito maduro e estável; algo que você constrói com o Flask tem mais certeza de continuar trabalhando no futuro.
Existe uma extensa documentação sobre o Flask e bibliotecas relacionadas.
Contras:
O Flask não fornece nenhum tipo de componente de UI para aplicativos de aprendizado de máquina ou Data Science. Tudo tem que ser desenvolvido.
É necessário conhecimento intermediário de Python, bem como conhecimento de HTML, CSS e JavaScript.
Construir a solução do zero pode exigir muitos recursos.
Conclusão
A escolha da ferramenta depende sempre das necessidades do projeto! Mas só o fato de termos escolhas à disposição demonstra o amadurecimento da Ciência de Dados.
Fonte: Gradio vs Streamlit vs Dash vs Flask
Outras Referências: