空间概述
Hugging Face 空间使您可以轻松地在几分钟内创建和部署支持 ML 的演示。观看以下视频以快速了解空间
在以下部分中,您将学习创建空间、配置空间以及将代码部署到空间的基础知识。
创建新空间
要创建一个新空间,请访问 空间主页 并点击创建新空间。除了选择空间名称、选择可选许可证以及设置空间的可见性之外,还会提示您选择空间的SDK。Hub 提供四个 SDK 选项:Gradio、Streamlit、Docker 和静态 HTML。如果您选择“Gradio”作为您的 SDK,您将被导航到一个显示以下页面的新仓库
在幕后,空间将您的代码存储在 git 仓库中,就像模型和数据集仓库一样。因此,我们用于 Hub 上所有 其他仓库 (git
和 git-lfs
) 的相同工具也适用于空间。按照与 仓库入门 中相同的流程向空间添加文件。每次推送新提交时,空间都会自动重建并重新启动。
有关创建第一个空间的分步教程,请参阅以下指南
硬件资源
每个空间环境默认限制为 16GB 内存、2 个 CPU 内核和 50GB (非持久性) 磁盘空间,您可以免费使用。您可以升级到更好的硬件,包括各种 GPU 加速器和持久性存储,以获得 具有竞争力的价格。要请求升级,请点击空间中的“设置”按钮,然后选择您首选的硬件环境。
硬件 | 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 |
注意:在 我们的定价页面 上查找更详细和全面的定价信息。
您是否有很棒的空间但需要帮助支付硬件升级成本?我们喜欢帮助那些拥有创新空间的人,因此请随时使用空间“设置”选项卡中的链接申请社区 GPU 补助金,看看您的空间是否合格!
在有关 空间 GPU 升级 和 空间存储升级 的专用部分中了解更多信息。
管理秘密和环境变量
如果您的应用程序需要环境变量(例如秘密密钥或令牌),请不要在您的应用程序中对其进行硬编码!相反,请转到空间仓库的“设置”页面,并添加新的变量或秘密。如果您需要存储非敏感配置值,请使用变量;对于存储访问令牌、API 密钥或任何敏感值或凭据,请使用秘密。
您可以使用
- 变量如果您需要存储非敏感配置值。它们是公开可访问和可查看的,并将自动添加到从您的空间复制的空间中。
- 秘密用于存储访问令牌、API 密钥或任何敏感值或凭据。它们是私有的,并且一旦设置,它们的价值就无法从空间的设置页面中读取。它们不会添加到从您的仓库复制的空间中。
访问秘密和变量的方式因空间 SDK 而异
- 对于静态空间,两者都可通过
window.huggingface.variables
中的客户端 JavaScript 使用 - 对于 Docker 空间,请查看 使用 Docker 进行环境管理
- 对于 Streamlit 空间,秘密通过 Streamlit 秘密管理 公开给您的应用程序,公共变量直接作为环境变量可用
对于其他空间,两者都作为环境变量公开给您的应用程序。以下是在 Python 中访问先前声明的 MODEL_REPO_ID
变量的非常简单的示例(对于秘密来说也是一样的)
import os
print(os.getenv('MODEL_REPO_ID'))
当我们的 Spaces Secrets Scanner
发现硬编码的秘密 时,会向空间所有者发出警告。
复制空间
如果您想使用另一个演示作为初始模板来构建新的演示,复制空间可能会有用。如果您想拥有一个供您个人使用,并进行快速推断的升级空间,复制空间也很有用。
如果您想复制空间,您可以点击空间右上角的三个点,然后点击复制此空间。完成此操作后,您将能够更改以下属性
- 所有者:复制的空间可以属于您的帐户,也可以属于您拥有写入权限的任何组织
- 空间名称
- 可见性:空间默认情况下是私有的。有关私有仓库的更多信息,请 点击此处。
- 硬件:您可以选择运行空间的硬件。有关硬件升级的更多信息,请 点击此处。
- 存储:如果原始仓库使用持久性存储,系统将提示您选择存储层级。有关持久性存储的更多信息,请 点击此处。
- 秘密和变量:如果原始仓库设置了某些秘密和变量,您将在复制仓库时能够设置它们。
某些空间可能具有需要您设置的环境变量。 在这些情况下,重复工作流程将自动从源空间填充公共变量,并向您发出有关设置 Secrets 的警告。 重复的空间默认使用免费的 CPU 硬件,但您可以在需要时升级。
网络
如果您的空间需要进行任何网络请求,您可以通过标准 HTTP 和 HTTPS 端口(80 和 443)以及端口 8080 进行请求。 任何前往其他端口的请求都会被阻止。
生命周期管理
在免费硬件上,如果您的空间一段时间内未被使用,它将“进入睡眠状态”并停止执行。 如果您希望您的空间无限期运行,请考虑升级到付费硬件。 您也可以从“设置”选项卡手动暂停您的空间。 暂停的空间将停止执行,直到其所有者手动重新启动。 暂停时间不收费。
辅助环境变量
在某些情况下,您可能希望对空间作者或仓库名称进行编程访问。 此功能在您希望用户复制您的空间时特别有用。 为了帮助您做到这一点,Spaces 在运行时公开不同的环境变量。 给定一个空间osanseviero/i-like-flan
CPU_CORES
: 4MEMORY
: 15GiSPACE_AUTHOR_NAME
: osansevieroSPACE_REPO_NAME
: i-like-flanSPACE_TITLE
: 我喜欢 Flan(在 README 文件中指定)SPACE_ID
:osanseviero/i-like-flan
SPACE_HOST
:osanseviero-i-like-flan.hf.space
SPACE_CREATOR_USER_ID
:6032802e1f993496bc14d9e3
- 这是最初创建空间的用户的 ID。 如果空间位于组织下,这很有用。 您可以使用 API 调用https://huggingface.co/api/users/{SPACE_CREATOR_USER_ID}/overview
获取用户信息。
如果为您的空间启用了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
获取。
克隆仓库
您可以轻松地将空间仓库本地克隆。 从点击空间页面右上角的下拉菜单开始
选择“克隆仓库”,然后您将能够按照说明使用 HTTPS 或 SSH 将空间仓库克隆到您的本地机器。
链接 Hub 上的模型和数据集
您可以通过在空间的 README 元数据中添加其标识符来展示空间链接到的所有模型和数据集。 为此,您可以在 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