streamlit、shiny、gradio、fastapi四个web APP平台体验
经常被问的问题就是:web APP平台哪个好?该用哪个?刚开始只有用streamlit和shiny,最近体验了一下gradio和fastapi,今天根据自己的体会尝试着回答一下。
使用R语言的话,用shiny比较方便,使用python的话,四个都可以用。
用户界面
从美观方面来说,最美观的应该是streamlit,字体按钮等颜色搭配都比较鲜艳;shiny有一点“学术气”,方方正正,也有很多主题可以选择;gradio整体比较“素”, 可以用“简洁”来形容;fastapi应该算是没有界面。
从组件的丰富程度来看,shiny应该是最丰富的,网页上还有的都有,像提示按钮,弹出框等都有;streamlit 感觉稍微少一些,但是也足够用,两各都有丰富的第三方库的支持,包括算法的支持和组件的支持,用这两个库的人也是做多的;gradio是最近的比较晚,主要是自身带的一些组件;fastapi没有组件。
应用领域
shiny主要应用在数据科学领域和机器学习领域,数据处理、统计分析和预测模型构建,还有生物信息学,深度学习的文字、图片和视频的处理较少涉及;streamlit就都有涉及,比较全面一些;gradio也都可以处理,个人感觉偏深度学习一些,对LLM、视频和图片的处理有一些独特的设计,比如streaming形式,用于一边处理一遍显示返回数据;fastapi主要功能是产生API供其它的程序调用,本来觉得在数据科学放,方面没什么用途,最近API可以作为LLM模型调用的组件(工具),用fastAPI部署机器学习模型似乎也有了用武之地,顺便说一句gradio也可生成API。
部署的便利性
四种web APP都有途径进行免费的部署,一般都是限制算力,shiny官网有5个的数量限制,streamlit官网没有数量限制,算力也比shiny给的多,gradio是huggingface的,所以部署在算力和数量上也算没问题,shiny和streamlit也可以在huggingface上进行部署,但是国内不好访问。
另外,一个我常用的部署的方式就是使用shinyproxy,官方文档中是支持四种web APP的部署,shiny和streamlit 是完全没问题的,但是gradio尝试了几次,还是有些问题,fastapi最近会尝试一下,部署成功了API怎么用还要再研究。
使用建议
这些web APP平台还在不断地发展,就个人经验来说,选择哪个平台主要看使用目的,数据处理和机器学习可以选择shiny和streamlit, 深度学习可以选择gradio和streamlit, 如果想LLM模型结合,我感觉gradio和fastapi似乎更有前途。
总结
web APP的代码相对简单,门槛不高;花费也不多,更不需要像手机app等被各大平台限制,也不需要软件著作权。相对地,功能却很广泛,数据分析上可以把自己的数据分析套路固定成APP,节省分析的时间并分享给别人使用;机器学习和深度学习上以承载构建的模型并实现与用户的交流。随着AI时代的到来,在AI应用方面也会占有一定的地位。