在 Spaces 上使用 Shiny
Shiny 是一个用于构建简单、美观且高性能数据应用的开源框架。 开发 Shiny 的目标是构建一个足够简单、可以在一个下午教会某人,但又足够可扩展以支持大型关键任务应用的工具。 你可以在几分钟内创建一个有用的 Shiny 应用,但如果你的项目范围扩大,你可以确信 Shiny 能够适应该应用。
Shiny 与其他框架的主要区别在于其响应式执行模型。 当你编写 Shiny 应用时,框架会推断输入、输出和中间计算之间的关系,并使用这些关系仅渲染因用户操作而需要更改的内容。 结果是用户可以轻松开发高效、可扩展的应用,而无需显式缓存数据或编写回调函数。
Shiny for Python
Shiny for Python 是 Shiny 的纯 Python 实现。 这让你 可以访问 Shiny 的所有强大功能,如响应式、复杂布局和模块,而无需使用 R。 Shiny for Python 非常适合 Hugging Face 应用,因为它可以与其他 Hugging Face 工具无缝集成。
要开始部署 Space,请点击此按钮选择你的硬件并指定你想要公共还是私有 Space。 Space 模板将填充一些文件以启动你的应用。
app.py
此文件定义你的应用逻辑。要了解如何修改此文件,请参阅 Shiny for Python 文档。 随着应用变得更加复杂,最好将应用逻辑分解为模块。
Dockerfile
Shiny for Python 应用的 Dockerfile 非常简单,因为该库没有太多系统依赖,但如果你的应用有额外的系统依赖,你可能需要修改此文件。 此文件的一个基本特性是它在 space README 文件中指定的端口(默认为 7860)上暴露并运行应用。
requirements.txt
Space 将自动安装 requirements.txt 文件中列出的依赖。 请注意,你必须在此文件中包含 shiny。
Shiny for R
Shiny for R 是 R 社区中流行且成熟的应用框架,如果你想在 Hugging Face 基础设施上托管 R 应用或使用一些优秀的 Shiny R 扩展,这是一个不错的选择。 要将 Hugging Face 工具集成到 R 应用中,你可以使用 httr2 调用 Hugging Face API,或使用 reticulate 调用 Hugging Face Python SDK 之一。
要部署 R Shiny Space,请点击此按钮并填写 space 元数据。 这将用你开始所需的所有文件填充 Space。
app.R
此文件包含你的所有应用逻辑。如果你愿意,可以将此文件分解为 ui.R 和 server.R。
Dockerfile
Dockerfile 基于 rocker shiny 镜像构建。你需要修改此文件以使用其他包。
如果你使用大量 tidyverse 包,我们建议将基础镜像切换为 rocker/shinyverse。
你可以通过在 dockerfile 的 RUN install2.r 部分添加它们来安装其他 R 包,可以通过在 RUN installGithub.r 下添加仓库来安装 github 包。
此 Dockerfile 有两个主要要求:
-
首先,文件必须暴露你在 README 中列出的端口。默认为 7860,除非你有理由,否则我们建议不要更改此端口。
-
其次,目前你必须使用 httpuv 的开发版本,它解决了 Hugging Face 上应用超时的问题。