目次
まず、遅いのが Hub ページ、Xet のチャンク、以前の Git LFS ダウンロードのどれかを確認する
Hugging Face のモデルダウンロードが遅い、または中断する場合も、すぐにキャッシュを消去しないでください。モデルカードと config.json は通常の Hub リクエストですが、大きな重みファイルは一般に Xet のチャンクとしてダウンロードされ、以前のリポジトリでは Git LFS が使われることもあります。この三つでは使用するツール、ログ、再開方法が異なります。まず小さなファイルでアカウントとネットワークを確認し、その後で Clash のプロキシ、タイムアウト、キャッシュディレクトリを設定します。
現在のダウンロード方法
| 利用方法 | 実際に大容量ファイルを扱うバックエンド | 適した用途 |
|---|---|---|
| huggingface_hub / hf CLI | huggingface_hub 0.32+ では hf_xet が自動でインストールされ、Xet のチャンクダウンロードを使用する | モデルとデータセットのダウンロードに推奨 |
| git clone + git-xet | Xet を使用しながら Git ワークフローも維持する | リポジトリ全体とコミット履歴が必要な場合 |
| 従来の Git LFS クライアント | 互換ブリッジ経由で引き続き動作する | 以前のワークフロー向けであり、現在の性能面での第一候補ではない |
| ブラウザーからの単一ファイル取得 | Hub が生成するダウンロードアドレス | 小さなファイルの確認または一時的なダウンロード |
Hugging Face の公式ドキュメントによると、Hub はすでに Xet を採用しています。Git LFS との互換性は維持されていますが、hf_transfer は廃止されており、hf_xet へ移行する必要があります。Git LFS だけをインストールして HF_HUB_ENABLE_HF_TRANSFER を有効にする以前のチュートリアルは、2026 年の標準的な手順には適しません。
まず config.json をダウンロードし、ライセンスの問題とネットワークの問題を切り分ける
python -m pip install -U huggingface_hub
hf auth login
hf download gpt2 config.json
# 查看版本
python -c "import huggingface_hub; print(huggingface_hub.__version__)"公開モデルの小さなファイルを取得できれば、Hub のメタデータ、基本的な HTTPS 接続、ローカルキャッシュディレクトリが使用可能だと確認できます。制限付きモデルで 401/403 が返る場合は、ブラウザーから同じアカウントでライセンスに同意し、token に read 権限があるか確認してください。ノードを切り替えても、アカウントが自動的に承認されることはありません。
token は hf auth login で保存し、Clash YAML、Notebook のセル、公開スクリプトには書き込みません。チームのサーバーでは専用の secrets 管理を使用し、個人の token をコピーしないでください。
環境変数は huggingface_hub をインポートする前に設定する必要がある
CLASH_PORT=7890
export HTTPS_PROXY="http://127.0.0.1:$CLASH_PORT"
export HTTP_PROXY="http://127.0.0.1:$CLASH_PORT"
export HF_HOME="$HOME/hf-cache"
export HF_HUB_DOWNLOAD_TIMEOUT=30
mkdir -p "$HF_HOME"
hf download openai-community/gpt2 --include '*.json'
hf download openai-community/gpt2 --cache-dir "$HF_HOME/hub"公式ドキュメントには、huggingface_hub が import 時に環境変数を読み込むと記載されています。Notebook ですでにライブラリをインポートした後に変数を変更しても、現在の kernel は以前の値を使い続ける場合があります。kernel を再起動するか、起動前に設定してください。HF_HUB_DOWNLOAD_TIMEOUT の既定値は 10 秒です。接続は確立できるものの読み込みが遅い場合に限り、値を増やします。
HF_HOME は token とキャッシュのルートディレクトリの両方に影響します。リポジトリキャッシュだけを移動する場合は、HF_HUB_CACHE またはコマンドの --cache-dir を使用できます。ディレクトリは現在のユーザーが書き込める必要があり、一時チャンク、モデルの revision、展開用の空き容量も確保してください。
Web ページは開けるがモデルのチャンクがタイムアウトする場合、接続画面で Xet のリクエストを探す
モデルカードと README は短いリクエストですが、Xet で大容量ファイルをダウンロードすると、コンテンツアドレスストレージと署名済みストレージのアドレスにもアクセスします。Web ページが正常でも、huggingface.co に到達できると分かるだけです。チャンクの開始後に再試行を繰り返す場合は、一つのノードに固定し、失敗したドメイン、ステータスコード、キャッシュへの書き込みエラーを確認してください。
自動選択ポリシーがダウンロード中に出口を切り替えると、署名済み URL と並行接続が同時に無効になることがあります。関連する Hub/Xet リクエストを一つの固定ポリシーグループへ入れ、ダウンロードがすべて完了してから自動選択へ戻してください。一時ストレージのドメインを、範囲が広すぎる DOMAIN-KEYWORD ルールとして恒久的に記述しないでください。
401 / 403
リポジトリのライセンスと token を確認し、タイムアウト値は増やさない。
httpx.TimeoutException / Read timed out
ノードを固定し、Xet リクエストが一致することを確認してから、HF_HUB_DOWNLOAD_TIMEOUT を適度に増やす。
No space left on device
HF_HOME/HF_HUB_CACHE を移動し、完了済みのキャッシュは残して、ノードを切り替えない。
キャッシュへの書き込みで Permission denied が発生する
ディレクトリの所有者とマウント権限を修正し、root でモデル全体をダウンロードし直さない。
数 KB のポインターファイルしか取得できない
Git ワークフローに git-xet/git-lfs がないか、大容量ファイルのチェックアウトが完了していない。
同じ revision で再実行し、まず Hub のキャッシュを再利用してから、Xet のチャンクキャッシュを有効にするか判断する
既定の Hub キャッシュは ~/.cache/huggingface/hub にあり、Xet 関連のファイルは ~/.cache/huggingface/xet にあります。HF_HOME を設定すると両方がまとめて移動します。
Hub の refs、blobs、snapshots は、完了済みのファイルを再利用します。ダウンロードが中断した場合は、同じ repo_id、revision、ユーザー、キャッシュディレクトリを使って再実行してください。
現在の公式ドキュメントでは、Xet chunk cache の既定サイズは 0、つまり既定では無効です。同じ範囲の内容を頻繁にダウンロードし、十分なディスク容量がある場合に限り、HF_XET_CHUNK_CACHE_SIZE_BYTES の設定を検討してください。一度のダウンロードが遅い場合は、まずノードを固定してダウンロードのタイムアウトを増やし、キャッシュを試すために完了済みの blobs を削除しないでください。
from pathlib import Path
from huggingface_hub import snapshot_download
cache_dir = Path.home() / "hf-cache" / "hub"
path = snapshot_download(
repo_id="openai-community/gpt2",
revision="main",
cache_dir=cache_dir,
)
print(path)Git を使用する必要がある場合は git-xet をインストールし、LFS との互換性も維持する
プロジェクトが Git の履歴またはブランチ操作に実際に依存する場合に限り、この経路を使用します。通常のモデルダウンロードには hf download を優先すると、再開状況とキャッシュを確認しやすくなります。
HF_REPO='OWNER/MODEL'
# 例如 HF_REPO='openai-community/gpt2'
git lfs install
git xet install
git clone "https://huggingface.co/$HF_REPO"
cd "${HF_REPO##*/}"
git xet --version
git lfs version
git statusgit xet コマンドがない場合は、まず公式のプラットフォーム別手順に従って git-xet をインストールします。macOS では Homebrew を利用でき、Windows 向けの公式ドキュメントには winget によるインストール方法があります。以前のクライアントも LFS bridge 経由でダウンロードできますが、速度や大容量ファイルに問題がある場合は、Hugging Face のツールチェーンを優先して更新してください。
Git は git config と環境変数を使用するため、Python SDK とは別の設定です。hf CLI は正常でも git clone が止まる場合は、Git/Xet/LFS と Git のプロキシだけを確認し、HF_HOME は変更しません。
ダウンロード完了後にネットワークを切断し、モデルが実際にローカルへ保存されていることを確認する
進捗バーが完了しても、プロジェクトが tokenizer、設定、カスタムコードを読み込む際に Hub へアクセスすることがあります。最後に実際のプロジェクトをオフラインで一度テストし、必要なファイルがすべてローカルキャッシュへ入っていることを確認してください。
成果物の検証
同じダウンロードコマンドをもう一度実行する
すべてのチャンクを再転送せず、同じ snapshot がすぐ使われる必要がある。
モデルを一度読み込む
実際の transformers またはプロジェクトコードで重みと tokenizer を読み込む。
オフラインモードを有効にしてテストする
キャッシュ済みの内容を利用できる場合、HF_HUB_OFFLINE=1 を設定するか local_files_only を使用すれば、Hub へ再びアクセスすることはありません。
認証情報と空き容量を確認する
Notebook、ログ、Git 履歴に token がなく、キャッシュ用ドライブにも更新に必要な余裕がある。
revision と snapshot のパスを記録する
次回のモデル更新時に、新しいバージョンのダウンロードと以前のキャッシュ破損を区別できる。
