gradio | streamit | dash | |
---|---|---|---|
主要使用场景 | 可交互 Demo简单 | 工作流、DashBoard | DashBoard、复杂演示应用 |
上手难度 | 简单 | 简单 | 中等 |
组件丰富度 | 低 | 高 | 高 |
综合扩展性 | 低 | 中 | 高 |
Jupyter Notebook 内支持 | 是 | 否 | 是 |
是否完全开源 | 是 | 是 | 部分企业级功能未开源 |
github stars | 22.5k | 27.8k | 19.4k |
案例列表 | gradio案例 | streamlit案例 | dash案例 |
1 Gradio
Gradio是一个开源的Python库,用于构建演示机器学习或数据科学,以及web应用程序
优点:
- 组件的封装程度高,并且尤其适合机器学习模型相关的应用
- 可以快速创建可共享的链接,从而方便将链接分享给用户
- 可以直接在 Jupyter Notebook 中展示;支持简单UI交互
缺点:
- 组件的扩展性比较差,添加组件需要修改源代码
- 使用场景较为简单,很难满足复杂的数据图表展示需求
2 streamit
Streamlit 能在几分钟内将数据脚本转变为可共享的 Web 应用程序。全部都是 Python、开源且免费!创建应用程序后还可以使用我们的社区云平台来部署、管理和共享您的应用程序
优点:
- 默认组件库丰富,支持多种可视化展示和数据集本地上传等功能
- 支持自定义组件以及异步加载,也因此社区组件比较丰富
缺点:
- 更加独立,没有办法较好地直接展示在 Notebook 中
- 由于更加灵活,并且内置功能较多,需要一定的学习成本
进阶教程:Streamlit 官方文档
3 dash
Dash 构建于 Plotly.js、React 和 Flask 之上,将下拉列表、滑块和图表等现代 UI 元素直接与分析性 Python 代码联系起来;适用于 Python 的数据应用程序和仪表板。无需 JavaScript
优点:
- 支持丰富的编程语言(Python、R、Julia)和可视化图表
- 后端基于 flask,也意味着后端的扩展能力非常强大。
- 可以通过一定的适配,支持在 Jupyter Notebook 中使用。
缺点:
- 实际上,使用 dash 相当于使用 python 编写 html + 后端,因此代码会比较冗长,同时也不适合网站开发者,和现代的主流前后端开发理念有所违和。
- 不适合大型项目,通常来说用户响应速度没有 JS 快(因为是纯 python 编写前端)
4 其他低代码部署
voila 4.9k⭐:将 Jupyter 笔记本变成独立的 Web 应用程序
Panel 3.2k⭐:具备强大的数据探索能力,支持快速构建Web应用
Vizro 1.8k⭐:基于 plotly 和 Dash 的数据可视化快速开发工具
5 项目/模型分享平台
Hugging Face Hub 是一个拥有超过 12 万个模型、2 万个数据集和 5 万个演示应用程序 (Space) 的平台,所有这些都是开源且公开的,在一个在线平台上,人们可以轻松协作并一起构建机器学习
ModelScope(魔搭)建立在“模型即服务”(MaaS) 的概念之上。它旨在汇集人工智能社区最先进的机器学习模型,并简化在实际应用中利用人工智能模型的过程。该存储库中开源的核心 ModelScope 库提供了允许开发人员执行模型推理、训练和评估的接口和实现。
Code Ocean 是一个计算研究平台,供研究人员和发现团队轻松创建、组织和共享项目代码、数据、环境和结果,并保证可重复性。每个项目都打包有一个Code Ocean Compute Capsule,包括元数据、代码、数据、环境。结果作为完整的包进行保存和生命周期管理,以实现可信共享和重用。 入门示例
Binder 允许您创建可由许多远程用户共享和使用的自定义计算环境;使用 Binder能在可执行环境中打开这些笔记本,使任何人、任何地方都可以立即重现您的代码。Binder 服务由 BinderHub 提供支持,BinderHub 是一个在 Kubernetes 上运行的开源工具
JupyterHub 是为多个用户提供 Jupyter Notebook 的最佳方式。由于 JupyterHub 为每个用户管理一个单独的 Jupyter 环境,因此它可以在一个学生班级、一个企业数据科学小组或一个科学研究小组中使用。它是一个多用户集线器,可生成、管理和代理单用户 Jupyter 笔记本服务器的多个实例