「このモデル、あと一歩なんだけどな…」——既存のLLMを使っていてそう思ったことはないだろうか。口調が硬すぎるとか、特定分野の専門用語に弱いとか。その「あと一歩」を埋めるのがファインチューニングだ。
ファインチューニングとは、すでに学習済みのモデルに追加のデータでさらに学習させること。ゼロからモデルを作る(数億円かかる)のに比べて、比較的安く(数千〜数十万円)でカスタマイズできる。個人でも手が出る時代になった。
ファインチューニングのやり方は大きく3つ:
- フルファインチューニング — 全パラメータを更新。一番効果が高いけど、Llama-3 70BクラスになるとGPUメモリが数百GB必要で個人には非現実的。
- LoRA(Low-Rank Adaptation) — ごく少数のパラメータだけ更新する手法。元のモデルの重みはそのままで、小さな「差分」だけ学習する。これなら1枚のGPU(24GB VRAM)で70Bモデルも調整できる。革命だ。
- QLoRA — LoRAに量子化(4bit化)を組み合わせて、さらに省メモリに。個人でLlama-3 70Bをファインチューンできる元凶。
僕が実際にLoRAでやったこと:自分のブログ記事300本分を学習させて「自分の文体を真似るモデル」を作った。結果は…結構怖いレベルで似た文章を吐き出してきて、ちょっと引いた。文体のクセ、語尾の癖、改行のリズムまで再現してくる。
データセットの質が全て。100件の良質なデータの方が、1000件のノイズ混じりデータより遥かに良い結果になる。ここをケチると「ゴミを入れてゴミが出る」典型に。