Hugging Face Xet ストレージ 統合

Hugging Face は、Xet ストレージを Hub に統合し、最初の Model と Dataset リポジトリのセットを Git LFS から移行しました。この移行により、バイトレベルの重複除去を可能にするコンテンツ定義チャンク化 (CDC) が導入され、大容量ファイルの更新に必要な時間と帯域幅が大幅に削減されます。

Xet ストレージ アーキテクチャ

Xet ストレージは、コンテンツ定義チャンク化 (CDC) を使用して、ファイルレベルの重複除去をバイトレベルの重複除去に置き換えます。Git LFS は、大きなファイルに変更があると、ファイル全体を再アップロードする必要があるとみなしますが、Xet はデータを約 64KB のチャンクに分割します。変更されたチャンクのみがネットワーク経由で送信されます。

たとえば、5GB の SQLite データベースに 1MB のデータを追加する場合、LFS では 5GB フルの再アップロードが必要ですが、Xet では新しいデータのみがプッシュされます。社内テストでは、これによりアップロード時間が 13 分から 50Mb/s で 0.1 秒に短縮されました。

システム コンポーネント

  • Xet-aware Client: データを約 64KB のチャンクに分割し、同じチャンクをローカルで重複除去し、アップロード前に約 64MB のブロックに集約します。
  • Hugging Face Hub: ルーティング、認証、セキュリティ保証を管理します。
  • Content Addressed Store (CAS): 転送におけるチャンクベースの重複除去を強制します。非 Xet クライアントの後方互換性を確保するために、従来の LFS サーバーとして機能する LFS Bridge を含みます。
  • Amazon S3: 最終的な永続層として機能し、ブロック(ファイル内容)とシャード(再構成メタデータ)を保存します。

本番移行と検証

2025 年 2 月 20 日、Hugging Face はターゲット リポジトリ全体で 4.5 TB のデータを Xet ストレージに移行しました。この移行により、Hub の総ダウンロードトラフィックの約 6% が Xet インフラストラクチャにシフトし、システムの信頼性とパフォーマンスを実際の環境で検証する場を提供しました。

技術的課題と最適化

移行後の分析により、アーキテクチャの更新によって解決された 2 つの主要な技術的ボトルネックが明らかになりました。

ダウンロードオーバーヘッドとブロック形式

初期のメトリクスでは、コンテンツアドレスド ストア (CAS) が S3 からクライアントに返すデータの 4 倍以上をダウンロードしていることが示されました。これは、Xet のブロック境界に合わない 10MB 範囲の hf_transfer リクエストが原因でした。ブロック形式に未圧縮のチャンク長が含まれていなかったため、CAS は要求されたデータを見つけるためにブロックの先頭からストリーミングする必要がありました。

Solution: Hugging Face はブロック形式を更新し、チャンク長のメタデータを保存するようにしました。これにより、CAS は各リクエストに必要な特定のデータのみをダウンロードできるようになり、GET レイテンシが約 35% 削減され、ダウンロードと送信データのバランスが取れるようになりました。

ポッド ロード アンバランス

チームは、CAS クラスター内の単一のポッドが何百ものアクティブなアップロードを処理し、他のポッドがアイドル状態のままであるという予期しないロードスパイクを観測しました。これは、バリデーション中に fsync を呼び出さずに一時ファイルへの書き込みを OS ページキャッシュがバッファリングしていたことが原因でした。アップロード量の増加により、AWS EBS ブロックストレージからメモリ圧力とスループット スロットリングが発生し、レイテンシとバックログのサイクルが生じました。

Solution: チームは、各マシンが受け入れる同時アップロード数の制限を実装しました。ポッドが制限に達すると、リクエストはクラスター内の他のポッドにプッシュされ、すべてのポッドが飽和状態になった場合はオートスケーリング ポリシーがトリガーされます。

ユーザー向けの実装

ユーザーは、ウェイトリストに参加することで Xet バックアップ ストレージにアクセスできます。承認されると、新しいリポジトリは自動的に Xet を使用し、既存のリポジトリは移行されます。

  • Tooling: hf_xet Python パッケージは huggingface_hub に統合されつつあります。transformers または datasets のユーザーは、環境に hf_xet をインストールすることでその利点を活用できます。
  • Compatibility: レガシー クライアントは LFS Bridge を介して互換性を維持しますが、フルなパフォーマンス向上を達成するためには hf_xet へのアップグレードが必要です。

Sources