ファインチューニングと事後学習
データの整理はここで、学習は別の機械で、成果はまたここへ。この機械は学習しません。
言わないと決めていること
Section titled “言わないと決めていること”DuDuClaw の当番機は内蔵グラフィックスだけのミニ PC——Intel N305 か AMD 8845HS です。言語モデルの学習はできませんし、待っても変わりません。LLaMA-Factory も Unsloth も Axolotl も CUDA / ROCm を前提としていますし、llama.cpp 自身の finetune 経路は何年も保守されていません。「あなたの当番機でファインチューニング」と書いている製品は、別の何かを売っているか、嘘をついているかのどちらかです。
だからこの機能は、この機械が本当に得意なことに合わせて設計されています。ローカルストレージには数か月分の会話、仕事の成果、承認判断が積み上がっていて、それを持っている場所は世界にここしかありません。それを学習用コーパスに変えることが、価値のある側の半分です。GPU は借りるか、机の下にもう置いてあるかのどちらかです。
三つの段階、三つのタブ:
この機械 自分で用意する GPU この機械+------------------+ +----------------------+ +------------------+| 1. 整理 | | 2. 学習 | | 3. 配備 || | ---> | | ---> | || 会話履歴 | | 自分の GPU 機 | | GGUF / LoRA を || 仕事の成果 | | (SSH + LLaMA- | | ローカルモデル || 承認判断 | | Factory) | | ディレクトリへ || | | | またはクラウド | | || v | | | | || SFT + DPO JSONL | | またはドライラン: | | |+------------------+ | 一切学習しない | +------------------+ +----------------------+段階 1:整理
Section titled “段階 1:整理”管理 → ファインチューニング → データセットを開き、名前を付け、形式を選んで構築を押します。四つの材料が入りますが、いずれもゲートウェイが元から保持しているものです。
| 材料 | 変換先 | 学習行として良い理由 |
|---|---|---|
| AI スタッフの会話 | 複数ターンの SFT 行 | 実際の答え方と、あなたたちの語彙 |
| 完了した仕事の成果 | 単一ターンの SFT 行 | 依頼と完成物の対 |
| レビューの裁定 | DPO 選好ペア | 同じ仕事の、差し戻された回と受理された回 |
| 承認判断 | DPO 選好ペア | 同種の行動で、通したものと止めたもの |
出力形式は二つ。どちらも LLaMA-Factory がそのまま読める書き方で、ファイルを登録する dataset_info.json も一緒に書き出すので、遠隔側で変換し直す必要はありません。
- ShareGPT:複数ターンの会話学習向け。
- Alpaca:単一ターンの指示学習向け。
役に立たない行は水増しせずに落とします。答えのない会話、成果のない仕事、まだ決まっていない承認は行になりません。表示される件数は実際にファイルに入った数です。新品の機械は正直に 0 行のデータセットを作ります。
構築は特定の AI スタッフと開始日で絞れますし、送る前に先頭数行を JSON で確認でき、ファイルの場所を書き出すこともできます。
段階 2:別の機械で学習する
Section titled “段階 2:別の機械で学習する”管理 → ファインチューニング → 学習ジョブ。データセットを選び、GPU の場所を選びます。
設定をすべて検証し、本番と同じ train.yaml と、実行コマンドを明記した plan.json を書き出して止まります。何も送らず、何も学習せず、状態は「計画済み(未学習)」のまま。勝手に「完了」へ動くことはありません。GPU の費用を使う前にパラメータを確かめる、正直なやり方です。
自分の GPU 機
Section titled “自分の GPU 機”自分の機械へ SSH でつなぎ、rsync でデータセットを送り、そこで llamafactory-cli train train.yaml を走らせます。LoRA の SFT または DPO で、rank・エポック数・学習率はあなたが決めます。学習が終わると adapter を回収し、その機械に llama.cpp の convert_lora_to_gguf.py があれば GGUF も変換して持ち帰ります。
準備は十分ほどです。遠隔 GPU 機の準備を参照してください。
Together クラウド
Section titled “Together クラウド”Together AI のファインチューニングサービスにデータセットを送り、ジョブ ID で追跡します。送信前に Together 自身の JSONL 形式へ変換し(彼らの SFT / DPO 形式は LLaMA-Factory と異なります)、変換後のファイルはジョブの隣に残すので「結局何で学習したのか」に後から答えられます。ゲートウェイの環境変数に TOGETHER_API_KEY が必要です。
進捗をでっち上げない
Section titled “進捗をでっち上げない”このページに進捗バーはありません。意図的です。ジョブが見せるのは状態と、本物の学習ログの末尾そのままです。
- 自分の GPU 機:遠隔のプロセスが生きているか、adapter ファイルが出来ているかで判断します。一時的につながらないときはそう表示し、状態は保ちます——切断は学習の失敗ではありません。
- Together:先方の状態欄を一対一で対応させます。残り秒数の見積もりが提示されたときはそのまま伝えます。
- ドライラン:計画済みのまま動きません。
段階 3:配備
Section titled “段階 3:配備”管理 → ファインチューニング → 取り込み。.gguf / .safetensors / .bin を指定します。ローカルのパス(完了したジョブのカードから成果物をワンクリックで入れられます)でも https:// の URL でも構いません。ファイルはローカルモデルマーケットが走査するのと同じモデルディレクトリに置かれるので、あなたのファインチューニング結果が他のモデルと並んで一覧に現れます。二つ目の登録簿はありません。ファイルそのものが登録簿です。
データが機械を出るときの関門
Section titled “データが機械を出るときの関門”段階 1 はすべてこの機械の中で完結します。段階 2 と 3 はそうではないので、整理済みデータを外へ送る二つの操作——データセットの書き出しと、dry_run 以外のバックエンドでのジョブ作成——は、**「このデータがこの機械から出ることを理解しました」**にチェックするまで拒否されます。
関門は失敗時に閉じます。チェックがなければ拒否であって既定の同意ではなく、見知らぬバックエンドは遠隔とみなします。拒否は構造化された応答で、画面はそれをエラーではなく確認の一手順に変えます。つまりそのチェックボックスは、警告を目の前にして、その操作ごとに一度下す判断です。
- ローカル学習は一切しません。 遅い学習でも、質を落とした学習でもありません。当番機は整理と保管を担います。
- データの判断は依然としてあなたのものです。 データセット構築は伏せ字処理をしません。会話に顧客の詳細が含まれていれば、それは JSONL にも入ります。書き出しの関門がある理由がまさにこれです。
- 承認由来の選好ペアはレビュー裁定より弱い信号です。同じ問いへの二つの答えではなく、同種の行動が別々に判断されたものだからです。各行に由来を記録しているので絞り込めます。
- 対話テンプレートは重要です。
templateを間違えると流暢な出鱈目を学習するので、この欄は推測ではなく明示です。
私的なファインチューニングで足りないのは GPU 時間ではなく、あなたの事業がどう答えるかを映したコーパスです。そしてそれは、すでにこの機械の中にあります。この機能はそれを学習データに変え、本当に学習できるハードウェアへ送り、成果を持ち帰ります——そしてどの段階でも、計算がどこで起きていて、あなたのデータがどこへ行ったのかを、はっきり述べます。