Spaces ZeroGPU:Spaces 的动态 GPU 分配
ZeroGPU 是一种共享基础设施,它优化了 Hugging Face Spaces 上 AI 模型和演示的 GPU 使用。它根据需要动态分配和释放 NVIDIA A100 GPU,提供
- 免费 GPU 访问:为 Spaces 提供经济高效的 GPU 使用。
- 多 GPU 支持:允许 Spaces 在单个应用程序上同时利用多个 GPU。
与传统的单 GPU 分配不同,ZeroGPU 的高效系统降低了开发人员、研究人员和组织部署 AI 模型的门槛,方法是最大程度地提高资源利用率和能源效率。
使用和托管 ZeroGPU Spaces
- 使用现有的 ZeroGPU Spaces
- 托管您自己的 ZeroGPU Spaces
技术规格
- GPU 类型:Nvidia A100
- 可用 VRAM:每个工作负载 40GB
兼容性
ZeroGPU Spaces 旨在与大多数基于 PyTorch 的 GPU Spaces 兼容。虽然对 transformers
和 diffusers
等高级 Hugging Face 库的兼容性得到增强,但用户应该注意
- 目前,ZeroGPU Spaces 仅与 Gradio SDK 兼容。
- 与标准 GPU Spaces 相比,ZeroGPU Spaces 的兼容性可能有限。
- 在某些情况下可能会出现意外问题。
支持的版本
- Gradio:4+
- PyTorch:2.0.1、2.1.2、2.2.2、2.4.0(注意:由于 PyTorch 错误,不支持 2.3.x)
- Python:3.10.13
ZeroGPU 入门
要利用 Spaces 中的 ZeroGPU,请按照以下步骤操作
- 确保在您的 Space 设置中选择了 ZeroGPU 硬件。
- 导入
spaces
模块。 - 用
@spaces.GPU
装饰与 GPU 相关的函数。
此装饰过程允许 Space 在调用函数时请求 GPU,并在完成时释放它。
示例用法
import spaces
from diffusers import DiffusionPipeline
pipe = DiffusionPipeline.from_pretrained(...)
pipe.to('cuda')
@spaces.GPU
def generate(prompt):
return pipe(prompt).images
gr.Interface(
fn=generate,
inputs=gr.Text(),
outputs=gr.Gallery(),
).launch()
注意:@spaces.GPU
装饰器旨在在非 ZeroGPU 环境中无影响,确保在不同设置下的兼容性。
持续时间管理
对于预计超过默认 60 秒 GPU 运行时间的函数,您可以指定自定义持续时间
@spaces.GPU(duration=120)
def generate(prompt):
return pipe(prompt).images
这将函数的最大运行时间设置为 120 秒。为更快的函数指定更短的持续时间将提高 Space 访问者的队列优先级。
托管限制
通过利用 ZeroGPU,开发者可以创建更高效且可扩展的空间,最大限度地利用 GPU 并减少成本。
反馈
您可以在 HF Hub 上直接分享您对 Spaces ZeroGPU 的反馈:https://huggingface.co/spaces/zero-gpu-explorers/README/discussions
< > 更新 在 GitHub 上