跨境でも壊れない Hugging Face 重み取得を、環境変数とキャッシュキーで一発決めする意思決定稿です。
huggingface_hub はインポート前に env 確定が必須。レガシー HF_HUB_ENABLE_HF_TRANSFER と Xet 系スイッチの使い分けを表で整理します。
シナリオとボトルネックチェックリスト
Runner で大容量重みを引くとき、RTT・帯域・ディスクのいずれかが支配的になります。上から潰すチェックリストです。
- 回線:高 RTT ならタイムアウト先。並列は後回し。
- 容量:
HF_HUB_CACHEとHF_XET_CACHEを合算で見積もる。 - 認証:ゲート repo は
HF_TOKEN。暗黙送信はHF_HUB_DISABLE_IMPLICIT_TOKENで制御。 - NAS/混在 OS:
HF_HUB_DISABLE_SYMLINKS=1で symlink 地獄を避ける(容量増)。 - 混雑 Runner:
HF_XET_HIGH_PERFORMANCEと高並列は CPU・I/O を奪い合う。
| 症状 | 第一疑い | 即効パラメータ |
|---|---|---|
| メタで即 Timeout | HF_HUB_ETAG_TIMEOUT | 30〜120s |
| blob 途中切断 | DL timeout/回線 | 120〜600s、再実行 |
| CPU 飽和 | Xet 高負荷 | HP オフ or 並列を下げる |
| ミラー差分 | endpoint | HF_ENDPOINT 明示 |
環境変数対照表(HF_TRANSFER/エンドポイント/キャッシュ/並列)
CI で頻出のキーのみ。import 前に export。
| 変数 | 役割 | 推奨初期値(跨境) | 判断メモ |
|---|---|---|---|
HF_HUB_ENABLE_HF_TRANSFER | 旧 hf_transfer | 未設定推奨 | Xet 化で非推奨・無効化 |
HF_XET_HIGH_PERFORMANCE | Xet 高負荷 | 単独 1/混雑はオフ | 帯域優先の主スイッチ |
HF_XET_NUM_CONCURRENT_RANGE_GETS | レンジ GET 並列 | 8〜24 | HDD は逐次書き込み変数も検討 |
HF_ENDPOINT | Hub ベース URL | 公式 or 承認ミラー | キャッシュキーにホスト名を載せる |
HF_HOME | ルート | ~/Library/Caches/huggingface-ci 等 | Linux 既定は ~/.cache/huggingface |
HF_HUB_CACHE | 実体キャッシュ | $HF_HOME/hub | actions/cache の path と一致 |
HF_XET_CACHE | Xet チャンク | 大容量ディスク推奨 | 公式のチャンク KB 指定は別途 |
HF_HUB_DOWNLOAD_TIMEOUT | DL 秒 | 120〜600 | 既定 10s は跨境で不足しがち |
HF_HUB_ETAG_TIMEOUT | メタ秒 | 30〜120 | 短すぎると誤フォールバック |
HF_HUB_OFFLINE | HTTP 禁止 | 検証時のみ 1 | キャッシュ命中テスト用 |
コピペ例(ポリシーで差し替え)
export HF_HOME="${HF_HOME:-$HOME/Library/Caches/huggingface-ci}"
export HF_HUB_CACHE="${HF_HUB_CACHE:-$HF_HOME/hub}"
export HF_XET_CACHE="${HF_XET_CACHE:-$HF_HOME/xet}"
# export HF_ENDPOINT="https://huggingface.co"
export HF_HUB_ETAG_TIMEOUT=60
export HF_HUB_DOWNLOAD_TIMEOUT=300
export HF_XET_HIGH_PERFORMANCE=1
export HF_XET_NUM_CONCURRENT_RANGE_GETS=16
python -c "import huggingface_hub; print(huggingface_hub.__version__)"
レジューム(断点続行)と CI キャッシュキー設計
未完了ファイルを活かすため失敗直後にキャッシュ全削除しない。Runner ローカルと actions/cache を分けて設計します。
| キーに含める要素 | 理由 | 例 |
|---|---|---|
| OS/arch | パス差 | macos-arm64 |
| hub 版 | レイアウト差 | req ハッシュ先頭 8 |
| モデル rev | 再現性 | SHA/tag |
| endpoint ホスト | ミラー切替 | 短縮ラベル |
| symlink 無効 | 実体形状 | symlinks-off |
path は HF_HUB_CACHE(+必要なら Xet)。restore-keys の緩さはヒット率 vs 壊れた中間ファイルのトレードオフ。
失敗リトライとタイムアウトしきい値 FAQ
タイムアウトを上げてからミラー A/B。429 は指数バックオフ+Retry-After。プロキシは HTTPS_PROXY/NO_PROXY、TLS 検査は CA 明示。HF_HUB_OFFLINE=1 でキャッシュ命中をスモーク。
詳細 Q&A は本文下の FAQPage JSON-LD と同期。
内部リンク設計(ホーム/ブログ一覧/関連プル加速記事)
| アンカーテキスト意図 | URL | 補足 |
|---|---|---|
| ランディング | ホーム | ログイン不要 |
| 回遊 | 技術ブログ一覧 | カテゴリ横断 |
| モデルキャッシュ | 階層キャッシュ HowTo | symlink・クォータ |
| Python 跨境 | uv・PyPI マトリクス | ML スタック接続 |
| Git/コンテナ | Git・Docker 加速 | 帯域最適化 |
まとめ
2026 年はXet 系+タイムアウトが主戦場。HF_ENDPOINT と HF_HUB_CACHE 境界をセットで固定すると再現性が出ます。
リモート Mac × HF Hub
跨境でも毎ジョブの重み取得を短縮したいチームへ
低遅延リージョンの Runner と SSD 上の HF_HUB_CACHE で、再実行コストを下げられます。
24時間以内デリバリー
複数リージョン
いつでも解約可