Hugging Face がストレージ効率を向上させるためにコンテンツ定義チャンク化を導入

コンテンツ定義チャンク化の基礎

コンテンツ定義チャンク化(CDC)は、データ自身に基づいてファイルを可変サイズのチャンクに分割し、重複除去と細かい更新を可能にします。ローリングハッシュアルゴリズムがバイト列をスキャンし、ハッシュが事前に定義された条件を満たすと、チャンク境界が配置されます。同一のチャンクは同じハッシュを生成するため、コンテンツアドレスストアには1つしか保存されず、組み込みの重複除去が提供されます。

挿入と削除の処理

ファイルが変更されたとき、CDCは変更されたチャンクのみをアップロードおよび保存できるようになります。なぜなら、変更されていないチャンクはすでにストアに存在するからです。たとえば、繰り返しの "transformers" シーケンスに文字列 "super" を挿入すると、保存が必要な新しいチャンクは1つだけとなり、既存の2つの "transformers" チャンクは再利用されます。

実際のベンチマーク(CORD-19 データセット)

CDCベースのストレージ(Xet)を使用すると、CORD-19 データセットの50回の増分更新において、Git LFS と比較してストレージと転送コストが削減されました。平均ダウンロード時間は51分から19分に、平均アップロード時間は47分から24分に、使用ストレージは8.9 GBから3.52 GBに減少し、メトリクス全体で約50%の一貫した改善を示しました。

Hugging Face Hubへの影響

HubファイルにCDCを適用すると、大きなストレージ節約が示されます。openai-community/gpt2 リポジトリの model.safetensors ファイルの2つのバージョンについて、Git LFSでは合計1.2 GB必要ですが、Xetベースのストレージでは645 MBで済み、これは53%の削減となり、さらに圧縮による約10%の追加節約が見込まれます。Hub全体では、ファインチューンされたモデルとモデルチェックポイントの重複除去率は30%から85%の範囲で、PyTorchモデルチェックポイントのみで約200 TBを占めます。したがって、50%の重複除去によりすぐに最大100 TBを節約でき、その後は月に約7〜8 TB節約できます。チャンクレベルの重複除去は、変更されたチャンクのみが転送されるため、アップロード/ダウンロード速度も向上し、ユーザーとマシンの待機時間が短縮されます。

今後の作業

Xetチームは、Hub向けのXetベースのストレージの概念実証を完了し、2025年初頭にいくつかのXetベースのリポジトリをロールアウトする予定です。今後の作業は、グローバルに分散されたリポジトリ全体にCDCをスケールさせ、ネットワークパフォーマンスのバランスを取り、プライバシー境界を管理し、チャンク化アルゴリズムを並列化することに焦点を当てます。

Sources