転送するモデルと方法

GLM-5-GGUF を保管用の cold から推論用の hot に移す手順を整理しました。実体ファイルの blobs は rclone、参照構造の snapshots と refs は rsync でコピーします。

ローカルLLM導入では、保管するモデルと稼働に使うモデルを分けて置きます。この手順は、その配置を変えながら Hugging Face の参照構造を保つためのものです。

hubディレクトリの構造

Hugging Face の hub 形式では、容量の大半は blobs にあります。revision の解決には snapshots と refs も必要です。

大きいファイルの並列転送と symlink の保存を、別々のツールに任せます。

前提

モデルと転送元・転送先のパスを指定します。

  BASE="models--unsloth--GLM-5-GGUF"
SRC_BASE="/srv/archive/cold/hf/hub/$BASE"
DST_BASE="/srv/archive/hot/hf/hub/$BASE"
mkdir -p "$DST_BASE"
  

/srv/archive/cold/hf/hub/ が保管側、/srv/archive/hot/hf/hub/ が利用側です。別モデルでは主に BASE を変更します。

rcloneでblobsを並列複製

実体ファイルの blobs を rclone copy でコピーします。

  rclone copy "$SRC_BASE/blobs" "$DST_BASE/blobs" \
  --exclude "*.incomplete" \
  --transfers 16 --checkers 32 \
  --local-no-check-updated \
  -P
  

開始値は --transfers 16 --checkers 32 です。10GbE + SSD では 32/64 まで増やす余地があります。

.incomplete を除外し、未完了ファイルが hot 側に混ざることを防ぎます。

次に snapshots をコピーします。

  mkdir -p "$DST_BASE/snapshots"
rsync -aH --info=progress2 \
  --exclude="*.incomplete" \
  "$SRC_BASE/snapshots/" "$DST_BASE/snapshots/"
  

rsync -aH で symlink を辿らずに保存します。snapshots から blobs への参照を、そのまま複製するためです。

--info=progress2 で進捗を表示します。ここでも .incomplete を除外しています。

rsyncでrefsも複製

参照名の解決に使う refs もコピーします。

  mkdir -p "$DST_BASE/refs"
rsync -aH --info=progress2 \
  "$SRC_BASE/refs/" "$DST_BASE/refs/"
  

ファイル本体と revision のディレクトリだけでは、参照名で解決できない場合があるためです。

最低限の整合チェック

転送後、リンク切れを確認します。

  find "$DST_BASE/snapshots" -type l ! -exec test -e {} \; -print | head
  

出力がなければ、snapshots の symlink 切れは検出されていません。全ファイルの完全性を検証するチェックではありません。

特定revisionと量子化のコピー

特定 revision の量子化だけが必要なら、snapshots 配下を絞ります。

  REV="acc91597d28b7ebd3a8c20fd5331ceaf07a4ece1"
mkdir -p "$DST_BASE/snapshots/$REV"
rsync -aH --info=progress2 \
  "$SRC_BASE/snapshots/$REV/IQ4_NL/" "$DST_BASE/snapshots/$REV/IQ4_NL/"
  

例えば IQ4_NL のみを hot 側に置けます。全体のコピーを避けるための方法です。

部分コピーでは、hot 側に置く revision と量子化を決めておく必要があります。

別モデルへの適用

DeepSeek-V3.2-Speciale に使う場合は BASE= を変えます。

モデル名が変わっても、次の分担は同じです。

  • 実体ファイルの blobs は rclone
  • symlink と参照構造を持つ snapshots / refs は rsync

この分担で、実体の転送と hub の参照構造を扱います。

手順の要点

手順の要点です。

  • blobs は並列転送しやすいので rclone copy
  • snapshots と refs は構造保持のため rsync -aH
  • .incomplete は除外して未完了データを持ち込まない
  • 転送後は find ... -type l ! -exec test -e {} \; で最低限の整合チェックを行う
  • 必要なら revision や量子化単位で部分コピーできる

今後の改善

今後、次の確認と運用ルールを追加する予定です。

  • blobs の件数やサイズ差分確認を追加して、転送完了判定をもう一段明確にする
  • モデルサイズごとに --transfers / --checkers の目安を残す
  • hot 側へ置く revision と量子化の選び方を別メモで固定する

cold / hot の用途に合わせ、転送対象の選び方も記録する方針です。