GGUF Generator / 独自形式

Retrainable GGUF

GGUF Generator が出力する GGUF は、再ロードするだけで追加学習を続けられる「Retrainable GGUF」です。通常の GGUF が推論専用であるのに対し、この形式はモデルの重みに加えて 教材ペア履歴 と Adam オプティマイザ状態 を内蔵します。一度エクスポートしたファイルを読み込めば、学習を途中からそのまま滑らかに再開できます。

世界初の取り組み
llama.cpp エコシステムにおいて、教材ペア履歴と Adam 状態を GGUF 内に内蔵し、再ロードで完全継続学習を実現した形式は GGUF Generator が初めてです。

通常の GGUF との違い

項目通常の量子化 GGUFRetrainable GGUF
主な用途推論(テキスト生成)推論 + 追加学習
重みの精度量子化(Q4/Q8 など)F32(フル精度)または F16 / Q8_0
追加学習通常不可LOAD GGUF からそのまま再開
忘却防止不可全ペア履歴で再学習(破滅的忘却を防ぐ)
真の継続不可Adam 状態を引き継いで滑らかに再開
アーキテクチャLLaMA / Mistral / LFM2 などllama.cpp 互換の小型 Transformer(独自設計)
llama.cpp 互換互換GGUF 形式として互換。カスタムメタは未知KVとして無視される

内蔵メタデータの仕様

Retrainable GGUF は llama.cpp が未知KVとして無視する領域に、以下の3種類のデータを埋め込みます。推論には一切影響しません。

① 教材ペア履歴(training.pairs)

これまでに学習したすべての instruction/output ペアをタブ区切り・改行区切りで格納します。再ロード時にコーパスバッファへ復元され、次回学習で全ペアを再利用できます。

training.pairs = "おはよう\tおはようございます\nこんにちは\tこんにちは!\n…"

② Adam オプティマイザ状態(training.adam_t / adam_m / adam_v)

Adam の1次モーメント m・2次モーメント v・ステップ数 t を F32 配列でそのまま保存します。これが「真の継続」を実現する鍵で、バイアス補正が正しく引き継がれるため学習が途中から滑らかに再開できます。

training.adam_t = 1420 // ステップ数
training.adam_m = float32[P] // 1次モーメント(P=パラメータ数)
training.adam_v = float32[P] // 2次モーメント(同上)
Adam 状態はモデル本体と同サイズの float32 配列が2本分必要です。dModel=128、4層、vocab=1000 程度の極小モデルでもファイルサイズはモデル本体の約3倍になります(重み+m+v)。

③ 学習メタ情報

training.samples training.epochs training.learning_rate training.final_loss

対話学習での再学習フロー

Retrainable GGUF の最も典型的な使い方が「対話学習(新規GGUF)」モードです。

① 開始
「新規作成」で新しいモデルを初期化、または「GGUF読込」で Retrainable GGUF を再ロード
② 学習
「新規学習」(指示→応答の2段階入力)で即時に重みを更新。毎回コーパス全件を再学習して忘却を防ぐ
③ 確認
「推論試行」で学習結果を即確認。不正解なら「再学習」で直前ペアを繰り返して強化
④ 書き出し
「GGUF出力」で Retrainable GGUF を保存。次回は「GGUF読込」でそのまま再開できる
「GGUF出力」では精度(F32 / F16 / Q8_0)を選択します。F32 が再学習に最適ですがファイルが大きくなります。Q8_0 は精度と容量のバランスが良い選択肢です。

破滅的忘却の防止

対話学習では、新しいペアを追加するたびにコーパス全件を再学習します。これにより、新しいことを教えても以前のペアを忘れません(catastrophic forgetting 防止)。

操作コーパス再学習対象
1件目を教える[A→B][A→B] の1件
2件目を教える[A→B, C→D][A→B, C→D] の2件すべて
3件目を教える[A→B, C→D, E→F][A→B, C→D, E→F] の3件すべて

ペア数が増えるほど1回の学習が重くなりますが、数十件規模の小型モデルでは実用的に動作します。ペアファイル取込(バッチ)を使えば大量のペアを一括学習することも可能です。

4つの継続パターン

① 対話学習の再開(GGUF読込→続けて学習)

「GGUF読込」で Retrainable GGUF を読み込むと、教材ペア履歴と Adam 状態が復元され、続きからそのまま「新規学習」できます。

② ペアファイル取込(バッチ一括学習)

JSONL ファイルを一括インポートし、BPE語彙を再構築してコーパス全件を再学習します。「目標ロス」スライダを設定すれば指定したロス値に到達した時点で自動停止します。

③ 語彙拡張を伴う継続学習

新しいデータに未知の文字が含まれる場合、BPE サブワードモデルはバイトフォールバックで対応します(語彙は固定)。char-level モデルは語彙末尾に新文字を追加し埋め込み表を拡張します(既存行の重みは完全保持)。

④ LoRA 継続学習(アダプタ再開)

LoRA 対話学習のアダプタ GGUF にも同じ仕組みが適用されます。「モデル読込」→「アダプタ読込」でアダプタの A/B 行列と Adam 状態が復元され、LoRA 学習をそのまま再開できます。

モデルアーキテクチャの特徴

Retrainable GGUF が対象とする小型 Transformer の構成です。llama.cpp の LLM_ARCH_LLAMA と互換する GGUF メタデータで記述されます。

生成した GGUF は llama.cpp および llama.cpp Android サーバアプリ でそのまま推論できます。

Retrainable GGUF vs. LoRA 対話学習

観点Retrainable GGUF(新規GGUF)LoRA 対話学習(既存モデル)
ベースモデルなし(ゼロから作成)既存の GGUF が必要(llama/gemma3/qwen3/LFM2)
学習対象全重みLoRA アダプタのみ(基底凍結)
モデルの能力学習データに特化した小型モデルベースモデルの能力+ファインチューン
再開方法「GGUF読込」で即再開「モデル読込」→「アダプタ読込」で再開
出力単独ロード可能な GGUFアダプタ GGUF + 統合版フル GGUF
必要容量dModel に比例(小型なら数MB)rank × 対象行列数(軽量)