Hub documentation
Spaces 概览
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 |
| 可被他人克隆 | 是的 | No | No |
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 个 vCPU | 16 GB | 免费 | |
| CPU 升级 | 8 个 vCPU | 32 GB | $0.03 | |
| Nvidia T4 - 小型 | 4 个 vCPU | 15 GB | 16 GB | $0.40 |
| Nvidia T4 - 中等 | 8 个 vCPU | 30 GB | 16 GB | $0.60 |
| 1x Nvidia L4 | 8 个 vCPU | 30 GB | 24 GB | $0.80 |
| 4x Nvidia L4 | 48 个 vCPU | 186 GB | 96 GB | $3.80 |
| 1x Nvidia L40S | 8 个 vCPU | 62 GB | 48 GB | $1.80 |
| 4x Nvidia L40S | 48 个 vCPU | 382 GB | 192 GB | $8.30 |
| 8x Nvidia L40S | 192 vCPU | 1534 GB | 384 GB | $23.50 |
| 1x Nvidia RTX PRO 6000 | 23 个 vCPU | 256 GB | 96 GB | $2.75 |
| 2x Nvidia RTX PRO 6000 | 46 个 vCPU | 512 GB | 192 GB | $5.50 |
| 4x Nvidia RTX PRO 6000 | 92 vCPU | 1024 GB | 384 GB | $11.00 |
| 8x Nvidia RTX PRO 6000 | 184 个 vCPU | 2048 GB | 768 GB | $22.00 |
| Nvidia A10G - 小型 | 4 个 vCPU | 15 GB | 24 GB | $1.00 |
| Nvidia A10G - 大型 | 12 个 vCPU | 46 GB | 24 GB | $1.50 |
| 2x Nvidia A10G - 大型 | 24 个 vCPU | 92 GB | 48 GB | $3.00 |
| 4x Nvidia A10G - 大型 | 48 个 vCPU | 184 GB | 96 GB | $5.00 |
| Nvidia A100 - 大型 | 12 个 vCPU | 142 GB | 80 GB | $2.50 |
| 4x Nvidia A100 | 48 个 vCPU | 568 GB | 320 GB | $10.00 |
| 8x Nvidia A100 | 96 vCPU | 1136 GB | 640 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: 4MEMORY:15GiSPACE_AUTHOR_NAME: osansevieroSPACE_REPO_NAME:i-like-flanSPACE_TITLE:我喜欢 Flan(在 README 文件中指定)SPACE_ID:osanseviero/i-like-flanSPACE_HOST:osanseviero-i-like-flan.hf.spaceSPACE_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