Hugging Face Xet支援的儲存庫:透過區塊層級聚合加速 Hub 傳輸
Hugging Face 正在實施一個新的基於區塊的去重複系統,由 xet-core 和 hf_xet 提供動力,在某些情況下可將 Hub 上的檔案上傳和下載速度提升 2-3 倍。該系統擺脫了傳統以檔案為中心的傳輸方式,轉而採用內容定址儲存(CAS)模型,以優化資料的移動和存儲方式,從而支援 AI 建構者的快速迭代。
透過區塊層級聚合擴展去重複
僅基於區塊的去重複在 Hugging Face Hub 的規模下不可行——該 Hub 擁有近 45PB 的資料,分佈在 200 萬個儲存庫中——因為這會在 CAS 中產生數十億個獨立條目。僅使用區塊(每個平均約 64KB)的簡單方法將導致約 6900 億個區塊,這會因為數百萬個獨立請求而帶來不可持續的網路開銷,以及在 S3 或 DynamoDB 等服務中進行元資料管理的高昂基礎設施成本。
為了解決此問題,Hugging Face 採用 聚合 方式,確保通訊和儲存策略不會隨著區塊數量呈 1:1 線性增長:
- 區塊:去重複後,資料會被捆綁成大小不超過 64MB 的區塊。這些區塊仍然保持內容定址,使 CAS 條目的總數減少 1,000 倍。
- Shard:Shard 將檔案映射到區塊,並引用包含它們的區塊。這使系統能夠識別檔案中具體變更的部分,並跳過已存在於 CAS 中的區塊的傳輸。
透過關鍵區塊和空間局部性優化傳輸
為了避免在上傳時對每個區塊都進行網路查詢,Hugging Face 使用 關鍵區塊。關鍵區塊是所有區塊的 0.1% 子集,透過基於區塊雜湊的 modulo 條件選取。
透過維護這些關鍵區塊及其所在 Shard 的全域索引,系統在查詢關鍵區塊時可以檢索相關的 Shard。這利用了 空間局部性,因為同一 Shard 中引用的區塊往往相似。此機制大幅減少了驗證區塊是否已上傳所需的網路和資料庫請求數量。
對量化模型的效能影響
量化模型(例如 .gguf 檔案)是此系統的主要受益者,這歸因於量化的特性:它將權重矩陣的值限制在較小的整數範圍內,導致不同量化變體(例如 Q4_K、Q3_K、Q5_K)之間出現高度重複和重疊。
在使用 bartowski/gemma-2-9b-it-GGUF 儲存庫的實際測試中,該儲存庫包含總計 191GB 的 29 種量化,Xet支援的方法展示了顯著的效率提升:
- 儲存減少:透過僅存放 1,515 個獨特區塊,儲存庫從 191GB 減少至約 97GB(節省約 94GB)。
- 上傳速度:在傳輸速率為 50MB/s 的情況下,上傳時間從 509 分鐘降至 258 分鐘,幾乎提升了 2 倍。
- 下載效率:本地區塊快取確保在檔案更新或新增量化時僅下載未變更的區塊,與需要下載整個檔案的檔案導向方法不同。
可用性
Hugging Face 正在未來幾週和月份內推出首批 Xet支援的儲存庫,目標是讓所有 Hub 上的建構者感覺檔案傳輸「看不見」。