EP.14 以降、手元で を動かす話を扱ってきました。次に出てくるのが「自社のデータに合わせられないか」という要望です。
この回は を扱いますが、結論から言うと最後の手段です。まず、それ以外で足りないかを確認します。
1. 何を解決したいのかを分ける
「自社に合わせたい」という要望は、中身が3種類に分かれます。手段がまったく違うので、まず切り分けます。
| やりたいこと | 適した手段 | 追加学習の適性 |
|---|---|---|
| 自社の情報を答えさせたい | 検索して渡す() | 向かない |
| 出力の形式を揃えたい | プロンプト → 効かなければ追加学習 | 向く |
| 口調・文体を揃えたい | 同上 | 向く |
| 専門用語を正しく扱わせたい | 用語集を渡す → 追加学習 | 場合による |
| 判断の基準を覚えさせたい | 基準を明示して渡す | 限定的 |
1行目が最も多い要望で、最も向かない組み合わせです。追加学習で事実を覚えさせようとすると、更新のたびに学習し直しになりますし、覚えたつもりで間違えるようになります。検索して渡すほうが、正確で更新も容易です。
この区別が実務上いちばん効きます。事実は毎回渡せばよく、覚えさせる必要はありません。一方、出力の形式や口調は毎回指示すると長くなるので、教えてしまうほうが効率的です。
2. 追加学習の前に試すこと
形式や口調の問題でも、まずプロンプトで試します。多くの場合、ここで足ります。
- 1求める形式を明示する — 「必ずJSONで、この項目を含めて」
- 2例を2〜3件見せる — 説明するより例のほうが伝わる
- 3やってほしくないことも書く — 「前置きを書かない」
- 4出力を検証して、外れたら再試行する — 形式は機械的に確認できる
2番目が効きます。望む出力の例を数件見せるだけで、形式はかなり揃います。追加学習を検討する前に、例を増やして改善するかを確認してください。
4番目も現実的です。LLM時代のテスト戦略 EP.07 で扱ったとおり、形式は決定的に検証できます。外れたら再試行する仕組みを入れれば、多少のばらつきは吸収できます。
| 対処 | 手間 | 効果 | 更新のしやすさ |
|---|---|---|---|
| プロンプトの調整 | 小さい | 中 | すぐ変えられる |
| 例を増やす | 小さい | 大きい | すぐ変えられる |
| 検証と再試行 | 中 | 大きい | 変えやすい |
| 追加学習 | 大きい | 大きい | 学習し直しが要る |
3. それでも追加学習が要る場面
上を試して足りない場合、追加学習の出番です。該当するのは限られた条件です。
- プロンプトが長くなりすぎる — 例を大量に入れないと揃わない
- 毎回同じ指示を繰り返している — 固定化したほうが効率的
- 小さいモデルで動かしたい — 指示への追従が弱いぶんを学習で補う
- 独特の形式が必要 — 一般的でない出力形式
3番目が実務的な動機になりやすい。大きいモデルなら指示だけで揃うが、手元で動かすには重い。小さいモデルに追加学習して、必要な用途だけを揃えるという使い方です。
2番目も効率の観点で正当です。毎回同じ長い指示を送っていると、その分の処理時間と資源を毎回消費します。固定化すれば、指示を短くできます。
4. 差分だけを学習させる
手元で回す場合、モデル全体を学習させるのは現実的ではありません。代わりに使うのが です。
小さな追加部分だけを学習させる方式で、必要な計算資源とメモリが大幅に減ります。元のモデルは変えないため、切り替えも破棄も容易です。
| 方式 | 必要な資源 | 元のモデル | 用途ごとの切り替え |
|---|---|---|---|
| 全体を学習 | 非常に大きい | 書き換わる | モデルごと持つ必要がある |
| 差分だけ学習 | 現実的 | 変わらない | 差分を差し替えるだけ |
最下行の切り替えのしやすさは運用で効きます。「要約用」「分類用」と用途ごとに差分を作り、同じモデルに付け替えて使うという形が取れます。
# 必要なものを入れるpip install mlx-lm
# 学習データを用意する(JSONL 形式)# data/train.jsonl に1行1件で置く# {"prompt": "...", "completion": "..."}
# 差分だけを学習させるpython -m mlx_lm.lora \ --model mlx-community/Qwen2.5-7B-Instruct-4bit \ --train \ --data ./data \ --batch-size 2 \ --iters 600 \ --adapter-path ./adapters/summarize
# 学習した差分を付けて試すpython -m mlx_lm.generate \ --model mlx-community/Qwen2.5-7B-Instruct-4bit \ --adapter-path ./adapters/summarize \ --prompt "次の議事録を3行で要約してください: ..."モデル名やオプションは版によって変わります。実行前に、使っている版の説明を確認してください。ここで示したいのは、差分の置き場所を分けておく(`./adapters/summarize`)という運用の形です。
5. データの作り方
追加学習の成否は、データの質でほぼ決まります。件数より、揃っていることが重要です。
- 1望む出力の形を揃える — ばらついていると、ばらついた出力を学ぶ
- 2実際に使う入力に近づける — 想定と違う入力では効かない
- 3機微な情報を除く — 学習させると取り出せなくなる
- 4少数から始めて効果を見る — いきなり大量に作らない
1番目が最も効きます。「だいたいこんな感じ」で集めたデータは、だいたいの出力しか生みません。形式を揃えたいなら、学習データの形式が完全に揃っている必要があります。
学習させた内容は、後から取り出すのが困難です。個人情報や顧客固有の情報を含めると、その差分を配布できなくなります。家庭の運用設計 EP.08 で扱った と同じで、入れないのが最も確実です。
6. 効果の確認と、やめる判断
学習したら、本当に良くなったかを確認します。感覚ではなく、比較で判断してください。
| 比較の対象 | 見るもの |
|---|---|
| 学習前 vs 学習後 | 同じ入力で、形式が揃ったか |
| 学習前(例を増やしたもの) vs 学習後 | 追加学習の追加分の効果 |
| 得意な入力 vs 苦手な入力 | 学習データから外れた入力でどうか |
| 他の用途 | 学習前にできていたことが劣化していないか |
2行目が重要です。「プロンプトを工夫した状態」と比較しないと、追加学習の効果が分かりません。学習前の素の状態と比べると、実際にはプロンプトで得られたはずの改善まで、追加学習の効果に見えてしまいます。
4行目も見落とされます。特定の用途に合わせると、他が劣化することがあります。用途を絞って使うなら問題ありませんが、汎用に使うつもりなら確認が要ります。
そして、効果が小さければやめる。差分を破棄すれば元に戻ります。元のモデルを変えていないという利点が、ここで効きます。
知識は渡す、形式は教える。事実を覚えさせる用途には向かない。追加学習の前に、例を2〜3件見せることを試す(これで足りることが多い)。手元で回すなら LoRA で差分だけを学習し、用途ごとに差し替える形にする。データは件数より揃っていること。効果はプロンプトを工夫した状態と比較して判断し、小さければ破棄してください。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。