Gradio-Lite: 完全在浏览器中运行的无服务器 Gradio

Hugging Face 已宣布 Gradio-Lite (@gradio/lite),这是一个 JavaScript 库,允许 Gradio 应用完全在用户的网页浏览器中运行。通过利用 Pyodide,一个用于 WebAssembly 的 Python 运行时,@gradio/lite 消除了对服务器端基础设施的需求,使得交互式机器学习应用可以实现无服务器部署。

技术架构与实现

@gradio/lite 使用 Pyodide 在浏览器环境中直接执行 Python 代码。这种架构使开发者能够编写标准的 Python 代码来构建 Gradio 应用,并在客户端无缝渲染。

集成步骤

要部署 Gradio-Lite 应用,开发者需要遵循以下三个主要步骤:

  1. 导入资源:通过 CDN(例如 jsDelivr)包含 @gradio/lite JavaScript 和 CSS 文件。
  2. 定义容器:在 HTML body 内创建 <gradio-lite> 标签,以指定应用应呈现的位置。theme 属性(例如 theme="dark")可用于覆盖系统主题。
  3. 编写 Python 代码:将 Gradio Python 代码直接放置在 <gradio-lite> 标签内部。

高级配置

@gradio/lite 支持超越单文件脚本的复杂应用结构:

  • 多文件<gradio-file> 标签允许开发者定义多个文件。应用的入口点必须使用 entrypoint 属性进行标记。
  • 依赖管理:可以使用 micropip 的包装器在浏览器中安装自定义的 Python 依赖。依赖项使用标准的 requirements.txt 语法列在 <gradio-requirements> 标签内。

基于浏览器执行的主要优势

在客户端运行 Gradio 应用相比传统的基于服务器的托管提供了三个主要优势:

  • 无服务器部署:它消除了对服务器基础设施的需求,降低了托管成本并简化了共享过程。
  • 低延迟:交互更快,因为数据不需要在客户端和服务器之间传输,从而带来更流畅的用户体验。
  • 隐私与安全:所有数据处理在用户设备上本地进行,确保用户数据保持私密和安全。

当前限制

尽管无服务器执行有诸多好处,但 @gradio/lite 仍有两个主要限制:

  • 初始加载时间:应用通常需要 5 到 15 秒才能完成初始加载,因为浏览器必须先下载并安装 Pyodide 运行时。
  • 包兼容性:并非所有 Python 包都受支持。虽然像 numpyscikit-learntransformers-js 这样的流行库是兼容的,但开发者必须验证其特定依赖是否可在 Pyodide 中获得或可以通过 micropip 安装。

Sources