Hugging Face Hub 推出 Storage Buckets
摘要
Hugging Face 推出 Storage Buckets,这是 Hub 上全新的可变性类 S3 对象存储功能,通过其 Xet 后端实现高效去重,专为生产级 ML 工作流优化。
查看缓存全文
缓存时间: 2026/05/08 09:21
Hugging Face Hub 推出 Storage Buckets
来源:https://huggingface.co/blog/storage-buckets 返回文章列表 (https://huggingface.co/blog)
- 我们为何构建 Buckets (https://huggingface.co/blog/storage-buckets#why-we-built-buckets)
- Xet 为何重要 (https://huggingface.co/blog/storage-buckets#why-xet-matters)
- 预热:让数据贴近计算 (https://huggingface.co/blog/storage-buckets#pre-warming-bringing-data-close-to-compute)
- 快速开始 (https://huggingface.co/blog/storage-buckets#getting-started)
- 通过 Python 使用 Buckets (https://huggingface.co/blog/storage-buckets#using-buckets-from-python)
- 文件系统集成 (https://huggingface.co/blog/storage-buckets#filesystem-integration)
- 从 Buckets 到版本化仓库 (https://huggingface.co/blog/storage-buckets#from-buckets-to-versioned-repos)
- 受启动合作伙伴信赖 (https://huggingface.co/blog/storage-buckets#trusted-by-launch-partners)
- 总结与资源 (https://huggingface.co/blog/storage-buckets#conclusion-and-resources)
Hugging Face 的 Models 和 Datasets 仓库非常适合发布最终产物。但生产环境中的 ML 会持续产生大量中间文件(检查点、优化器状态、处理后的分片、日志、追踪记录等),这些文件频繁变更、来自多个并行任务、且很少需要版本控制。
Storage Buckets 正是为此而生:一种可在 Hub 上浏览、通过 Python 脚本操作、或使用 hf CLI 管理的可变性 S3 风格对象存储。而且由于它们由 Xet 提供底层支持,对于跨文件共享内容的 ML 产物尤为高效。
我们为何构建 Buckets (https://huggingface.co/blog/storage-buckets#why-we-built-buckets)
当你遇到以下场景时,Git 很快就不再是合适的抽象:
- 训练集群在运行过程中持续写入检查点和优化器状态
- 数据管道迭代式处理原始数据集
- Agent 存储追踪记录、记忆和共享知识图谱
这些场景的存储需求是一致的:快速写入、按需覆盖、同步目录、清理过期文件、保持流转。
Bucket 是 Hub 上的非版本化存储容器。它位于用户或组织命名空间下,拥有标准的 Hugging Face 权限,可设为私有或公开,有可在浏览器中打开的页面,并可通过 hf://buckets/username/my-training-bucket 这样的句柄以编程方式访问。
Xet 为何重要 (https://huggingface.co/blog/storage-buckets#why-xet-matters)
Buckets 构建于 Xet 之上——Hugging Face 的基于分块的存储后端,这一点的重要性可能超乎你的想象。
Xet 不是将文件视为整体 blob,而是将内容拆分为分块并跨文件去重。上传一个与原始数据集大部分相似的处理后数据集?许多分块已经存在。存储连续检查点中模型大部分冻结的部分?同理。Buckets 会跳过已存在的字节,这意味着更少的带宽、更快的传输和更高效的存储。
这与 ML 工作负载天然契合。训练管道持续产生相关产物家族——原始与处理后的数据、连续检查点、Agent 追踪记录及其派生摘要——而 Xet 正是为了利用这种重叠而设计的。
对于企业客户,计费基于去重后的存储量,因此共享分块直接减少计费占用。去重在速度和成本方面都有帮助。
预热:让数据贴近计算 (https://huggingface.co/blog/storage-buckets#pre-warming-bringing-data-close-to-compute)
Buckets 位于 Hub 上,默认提供全球存储。但并非每个工作负载都能承受从数据实际存储位置拉取数据的代价,对于分布式训练和大规模管道,存储位置直接影响吞吐量。
预热功能让你将热数据带到计算所在的云提供商和区域附近。数据不再在每次读取时跨区域传输,你只需声明需求位置,Buckets 就能确保在任务开始前数据已就绪。这对于需要快速访问大型数据集或检查点的训练集群,以及管道不同部分运行在不同云上的多区域设置尤为实用。
我们首批与 AWS 和 GCP 合作,未来将有更多云提供商加入。
快速开始 (https://huggingface.co/blog/storage-buckets#getting-started)
使用 hf CLI 可在 2 分钟内创建并运行 bucket。首先安装并登录:
curl -LsSf https://hf.co/cli/install.sh | bash
hf auth login
为你的项目创建 bucket:
hf buckets create my-training-bucket --private
假设你的训练任务正在本地 ./checkpoints 目录写入检查点,将该目录同步到 Bucket:
hf buckets sync ./checkpoints hf://buckets/username/my-training-bucket/checkpoints
对于大规模传输,你可能想在执行前查看将要发生的操作。--dry-run 会打印计划而不执行任何操作:
hf buckets sync ./checkpoints hf://buckets/username/my-training-bucket/checkpoints --dry-run
你也可以将计划保存到文件中以便稍后审阅和应用:
hf buckets sync ./checkpoints hf://buckets/username/my-training-bucket/checkpoints --plan sync-plan.jsonl
hf buckets sync --apply sync-plan.jsonl
完成后,通过 CLI 查看 Bucket:
hf buckets list username/my-training-bucket -h
或直接在 Hub 上浏览:https://huggingface.co/buckets/username/my-training-bucket。
这就是完整的流程。创建 bucket,将工作数据同步进去,需要时查看,值得发布的产物再保存到版本化仓库。对于一次性操作,hf buckets cp 复制单个文件,hf buckets remove 清理过期对象。
通过 Python 使用 Buckets (https://huggingface.co/blog/storage-buckets#using-buckets-from-python)
上述所有功能也可通过 Python 的 huggingface_hub 实现(自 v1.5.0 起可用)。API 遵循相同的模式:创建、同步、查看。
from huggingface_hub import create_bucket, list_bucket_tree, sync_bucket
create_bucket("my-training-bucket", private=True, exist_ok=True)
sync_bucket(
"./checkpoints",
"hf://buckets/username/my-training-bucket/checkpoints",
)
for item in list_bucket_tree(
"username/my-training-bucket",
prefix="checkpoints",
recursive=True,
):
print(item.path, item.size)
这使得将 Buckets 集成到训练脚本、数据管道或任何以编程方式管理产物的服务中变得简单直接。Python 客户端还支持批量上传、选择性下载、删除和 bucket 迁移,以便在需要更精细控制时使用。
Bucket 支持也可通过 JavaScript 的 @huggingface/hub(自 v2.10.5 起)使用,因此你也可以将 Buckets 集成到 Node.js 服务和 Web 应用中。
文件系统集成 (https://huggingface.co/blog/storage-buckets#filesystem-integration)
Buckets 还可通过 HfFileSystem 使用,这是 huggingface_hub 中兼容 fsspec 的文件系统。这意味着你可以使用标准文件系统操作来列出、读取、写入和 glob Bucket 内容——任何支持 fsspec 的库都可以直接访问 Buckets。
from huggingface_hub import hffs
# 列出 bucket 目录中的文件
hffs.ls("buckets/username/my-training-bucket/checkpoints", detail=False)
# Glob 特定文件
hffs.glob("buckets/username/my-training-bucket/**/*.parquet")
# 直接读取文件
with hffs.open("buckets/username/my-training-bucket/config.yaml", "r") as f:
print(f.read())
由于 fsspec 是 Python 远程文件系统的标准接口,pandas、Polars 和 Dask 等库可以直接使用 hf:// 路径从 Buckets 读写,无需额外配置:
import pandas as pd
# 直接从 Bucket 读取 CSV
df = pd.read_csv("hf://buckets/username/my-training-bucket/results.csv")
# 将结果写回
df.to_csv("hf://buckets/username/my-training-bucket/summary.csv")
这使得将 Buckets 接入现有数据工作流变得简单,无需更改代码的读写方式。
从 Buckets 到版本化仓库 (https://huggingface.co/blog/storage-buckets#from-buckets-to-versioned-repos)
Buckets 是产物仍在流转时的快速、可变存储场所。一旦某物成为稳定的可交付成果,它通常应归入版本化的模型或数据集仓库。
在我们的路线图中,计划支持 Buckets 与仓库之间的双向直接传输:将最终检查点权重提升到模型仓库,或在管道完成后将处理后的分片提交到数据集仓库。工作层和发布层保持分离,但融入连续的 Hub 原生工作流中。
受启动合作伙伴信赖 (https://huggingface.co/blog/storage-buckets#trusted-by-launch-partners)
在面向所有人开放 Buckets 之前,我们与一小群启动合作伙伴进行了私测。
衷心感谢 Jasper、Arcee、IBM 和 PixAI 测试早期版本、发现 bug 并分享直接塑造了这一功能的反馈。
总结与资源 (https://huggingface.co/blog/storage-buckets#conclusion-and-resources)
Storage Buckets 为 Hub 带来了缺失的存储层。它们为 ML 中可变、高吞吐量的部分提供了 Hub 原生的存储场所:检查点、处理后的数据、Agent 追踪记录、日志,以及所有在成为最终产物之前有用的东西。
由于构建于 Xet 之上,Buckets 不仅比强制所有内容通过 Git 更易用,对于 AI 系统持续产生的相关产物类型也更加高效。这意味着更快的传输、更好的去重,以及在企业方案中受益于去重后占用的计费方式。
如果你已经在使用 Hub,Buckets 让你能将更多工作流保留在一处。如果你来自 S3 风格的存储,它们提供了熟悉的模式,同时对 AI 产物有更好的适配性,并有清晰的通往 Hub 最终发布的路径。
Buckets 已包含在现有的 Hub 存储方案 中。免费账户提供入门存储,PRO 和 Enterprise 方案提供更高限额。详见存储页面。
阅读更多并亲自尝试:
- Buckets 指南 (https://huggingface.co/docs/huggingface_hub/en/guides/buckets)
- Hub 文档 (https://huggingface.co/docs/hub/storage-buckets)
- CLI 安装指南 (https://huggingface.co/docs/huggingface_hub/en/installation)
- CLI 指南 (https://huggingface.co/docs/huggingface_hub/en/guides/cli) 和参考 (https://huggingface.co/docs/huggingface_hub/en/package_reference/cli)
- Hub 上的示例 Bucket (https://huggingface.co/buckets/julien-c/my-training-bucket)
- 存储定价 (https://huggingface.co/pricing#storage)
相似文章
@ClementDelangue:Hugging Face 正成为代理使用和构建 AI 的平台,现在它们可以调用 100 万个 HF Spaces,完成最新专用模型所能做的一切……
Hugging Face 现允许 AI 代理调用 100 万个 Spaces,把 Hub 变成可编程平台,代理可随手调用任何专用模型或应用。
@socialwithaayan: Hugging Face 刚刚开源了每位研究者梦寐以求的 ML Intern 不再需要花费数天阅读论文和编写训练脚本…
Hugging Face 开源了 ml-intern,这是一个自主代理,能够阅读 ML 论文、发现数据集、训练模型、调试失败、并将生产就绪的模型上传到 Hub,自动化整个后训练工作流程。
介绍模块化扩散器 - 用于扩散管道的可组合构建块
Hugging Face 推出了模块化扩散器(Modular Diffusers),这是一个使用可组合、可重用的构建块而非单体管道实现的新框架,用于构建扩散管道。该系统允许灵活地混合匹配图像生成工作流的组件,并支持与 Mellon 等可视化工作流工具的集成。
帮助数据中心以更少的硬件实现更高性能
麻省理工学院的研究人员开发了Sandook,这是一种基于软件的系统,通过同时解决SSD的三个变异性来源,将数据中心存储性能提升近一倍,效率远超传统方法。
DeepInfra 正式加入 Hugging Face Inference Providers 🔥
DeepInfra 已作为官方推理提供商加入 Hugging Face Hub,用户现在可以直接通过 HF 界面和 SDK 对 DeepSeek V4、Kimi-K2.6 等模型进行无服务器推理。