Hub documentation

Spaces 概览

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Spaces 概览

Hugging Face Spaces 让您能够在几分钟内轻松创建和部署基于机器学习的演示。观看以下视频,快速了解 Spaces:

在以下章节中,您将学习创建 Space、配置 Space 以及将代码部署到 Space 的基础知识。

创建新的 Space

要创建新的 Space,请访问 Spaces 主页 并点击 创建新 Space。除了为您的 Space 选择名称、选择可选的许可证以及设置您的 Space 的 可见性(公开、受保护或私有)之外,系统还会提示您选择您的 Space 的 SDK。Hub 提供三种 SDK 选项:Gradio、Docker 和静态 HTML。如果您选择“Gradio”作为您的 SDK,您将被引导到一个显示以下页面的新仓库:

静态 Spaces 对所有人免费。Gradio 和 Docker Spaces 需要计算资源,创建时需付费计划:个人账户为 PRO,组织为 Team 或 Enterprise。状态良好的免费个人账户仍可托管最多 2 个运行在 ZeroGPU 上的 Gradio Spaces。

在底层实现上,Spaces 将您的代码存储在一个 git 仓库中,与模型和数据集仓库相同。得益于这一点,我们用于 Hub 上所有其他仓库的相同工具(git 和 git-xet)也适用于 Spaces。请按照仓库入门中的相同流程向您的 Space 添加文件。每次推送新的提交时,Space 都会自动重新构建并重启。

如需了解创建第一个 Space 的分步教程,请参阅以下指南:

空间可见性

您可以通过 Settings 选项卡中的可见性下拉菜单来设置 Space 的可见性。Spaces 支持三种可见性级别:public、protected 和 private。

受保护的可见性是 PRO 或 Team & Enterprise 计划的一部分。

公开受保护私有
Hub 上的源代码所有人可见私有(仅所有者/协作者)私有(仅所有者/协作者)
可通过嵌入 URL 访问的应用是的是的No
可通过自定义域名访问的应用是的是的No
可被他人克隆是的NoNo

Public Spaces 是完全公开的:任何人都可以查看源代码、访问正在运行的应用以及克隆该仓库。

受保护的 Spaces 在 Hub 上保持其源代码私有——只有所有者和协作者可以查看或克隆该仓库。不过,正在运行的应用可以通过其嵌入 URL(https://<space-subdomain>.hf.space)访问,或者在配置了 自定义域名 时通过该域名访问。这对于在不公开源代码的情况下托管网站或应用尤其有用。

Private Space 是完全私有的:源代码和正在运行的应用仅对所有者和协作者可见。该 Space 不会出现在搜索结果中,其他用户访问其 URL 时会收到 404 错误。

硬件资源

每个 Spaces 环境默认限制为 16GB 内存、2 个 CPU 核心以及 50GB 的(非持久化)磁盘空间。默认的 CPU Basic 硬件不产生按小时计费的费用,但创建运行在计算资源(Gradio 或 Docker)上的 Space 需要付费计划,而 Static Spaces 对所有人免费。您可以以具有竞争力的价格升级到更好的硬件,包括多种 GPU 加速器。如需申请升级,请点击您 Space 中的Settings 按钮,并选择您偏好的硬件环境。

硬件CPU内存GPU 内存每小时价格
CPU 基础2 个 vCPU16 GB免费
CPU 升级8 个 vCPU32 GB$0.03
Nvidia T4 - 小型4 个 vCPU15 GB16 GB$0.40
Nvidia T4 - 中等8 个 vCPU30 GB16 GB$0.60
1x Nvidia L48 个 vCPU30 GB24 GB$0.80
4x Nvidia L448 个 vCPU186 GB96 GB$3.80
1x Nvidia L40S8 个 vCPU62 GB48 GB$1.80
4x Nvidia L40S48 个 vCPU382 GB192 GB$8.30
8x Nvidia L40S192 vCPU1534 GB384 GB$23.50
1x Nvidia RTX PRO 600023 个 vCPU256 GB96 GB$2.75
2x Nvidia RTX PRO 600046 个 vCPU512 GB192 GB$5.50
4x Nvidia RTX PRO 600092 vCPU1024 GB384 GB$11.00
8x Nvidia RTX PRO 6000184 个 vCPU2048 GB768 GB$22.00
Nvidia A10G - 小型4 个 vCPU15 GB24 GB$1.00
Nvidia A10G - 大型12 个 vCPU46 GB24 GB$1.50
2x Nvidia A10G - 大型24 个 vCPU92 GB48 GB$3.00
4x Nvidia A10G - 大型48 个 vCPU184 GB96 GB$5.00
Nvidia A100 - 大型12 个 vCPU142 GB80 GB$2.50
4x Nvidia A10048 个 vCPU568 GB320 GB$10.00
8x Nvidia A10096 vCPU1136 GB640 GB$20.00

注意:有关更详细和全面的定价信息,请访问我们的定价页面。

您是否拥有一个出色的 Space,但需要帮助支付硬件升级费用?我们乐于为具有创新性的 Space 提供支持,因此请随时使用您 Space 的 Settings 选项卡中的链接申请社区 GPU 资助,看看您的项目能否入选!

在我们的专门章节中阅读更多有关 Spaces GPU 升级 和 Spaces 磁盘使用量与存储 的内容。

管理密钥和环境变量

如果您的应用需要环境变量(例如密钥或令牌),请勿在应用内部硬编码它们!相反,请前往您的 Space 仓库的 Settings 页面,添加一个新的 variable 或 secret。如果您需要存储非敏感的配置值,请使用 variables;如果要存储访问令牌、API 密钥或任何敏感值或凭据,请使用 secrets。

您可以使用:

  • 如果您需要存储非敏感的配置值,请使用变量。它们可公开访问和查看,并且会自动添加到从您的 Spaces 复制生成的 Spaces 中。
  • 用于存储访问令牌、API 密钥或任何敏感值或凭据的Secrets。它们是私有的,设置后无法从 Space 的设置页面读取其值。它们不会被添加到从您的仓库复制的 Spaces 中。

访问密钥和变量的方式因您使用的 Space SDK 而异:

  • 对于静态 Spaces,两者均可通过 window.huggingface.variables 中的客户端 JavaScript 访问。
  • 对于 Docker Spaces,请参阅使用 Docker 进行环境管理

对于其他 Spaces,两者都会作为环境变量暴露给你的应用。以下是一个在 Python 中访问之前声明的 MODEL_REPO_ID 变量的非常简单的示例(对于 secrets 也是如此):

import os
print(os.getenv('MODEL_REPO_ID'))

当我们的 Spaces Secrets Scanner 发现硬编码的密钥时,Spaces 所有者会收到警告。

复制 Space

如果您想以另一个演示作为初始模板来构建新的演示,复制 Space 会很有用。如果您希望拥有一个专用于快速推理的独立升级版 Space,复制 Space 同样会很有帮助。

如果您想复制一个 Space,可以单击该 Space 右上角的三个点,然后单击 Duplicate this Space。执行此操作后,您将可以更改以下属性:

  • Owner: 重复的 Space 可以位于您的账户下,或位于您拥有写入权限的任何组织中
  • 空间名称
  • 可见性:Space 默认为私有。有关可见性选项的更多信息,请参见此处。
  • 硬件:您可以选择 Space 运行的硬件。有关硬件升级的更多信息,请参见此处。
  • 存储:如果原始仓库使用了存储桶,系统将提示您配置存储。有关磁盘使用和存储的更多信息,请参见此处。
  • Secrets 和 variables:如果原始仓库已设置了一些 secrets 和 variables,你可以在复制仓库时进行设置。

某些 Spaces 可能包含需要您配置的环境变量。在这种情况下,复制流程会自动从源 Space 填充公开的 Variables,并提醒您设置 Secrets。复制后的 Space 默认使用 CPU Basic 硬件,但您可以根据需要稍后升级。复制遵循与创建新 Space 相同的规则:复制 Gradio 或 Docker Space 要求目标账户或组织拥有付费计划(个人账户享有相同的 ZeroGPU 免费层级 例外)。

网络

如果您的 Space 需要发起任何网络请求,您可以通过标准的 HTTP 和 HTTPS 端口(80 和 443)以及端口 8080 发起请求。发往其他端口的任何请求都会被阻止。

生命周期管理

在免费硬件上,如果长时间未使用,您的 Space 将进入“休眠”状态并停止运行。如果您希望 Space 持续运行,请考虑升级到付费硬件。您还可以在设置标签页中手动暂停您的 Space。已暂停的 Space 将停止运行,直到拥有写入权限的用户将其重新启动。 暂停期间不计费。

内置环境变量

在某些情况下,您可能希望以编程方式访问 Space 的作者或仓库名称。当您预期用户会复制您的 Space 时,此功能尤为有用。为此,Spaces 在运行时暴露了不同的环境变量(另请参阅 Jobs 中的内置环境变量)。对于给定的 Space osanseviero/i-like-flan:

  • ACCELERATOR:可用的加速器类型(例如 t4-medium、a10g-small),对于仅使用 CPU 的 Spaces,则为 none。
  • CPU_CORES: 4
  • MEMORY:15Gi
  • SPACE_AUTHOR_NAME: osanseviero
  • SPACE_REPO_NAME:i-like-flan
  • SPACE_TITLE:我喜欢 Flan(在 README 文件中指定)
  • SPACE_ID: osanseviero/i-like-flan
  • SPACE_HOST: osanseviero-i-like-flan.hf.space
  • SPACE_CREATOR_USER_ID:6032802e1f993496bc14d9e3 - 这是最初创建该 Space 的用户的 ID。如果该 Space 隶属于某个组织,此信息会很有用。您可以通过向 https://huggingface.co/api/users/{SPACE_CREATOR_USER_ID}/overview 发起 API 调用来获取用户信息。
  • SPACE_SIGNING_SECRET:一个专属于您 Space 的随机密钥,以 secret 的形式暴露。它在重启、重建和副本之间保持不变,因此您可以使用它对 cookie、OAuth state 或 CSRF token 等内容进行签名。如果您想使用自己的值,请在您的 Space 设置中添加一个名为 SPACE_SIGNING_SECRET 的 secret。

如果您的 Space 启用了 OAuth,以下变量也可用:

  • OAUTH_CLIENT_ID:您的 OAuth 应用的客户端 ID(公开)
  • OAUTH_CLIENT_SECRET:您的 OAuth 应用的客户端密钥
  • OAUTH_SCOPES:您的 OAuth 应用可访问的作用域。目前,此值始终为 "openid profile"。
  • OPENID_PROVIDER_URL:OpenID 提供方的 URL。OpenID 元数据可在 {OPENID_PROVIDER_URL}/.well-known/openid-configuration 处获取。

克隆仓库

您可以轻松地将您的 Space 仓库克隆到本地。首先,点击您的 Space 页面右上角的下拉菜单:

选择“Clone repository”,然后按照说明使用 HTTPS 或 SSH 将 Space 仓库克隆到本地机器。

在 Hub 上关联模型和数据集

您可以在 Space 的 README 元数据中添加其标识符,以展示该 Space 关联的所有模型和数据集。为此,您可以在 models 和 datasets 键下定义它们。除了在 README 文件中列出这些工件外,您还可以将它们记录在任何 .py、.ini 或 .html 文件中。我们会自动解析它们!

以下是一个从某个空间中链接两个模型的示例:

title: My lovely space
emoji: 🤗
colorFrom: blue
colorTo: green
sdk: docker
pinned: false
models:
- reach-vb/musicgen-large-fp16-endpoint
- reach-vb/wav2vec2-large-xls-r-1B-common_voice7-lt-ft
Update on GitHub