huggingface/xet-core
xet client tech, used in huggingface_hub
解决的问题
大型机器学习文件(模型、数据集)通常包含相同的块——例如,常见代码、重复参数或重复数据。如果没有去重,每次上传或下载都会重新发送和存储这些冗余块,浪费带宽和存储空间。xet-core 通过将文件拆分为块并识别重复项来消除这种浪费,因此只有唯一的块才会被传输和存储。
工作原理
xet-core 将文件拆分为块,并使用 MerkleHash 对每个块进行哈希。它与 Hugging Face Hub 上的内容可寻址存储(CAS)后端通信,以查看哪些块已存在,然后仅上传新块。下载时,它从块中重建文件,使用本地磁盘缓存避免重复获取相同的块。它使用 Rust 编写以保证速度,并提供 Python 绑定,使 huggingface_hub 可以无缝使用。该库还包括一个与 Git LFS 兼容的命令行工具和多个用于不同层(客户端、数据管道、核心结构、运行时)的 Rust crate。
适用对象
上传或下载大型模型和数据集的 huggingface_hub 最终用户。他们不直接与 xet-core 交互——huggingface_hub 在底层使用它。huggingface_hub 或类似存储集成的开发人员也可以直接使用 Rust crate。
亮点
- 基于块的去重 避免跨文件传输和存储冗余数据。
- 本地磁盘缓存 重用先前下载的块以加速重复操作。
- Python 绑定 允许在 huggingface_hub 中直接使用(通过
hf-xetPyPI 包)。 - 并发网络通信 与 Hugging Face Hub 的 CAS 服务器进行快速传输。
- Git LFS 兼容性 通过
git-xetCLI 工具实现。 - 注重隐私的遥测 仅报告字节数和性能指标——不包含文件名、路径、哈希或用户 ID——并且可以禁用。
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch