Hugging Face 存储桶发布

Hugging Face 推出了 Storage Buckets,这是一种可变的、类似 S3 的对象存储系统,专为中间机器学习产物设计。该新存储层允许开发者管理高吞吐量数据——如检查点、优化器状态和处理后的分片——而无需 Git 版本控制的开销。

通过 Xet 优化机器学习产物存储

Storage Buckets 由 Xet 提供支持,Xet 是一种基于块的存储后端,可在文件之间去重内容。不同于将文件视为单块大对象的传统对象存储,Xet 将内容拆分为块,使系统能够跳过已在 Hub 上存在的字节。

该架构对机器学习工作负载特别有益,因为相关产物常常共享大量重叠,例如:

  • 连续检查点: 大部分模型保持不变。
  • 处理后的数据集: 通常与原始数据集大体相似。
  • Agent 跟踪: 以及其派生的摘要。

对于企业客户,这种效率也体现在成本上,因为计费基于去重后的存储占用,可降低带宽使用量和总计费存储量。

为高吞吐计算进行预热

为降低分布式训练和大规模流水线的延迟,Hugging Face 引入了“预热”。此功能允许用户声明所需的数据位置,将热点数据迁移至计算所在的云提供商和区域附近。

通过减少每次读取时跨区域拉取数据的需求,预热提升了训练集群和多区域流水线的吞吐量。Hugging Face 目前正与 AWS 和 GCP 合作提供此功能,未来还计划支持更多提供商。

集成与编程访问

Storage Buckets 通过多种接口集成到 Hugging Face 生态系统中,可在用户或组织命名空间下作为非版本化容器进行管理。

CLI 与 Python API

用户可以使用 hf CLI 或 huggingface_hub Python 库(自 v1.5.0 起可用)管理 bucket。关键操作包括:

  • 创建: hf buckets create [name] --private
  • 同步: hf buckets sync [local_dir] [hf_path]
  • 检查: hf buckets list [bucket_name] -h

通过 fsspec 的文件系统集成

通过 HfFileSystem,Buckets 与 fsspec 标准兼容。这使得可以使用 hf:// 路径直接与 pandas、Polars、Dask 等数据库集成。例如,可以直接读取 CSV 到 pandas DataFrame,而无需本地下载:pd.read_csv("hf://buckets/username/my-training-bucket/results.csv")

JavaScript 支持

Bucket 支持也可通过 @huggingface/hub 库(自 v2.10.5 起)用于 Node.js 服务和 Web 应用。

工作流:从可变存储到版本化仓库

Storage Buckets 充当正在变化的产物的工作层。一旦产物成为稳定的交付物,预期的工作流是将其从 Bucket 移动到版本化的模型或数据集仓库。Hugging Face 计划实现 Bucket 与仓库之间的直接转移,以简化最终检查点权重或处理后分片向官方 Hub 发布的推广。

可用性与定价

Storage Buckets 已包含在现有的 Hub 存储计划中。免费账户提供初始存储,PRO 与 Enterprise 计划则提供更高的配额。

Sources