# Xet：我们的存储后端

Hugging Face Hub 上的仓库与软件开发平台上的仓库有所不同。它们包含的文件是：

- Large - 模型或数据集文件的大小在 GB 及以上。我们有一些 TB 级别的文件！
- 二进制 - 默认情况下不是人类可读的格式（例如，[Safetensors](https://huggingface.co/docs/safetensors/en/index) 或 [Parquet](https://huggingface.co/docs/dataset-viewer/en/parquet#what-is-parquet)）

虽然 Hub 借助 Git 支持采用了现代版本控制，但这些差异使得 [Model](https://huggingface.co/docs/hub/models) 和 [Dataset](https://huggingface.co/docs/hub/datasets) 仓库与仅包含源代码的仓库大不相同。

将这些文件直接存储在纯 Git 仓库中是不切实际的。不仅 Git 仓库背后的典型存储系统不适合存储此类文件，而且当你克隆一个仓库时，Git 会获取完整的历史记录，包括所有文件的修订版本。对于大型二进制文件，这可能会变得极其庞大，迫使你下载数吉字节可能永远用不到的历史数据。

相反，在 Hub 上，这些大文件通过“指针文件”进行跟踪，并通过 `.gitattributes` 文件进行识别（两者均将在下文详细讨论），这些文件保留在 Git 仓库中，而实际数据则存储在远程存储（如 [Amazon S3](https://aws.amazon.com/s3/)）中。因此，仓库保持小巧，典型的 Git 工作流依然高效。

从历史上看，Hub 仓库一直依赖 [Git LFS](https://git-lfs.com/) 来实现此机制。虽然 Git LFS 仍受支持（参见 [向后兼容与遗留](./legacy-git-lfs)），但 Hub 已采用 Xet，这是一种专为 AI/ML 开发而构建的现代自定义存储系统。与 Git LFS 相比，它支持块级去重、更小的上传体积以及更快的下载速度。

## 开源 Xet 协议

如果您希望了解 Xet 协议的底层机制，或希望构建一个新的客户端库来访问 Xet Storage，请参阅 [Xet 协议规范](https://huggingface.co/docs/xet/index)。

在这些页面中，您将开始学习如何使用 Xet Storage。

## 目录

- [Xet 历史记录与概述](./overview)
- [使用 Xet 存储](./using-xet-storage)
- [安全性](./security)
- [遥测](./telemetry)
- [向后兼容与遗留](./legacy-git-lfs)
- [去重](./deduplication)

