Xet:我们的存储后端
Hugging Face Hub 上的仓库与传统软件开发平台中的仓库不同,它们包含的文件通常:
- 体积巨大——模型或数据集文件动辄数 GB,甚至 TB 级;
- 二进制格式——默认并非人类可读,例如 Safetensors 或 Parquet。
虽然 Hub 借助 Git 提供现代化版本控制,但这些差异让模型与数据集仓库与仅包含源码的仓库大相径庭。
将这些文件直接存入纯 Git 仓库并不现实。Git 仓库背后的典型存储系统并不适合此类文件,并且当你克隆仓库时,Git 会取回整个历史,包括所有文件修订。这对大型二进制文件而言体积极其庞大,迫使你下载大量可能永远不会用到的数据。
在 Hub 上,我们使用“指针文件”追踪这些大文件,并通过 .gitattributes 文件(下文详细介绍)标识它们。指针文件保留在 Git 仓库中,而实际数据存放在远程存储(如 Amazon S3)。因此,仓库本身保持精简,常规 Git 工作流仍然高效。
历史上,Hub 仓库依赖 Git LFS 实现上述机制。虽然我们仍支持 Git LFS(见 Backwards Compatibility & Legacy),但 Hub 已采用 Xet——一套专为 AI/ML 开发打造的现代化自定义存储系统,支持块级去重,上传更轻量、下载更迅速。
开源 Xet 协议
如果你希望深入了解 Xet 底层协议,或计划构建新的客户端库访问 Xet 存储,请查阅 Xet 协议规范。
在本章节中,你将学习如何开始使用 Xet 存储。