Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Spaces 概览

Hugging Face Spaces 使您可以轻松地在几分钟内创建和部署 ML 驱动的演示。观看以下视频,快速了解 Spaces

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

创建新的 Space

要创建新的 Space,请访问 Spaces 主页 并点击 创建新的 Space。在为 Space 选择名称、选择可选许可证和设置 Space 的可见性之后,系统会提示您为 Space 选择 SDK。Hub 提供四个 SDK 选项:Gradio、Streamlit、Docker 和静态 HTML。如果您选择“Gradio”作为 SDK,您将被导航到一个新的仓库,显示以下页面

在底层,Spaces 将您的代码存储在 git 仓库中,就像模型和数据集仓库一样。因此,我们用于 Hub 上其他仓库的所有相同工具(gitgit-lfs)也适用于 Spaces。按照 仓库入门 中的相同流程将文件添加到您的 Space。每次推送新提交时,Space 将自动重建并重启。

有关创建您的第一个 Space 的分步教程,请参阅以下指南

硬件资源

默认情况下,每个 Spaces 环境都限制为 16GB RAM、2 个 CPU 核心和 50GB(非持久性)磁盘空间,您可以免费使用。您可以升级到更好的硬件,包括各种 GPU 加速器和持久存储,价格极具竞争力。要请求升级,请点击您 Space 中的设置按钮,然后选择您首选的硬件环境。

硬件 GPU 内存 CPU 内存 磁盘 每小时价格
CPU 基础版 - 2 个 vCPU 16 GB 50 GB 免费!
CPU 升级版 - 8 个 vCPU 32 GB 50 GB $0.03
Nvidia T4 - 小型 16GB 4 个 vCPU 15 GB 50 GB $0.60
Nvidia T4 - 中型 16GB 8 个 vCPU 30 GB 100 GB $0.90
Nvidia A10G - 小型 24GB 4 个 vCPU 15 GB 110 GB $1.05
Nvidia A10G - 大型 24GB 12 个 vCPU 46 GB 200 GB $3.15
2x Nvidia A10G - 大型 48GB 24 个 vCPU 92 GB 1000 GB $5.70
4x Nvidia A10G - 大型 96GB 48 个 vCPU 184 GB 2000 GB $10.80
Nvidia A100 - 大型 40GB 12 个 vCPU 142 GB 1000 GB $4.13
存储层级 大小 持久性 每月价格
临时(默认) 50GB 免费!
小型 临时 + 20GB $5
中型 临时 + 150GB $25
大型 临时 + 1TB $100

注意:在我们的定价页面上查找更详细和全面的定价信息。

您是否有一个很棒的 Space,但需要帮助支付硬件升级成本?我们很乐意帮助那些拥有创新 Space 的用户,因此请随时使用您 Space 的设置选项卡中的链接申请社区 GPU 资助,看看您的 Space 是否符合条件!

在关于 Spaces GPU 升级Spaces 存储升级 的专用章节中阅读更多内容。

管理密钥和环境变量

如果您的应用程序需要环境变量(例如,密钥或令牌),请不要将它们硬编码到您的应用程序中!而是转到您的 Space 仓库的设置页面,并添加新的变量密钥。如果您需要存储非敏感的配置值,请使用变量;对于存储访问令牌、API 密钥或任何敏感值或凭据,请使用密钥。

如果您需要存储非敏感的配置值,可以使用

  • 变量。它们是公开可访问和可查看的,并将自动添加到从您的 Space 复制的 Space。
  • 密钥用于存储访问令牌、API 密钥或任何敏感值或凭据。它们是私有的,并且一旦设置,就无法从 Space 的设置页面读取其值。它们不会添加到从您的仓库复制的 Space。

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

  • 对于静态 Space,两者都可通过客户端 JavaScript 在 window.huggingface.variables 中获得
  • 对于 Docker Spaces,请查看使用 Docker 进行环境管理
  • 对于 Streamlit Spaces,密钥通过 Streamlit 密钥管理 向您的应用程序公开,公共变量直接作为环境变量提供

对于其他 Spaces,两者都作为环境变量向您的应用程序公开。这是一个非常简单的示例,说明如何在 Python 中访问先前声明的 MODEL_REPO_ID 变量(对于密钥来说也是一样的)

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

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

复制 Space

如果您想使用另一个演示作为初始模板来构建新的演示,则复制 Space 会很有用。如果您想拥有一个单独的升级 Space 以供您自己使用快速推理,则复制 Space 也可能很有用。

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

  • 所有者:复制的 Space 可以位于您的帐户下,也可以位于您拥有写入权限的任何组织中
  • Space 名称
  • 可见性:Space 默认情况下是私有的。在此处阅读有关私有仓库的更多信息:此处
  • 硬件:您可以选择 Space 将在其上运行的硬件。在此处阅读有关硬件升级的更多信息:此处
  • 存储:如果原始仓库使用持久存储,系统将提示您选择存储层级。在此处阅读有关持久存储的更多信息:此处
  • 密钥和变量:如果原始仓库设置了一些密钥和变量,您可以在复制仓库时设置它们。

某些 Space 可能具有您可能需要设置的环境变量。在这些情况下,复制工作流程将自动填充源 Space 中的公共变量,并向您发出有关设置密钥的警告。复制的 Space 默认情况下将使用免费的 CPU 硬件,但您可以稍后根据需要进行升级。

网络

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

生命周期管理

在免费硬件上,如果 Space 长时间未使用,则会“进入休眠”并停止执行。如果您希望 Space 无限期运行,请考虑升级到付费硬件。您也可以从设置选项卡手动暂停您的 Space。暂停的 Space 将停止执行,直到其所有者手动重启。暂停时间不计费。

辅助环境变量

在某些情况下,您可能对以编程方式访问 Space 作者或仓库名称感兴趣。当您希望用户复制您的 Space 时,此功能特别有用。为了帮助您实现这一点,Spaces 在运行时公开不同的环境变量。给定一个 Space osanseviero/i-like-flan

  • CPU_CORES: 4
  • MEMORY: 15Gi
  • SPACE_AUTHOR_NAME: osanseviero
  • SPACE_REPO_NAME: i-like-flan
  • SPACE_TITLE: I Like Flan (在 README 文件中指定)
  • SPACE_ID: osanseviero/i-like-flan
  • SPACE_HOST: osanseviero-i-like-flan.hf.space
  • SPACE_CREATOR_USER_ID: 6032802e1f993496bc14d9e3 - 这是最初创建 Space 的用户的 ID。如果 Space 位于组织下,则此功能非常有用。您可以使用 API 调用 https://huggingface.co/api/users/{SPACE_CREATOR_USER_ID}/overview 获取用户信息。

如果您的 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 页面右上角的下拉菜单

选择“克隆仓库”,然后您将能够按照说明使用 HTTPS 或 SSH 将 Space 仓库克隆到本地计算机。

链接 Hub 上的模型和数据集

您可以通过在 Space 的 README 元数据中添加模型和数据集的标识符,来展示您的 Space 链接到的所有模型和数据集。为此,您可以在 modelsdatasets 键下定义它们。除了在 README 文件中列出工件之外,您还可以在任何 .py.ini.html 文件中记录它们。我们将自动解析它!

这是一个从 Space 链接两个模型的示例

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
< > 在 GitHub 上更新