huggingface/xet-core
xet client tech, used in huggingface_hub
解決する問題
大規模な機械学習ファイル(モデル、データセット)は、共通のコード、繰り返しのパラメータ、重複データなど、同一のチャンクを共有することがよくあります。重複排除がない場合、アップロードやダウンロードのたびにこれらの冗長なチャンクが再送信・再保存され、帯域幅とストレージが無駄になります。xet-core は、ファイルをチャンクに分割し、重複を識別することでこの無駄を排除し、一意のチャンクのみが転送・保存されるようにします。
仕組み
xet-core はファイルをチャンクに分割し、各チャンクを MerkleHash でハッシュ化します。Hugging Face Hub のコンテンツアドレス可能ストレージ(CAS)バックエンドと通信して既存のチャンクを確認し、新しいチャンクのみをアップロードします。ダウンロード時には、ローカルディスクキャッシュを使用して同じチャンクを二度取得しないようにし、チャンクからファイルを再構築します。速度のために Rust で書かれており、huggingface_hub がシームレスに使用できるように Python バインディングを提供します。このライブラリには、Git LFS 互換のコマンドラインツールと、さまざまなレイヤー(クライアント、データパイプライン、コア構造、ランタイム)用の複数の Rust クレートも含まれています。
対象者
huggingface_hub を使用して大規模なモデルやデータセットをアップロード・ダウンロードするエンドユーザー。彼らは xet-core を直接操作することはなく、huggingface_hub が内部で使用します。huggingface_hub や類似のストレージ統合の開発者は、Rust クレートを直接使用することもできます。
ハイライト
- チャンクベースの重複排除 により、ファイル間の冗長データの転送と保存を回避します。
- ローカルディスクキャッシュ により、以前にダウンロードしたチャンクを再利用して繰り返し操作を高速化します。
- Python バインディング により、huggingface_hub 内でのドロップイン使用が可能です(
hf-xetPyPI パッケージ経由)。 - Hugging Face Hub の CAS サーバーとの並行ネットワーク通信 により、高速転送を実現します。
- Git LFS 互換性 は
git-xetCLI ツールを介して提供されます。 - プライバシーに配慮したテレメトリ は、バイト数とパフォーマンスメトリクスのみを報告し、ファイル名、パス、ハッシュ、ユーザー ID は含まれず、無効化も可能です。
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch