跳到主要内容

存储限制

在 Hugging Face,我们致力于为 AI 社区提供大量免费公共仓库存储空间。对于私有仓库,超过免费额度的部分将按存储空间计费(见下表)。

提示

存储限制与策略同时适用于 Hub 上的模型仓库与数据集仓库。

我们持续优化基础设施,以便在未来几年内扩展存储规模,支撑 AI 与机器学习的增长。

我们也会采取措施防止滥用免费的公共存储;总体而言,我们希望用户与组织上传的大模型或数据集尽可能对社区有价值(例如获得较多点赞或下载)。若需要更高的存储上限,请升级到付费的组织或 PRO 账户。

存储方案

账户类型公共存储私有存储
免费用户或组织尽力支持* 🙏
对高价值内容通常可达 5TB
100GB
PRO最多 10TB(已含)* ✅
对高价值内容可申请额外额度 †
1TB + 按量计费
Team 组织基础 12TB + 每个席位 1TB ✅每席位 1TB + 按量计费
Enterprise 组织基础 500TB + 每个席位 1TB 🏆每席位 1TB + 按量计费

💡 Team 或 Enterprise 组织 的订阅包含每席位 1TB 的私有存储。例如组织有 40 名成员,则包含 40TB 私有存储。

* 我们将持续为 AI 社区提供慷慨的公共仓库存储空间。超过前几 GB 时,请负责任地使用此资源,上传对他人真正有价值的内容。若你需要大量存储空间,需要升级到 PRO、Team 或 Enterprise

† 我们会与具有高影响力的社区成员合作,帮助他们尽可能轻松地解锁更大的存储额度。如果你的模型或数据集持续获得大量点赞和下载并达到了限制,请与我们联系。

按量计价

PROTeam 或 Enterprise 组织 包含的 1TB(或每席位 1TB)私有存储之外,额外私有存储按 $25/TB/月 收费,以 1TB 为单位。更多详情见计费文档

仓库限制与建议

除了账户(用户或组织)级别的存储限制,当特定仓库包含大量数据时,还需要注意一些限制。由于上传/推送数据需要时间,如果过程在最后失败,或在 hf.co 和本地使用时出现体验下降,会非常令人沮丧。以下部分介绍如何合理规划大型仓库。

建议

我们收集了一些结构化仓库的提示与建议。若你需要更多实用技巧,可查看这篇指南,了解如何使用 Python 库上传海量数据。

特性推荐值建议
仓库大小-若是 TB 级数据,请联系我们
仓库文件数<100k将数据合并为更少的文件
每个文件夹的文件<10k在仓库内使用子目录
文件大小<20GB将数据拆分为块文件
单次提交文件数<100 个*分多次提交上传文件
仓库提交总数-每次提交上传多文件,或按需合并历史

* 若直接使用 git CLI,不受该建议影响

请阅读下一节,进一步理解上述限制及应对方法。

说明

提到“大规模上传”时,我们指的是什么?对应的限制有哪些?大型上传形式多样,既可能是包含少量超大文件的仓库(如模型权重),也可能是包含成千上万小文件的仓库(如图像数据集)。

本质上,Hub 使用 Git 对数据进行版本管理,这会带来结构层面的限制。如果你的仓库超过前述数值,我们强烈建议使用 git-sizer,它提供了详尽的文档说明影响体验的因素。以下是简要总结:

  • 仓库大小:即计划上传的数据总量。若超过 1TB,需要订阅 Team/Enterprise 或联系我们延长存储。对于高价值工作,若无法订阅,我们可考虑提供存储补助。请将项目详情发送至 [email protected](数据集)或 [email protected](模型)。
  • 文件数量
    • 为获得最佳体验,建议总文件数保持在 100k 以内,最好更少。如果数量更多,请尝试合并数据。例如将多个 json 文件合并为单个 jsonl,或将大型数据集导出为 Parquet 文件或 WebDataset 格式。
    • 每个文件夹最多容纳 10k 个文件。可通过使用子目录解决。例如创建从 000/999/ 的 1k 个文件夹,每个最多 1000 个文件,已经足够。
  • 文件大小:若上传大文件(如模型权重),强烈建议将其拆分为约 20GB 的块。原因包括:
    • 使用较小文件上传/下载更轻松,避免因网络中断导致从头开始。
    • 文件通过 CloudFront 提供。从经验来看,超大文件可能无法被缓存,导致下载速度变慢。 无论如何,单个 LFS 文件不能超过 50GB;50GB 是硬性上限。
  • 提交数量:仓库历史提交次数没有硬性上限,但从经验看,超过几千次提交后用户体验会下降。我们正持续改进服务,但必须记住 Git 仓库并不是高写入频率的数据库。如果历史过大,可以使用 huggingface_hubsuper_squash_history 合并历史。请注意,该操作不可逆。
  • 单次提交的操作数量:同样无硬性上限。当提交上传到 Hub 时,服务器会检查每个 Git 操作(新增或删除)。一次提交若包含数百个 LFS 文件,服务器会逐个检查以确认上传成功。通过 HTTP 推送数据时,单次请求有 60 秒超时,如果超时会报错。但偶尔即便客户端超时,服务器仍可能完成上传,可通过浏览器手动检查。为避免超时,建议每次提交添加约 50-100 个文件。

在 Hub 分享大型数据集

Hugging Face 的一大使命是托管数据集,包括超大数据集。如果数据集超过 1TB,需要订阅 Team/Enterprise 或联系我们申请更多存储。

为确保我们能有效支持开源生态,请发送邮件至 [email protected]。邮件中请说明:

  • 数据集是什么,对哪些人/用途有价值?
  • 数据集大小。
  • 计划以何种格式共享数据集。

在 Hub 托管大型数据集时需要满足以下要求:

  • 提供数据集卡片,帮助社区高效使用。可参考数据集卡片指南
  • 确保你上传的数据集旨在供社区复用;如果预计不会被再利用,其他平台可能更适合。
  • 遵循上述仓库限制。
  • 使用与 Hugging Face 生态兼容的文件格式。我们对 ParquetWebDataset 支持良好,这有助于高效共享大型数据集,并确保数据集查看器可用。
  • 避免为数据集编写自定义加载脚本。我们的经验是,需要自定义代码使用的数据集往往复用率较低。

如因数据类型或领域原因无法满足上述要求,请联系我们。

在 Hub 分享海量模型

与数据集类似,若你托管的模型超过 1TB,或计划上传大量小模型(如数百个自动量化模型)总计超过 1TB,需要订阅 Team/Enterprise 或联系我们申请更多存储。

请发送项目详情至 [email protected],以便我们支持开源生态。

私有仓库的补助

我们建议学术与研究机构升级到 Team、Enterprise 或 Academia Hub,以获得稳定的存储额度。对于因缺乏机构资金而受限的高影响力研究者,我们可在具体情况下提供 PRO 存储补助。请将使用场景与影响说明发送至 [email protected][email protected]

如何释放账户/组织的存储空间?

有多种方式可管理并释放存储空间。若需要更多空间,可升级到 PRO、Team 或 Enterprise 计划以提升上限。

⚠️ 重要:删除 LFS 文件为不可逆操作,进行前请备份。

重点提示:

  • 仅删除 LFS 指针不会释放空间。
  • 如果不重写 Git 历史,未来检出包含已删除 LFS 文件的分支/标签会失败(为避免错误,可在 .gitconfig 中添加 lfs.skipdownloaderrors=true)。

删除单个 LFS 文件

  1. 进入仓库的 Settings 页面
  2. 在 “Storage” 部分点击 “List LFS files”
  3. 使用操作菜单删除特定文件

使用 API 对仓库进行 super-squash

Super-squash 操作会将整个 Git 历史压缩成单个提交。若需回收旧版 LFS 文件占用的存储,可考虑使用此操作。该功能仅能通过 Hub Python 库 或 API 调用。

⚠️ 重要:该操作不可逆,会永久丢失提交历史,并删除 LFS 文件历史

压缩操作对配额的影响不会立刻生效,需等待最多 36 小时才会反映到配额上。

进阶:追踪 LFS 文件引用

如果在 “List LFS files” 中看到某个 LFS 文件却不知道来源,可以使用其 SHA-256 OID 结合 git log 查找历史:

git log --all -p -S <SHA-256-OID>

示例如下:

git log --all -p -S 68d45e234eb4a928074dfd868cead0219ab85354cc53d20e772753c6bb9169d3

commit 5af368743e3f1d81c2a846f7c8d4a028ad9fb021
Date: Sun Apr 28 02:01:18 2024 +0200

Update LayerNorm tensor names to weight and bias

diff --git a/model.safetensors b/model.safetensors
index a090ee7..e79c80e 100644
--- a/model.safetensors
+++ b/model.safetensors
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:68d45e234eb4a928074dfd868cead0219ab85354cc53d20e772753c6bb9169d3
+oid sha256:0bb7a1683251b832d6f4644e523b325adcf485b7193379f5515e6083b5ed174b
size 440449768

commit 0a6aa9128b6194f4f3c4db429b6cb4891cdb421b (origin/pr/28)
Date: Wed Nov 16 15:15:39 2022 +0000

Adding `safetensors` variant of this model (#15)


- Adding `safetensors` variant of this model (18c87780b5e54825a2454d5855a354ad46c5b87e)


Co-authored-by: Nicolas Patry <[email protected]>

diff --git a/model.safetensors b/model.safetensors
new file mode 100644
index 0000000..a090ee7
--- /dev/null
+++ b/model.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68d45e234eb4a928074dfd868cead0219ab85354cc53d20e772753c6bb9169d3
+size 440449768

commit 18c87780b5e54825a2454d5855a354ad46c5b87e (origin/pr/15)
Date: Thu Nov 10 09:35:55 2022 +0000

Adding `safetensors` variant of this model

diff --git a/model.safetensors b/model.safetensors
new file mode 100644
index 0000000..a090ee7
--- /dev/null
+++ b/model.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68d45e234eb4a928074dfd868cead0219ab85354cc53d20e772753c6bb9169d3
+size 440449768