Skip to main content

使用 GPU 的 Spaces

你可以通过 Space 页面顶部导航栏中的 Settings 按钮,将 Space 升级为使用 GPU 加速器。如果你正在为个人项目构建一个很酷的 Demo,还可以申请免费升级!

Spaces GPU SettingsSpaces GPU Settings
tip

从长期来看,我们也希望支持非 GPU 硬件,比如 HPU、IPU 或 TPU。如果你有想要使用的特定 AI 硬件,欢迎在 huggingface.co 网站上告诉我们。

一旦 Space 在 GPU 上运行,你可以通过以下徽章直接看到它运行在哪种硬件上:

Spaces Running BadgeSpaces Running Badge

硬件规格​

下列表格展示了各种升级选项的硬件规格。

CPU​

硬件CPU内存GPU 内存磁盘每小时价格
CPU Basic2 vCPU16 GB-50 GBFree!
CPU Upgrade8 vCPU32 GB-50 GB$0.03

GPU​

硬件CPU内存GPU 内存磁盘每小时价格
Nvidia T4 - small4 vCPU15 GB16 GB50 GB$0.40
Nvidia T4 - medium8 vCPU30 GB16 GB100 GB$0.60
1x Nvidia L48 vCPU30 GB24 GB400 GB$0.80
4x Nvidia L448 vCPU186 GB96 GB3200 GB$3.80
1x Nvidia L40S8 vCPU62 GB48 GB380 GB$1.80
4x Nvidia L40S48 vCPU382 GB192 GB3200 GB$8.30
8x Nvidia L40S192 vCPU1534 GB384 GB6500 GB$23.50
Nvidia A10G - small4 vCPU14 GB24 GB110 GB$1.00
Nvidia A10G - large12 vCPU46 GB24 GB200 GB$1.50
2x Nvidia A10G - large24 vCPU92 GB48 GB1000 GB$3.00
4x Nvidia A10G - large48 vCPU184 GB96 GB2000 GB$5.00
Nvidia A100 - large12 vCPU142 GB80 GB1000 GB$2.50
Nvidia H10023 vCPU240 GB80 GB3000 GB$4.50
8x Nvidia H100184 vCPU1920 GB640 GB24 TB$36.00

通过代码配置硬件​

你可以使用 huggingface_hub 以编程方式配置 Space 的硬件。这对于需要动态分配 GPU 的各种场景非常有用。
更多细节请查看这篇指南。

针对不同框架的要求​

大多数 Space 在升级 GPU 后可以开箱即用,但有时你需要安装与内置 CUDA 驱动兼容的机器学习框架版本。请遵循本节指南,确保你的 Space 能充分利用更强的硬件。

PyTorch​

你需要安装与内置 CUDA 驱动兼容的 PyTorch 版本。通常在 requirements.txt 中加入下面两行即可:

--extra-index-url https://download.pytorch.org/whl/cu113
torch

你可以在 app.py 中运行以下代码,并在 Space 日志中查看输出,以验证安装是否成功:

import torch
print(f"Is CUDA available: {torch.cuda.is_available()}")
# True
print(f"CUDA device: {torch.cuda.get_device_name(torch.cuda.current_device())}")
# Tesla T4

很多框架在检测到 GPU 可用时会自动使用 GPU,例如 🤗 transformers 的 Pipelines、fastai 等。在其他情况下,或者你直接使用 PyTorch 时,可能需要手动将模型和数据移动到 GPU,确保计算真正发生在加速卡上而不是 CPU 上。你可以使用 PyTorch 的 .to() 语法,例如:

model = load_pytorch_model()
model = model.to("cuda")

JAX​

如果你使用 JAX,需要指定包含 CUDA 兼容包的 URL。请在 requirements.txt 中添加以下内容:

-f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
jax[cuda11_pip]
jaxlib

之后,你可以运行下面的代码并在 Space 日志中查看输出,验证安装是否成功:

import jax

print(f"JAX devices: {jax.devices()}")
# JAX devices: [StreamExecutorGpuDevice(id=0, process_index=0)]
print(f"JAX device type: {jax.devices()[0].device_kind}")
# JAX device type: Tesla T4

Tensorflow​

默认安装的 tensorflow 应该会识别 CUDA 设备。只需在 requirements.txt 中添加 tensorflow,并在 app.py 中运行下面的代码,在 Space 日志中进行验证:

import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))
# [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

计费​

Spaces 的计费基于硬件使用时间,并按分钟计算:只要 Space 在所请求的硬件上处于运行状态,你就会被计费,无论是否有用户访问。

在 Space 的生命周期中,仅在 Space 处于 Running 状态时才会计费。这意味着构建和启动阶段不产生费用。

如果正在运行的 Space 出现故障,将被自动挂起,计费也会停止。

运行在免费硬件上的 Spaces 在长时间(例如两天)未被访问时会自动暂停。升级后的 Space 默认会一直运行,即使没有访问。你可以在 Space 设置中配置自定义 “sleep time” 来改变这一行为。要停止 Space 的计费,可以将硬件切换回 CPU basic,或者将其暂停。

更多关于计费的信息,请参考 Hub 级别的计费章节。

Community GPU Grants​

你是否有一个很棒的 Space,但需要帮助分担 GPU 硬件升级成本?我们非常乐意帮助那些有创意的 Space,欢迎申请社区 GPU 资助,看看你的项目是否符合条件!你可以在 Space 硬件设置页面左下角的 “sleep time settings” 下找到申请入口:

Community GPU Grant

设置自定义 sleep time​

如果你的 Space 运行在默认的 cpu-basic 硬件上,当超过一定时间(当前为 48 小时)无人访问时,它会进入休眠。任何访问者都会自动重新唤醒该 Space。

如果你希望 Space 永不休眠,或者希望设置自定义的休眠时间,就需要升级到付费硬件。

默认情况下,升级后的 Space 永不休眠。不过,你可以使用此设置,让升级后的 Space 在长时间未使用时进入空闲状态(stopped),在休眠期间不会为升级硬件付费。一旦有新的访问者,Space 就会被“唤醒”并重新启动。

下面的界面会出现在 Space 的硬件设置中:

Spaces Sleep TimeSpaces Sleep Time

可用的选项如下:

Spaces Sleep Time OptionsSpaces Sleep Time Options

暂停 Space​

你可以在仓库设置中将 Space 设为 pause。被暂停的 Space 处于挂起状态,不会使用任何资源,只有 Space 的拥有者可以手动重新启动。暂停期间不会产生费用。