今まで作成した大規模言語モデルGemma3のファインチューニングのまとめと、最終的な高精度化のためのデータ加工・学習過程のソースコード(GoogleColab)
【2025年6月1日 追記】
訓練データの高機能化を実施しました。
任意のディレクトリ(例: Google Drive)を指定し、訓練処理に必要な一式データをそのディレクトリに保存できます。
訓練を途中で中断した場合でも、前回の状態を自動で保存し、再開時にその状態から訓練を続行できるようになりました。
内部的に、GPUトレーニング専用処理 とTPUトレーニング専用処理 の2種類を用意しています。ご利用の環境に応じて自動で切り替わります。
これにより、長時間の学習や大規模データセットの扱いがより柔軟かつ安全になりました。
本ページで公開するソースコードは、Midori290・291・292でまとめてきた過去のポイント(高精度化のためのデータ加工手法や学習過程の工夫)をすべて反映した、現時点での最終版となります。
MITライセンスで公開 いたしますので、どなたでもご自由にご利用いただけます。
特に、高い精度を出すためのデータ前処理・統合・プロンプト設計・学習パラメータの最適化 など、Midoriシリーズで蓄積したノウハウを集約しています。
また、データセットを公開してくださった方々、ならびにご提供いただいたデータセット、Gemma3モデル(Google様)など、関係者の皆様に心より感謝申し上げます。
なお、PyTorch形式での学習モデルを採用した理由 ですが、最終的な出力形式としては、大規模言語モデルは高い計算量やWEB・様々なデバイス上での制約があり、変換処理が非常に複雑かつ最新技術が次々に登場しているため、すべてに対応するのは現実的ではないと判断しました。そのため、ネットとWEB環境が利用できるGoogle Colab上のPython環境であれば、ほとんどすべての言語モデル(AI関連)が動作・確認できると考え、PyTorch形式を選択しています。
Google Colabを実行できる環境があれば、誰でも、このコードの実行を確認ができるため、Colabのソースコードを主体にして公開させていただきております。
GoogleColabで公開しているソースコード。データ加工後のトレーニングを実行する際に、使用するデータ量を調整してください。
コード上に説明がありますので、デフォルトだと60万件そのままデータ訓練を始めてしまいます。
なので動くかどうかの確認は数万件程度に調整してください。60万件そのままだと、数日かかる計算になります。
例:
TRAIN_SAMPLE_SIZE = None → 全件使う
TRAIN_SAMPLE_SIZE = 2000 → 2000件だけ使う
TRAIN_SAMPLE_SIZE = None # 例: Noneなら全件, 2000なら2000件だけ
TEST_SAMPLE_SIZE = 100 # 検証用データは100件だけ
この部分です。(Gemma31bit LoRAファインチューニング PyTorch形式 .ipynb)
このノートブックの解説(データ作成・ファインチューニング)
1. 必要なライブラリのインストール :transformers(Gemma-3対応版)、peft、datasets、bitsandbytesなどを自動でインストールします。
2. データセットの作成 :
・菌類論文の3行要約データ
・菌類の識別形質比較データ
・日本語LLM用の一般QAデータ
これら複数のデータセットをロードし、QAペア(質問・回答)形式に整形・結合します。
3. プロンプト形式への変換 :ユーザーとAIの会話形式(<bos><start_of_turn>user...model...<end_of_turn><eos>
)に変換し、システムプロンプトも自動付与します。
4. データ分割・前処理 :全データをシャッフルし、訓練用・テスト用に分割。長文は自動で分割されます。
5. モデルの準備とLoRA設定 :GoogleのGemma3 1b itモデルをベースに、LoRA(Low-Rank Adaptation)で追加パラメータのみ学習。省メモリ・高速なファインチューニングが可能です。
6. 学習(ファインチューニング) :トレーナーを使い、指定エポック数で学習。途中で早期終了(EarlyStopping)もサポート。
7. モデルの保存・量子化 :
LoRAアダプタのみ(小容量)
ベースモデルにマージ(float32)
8bit/4bit量子化(省メモリ・高速化)
HuggingFace Hubへのアップロードも可能です。
8. 推論テスト :学習済みモデルで日本語の菌類質問に答えさせるサンプルコードも付属。
ポイント: 複数データセットの統合、プロンプト設計、LoRAによる効率的な専門知識追加、省メモリ量子化など、実践的なノウハウが詰まっています。
対象モデルについて
このノートブックで利用できるモデルの一例として、過去に作成した「菌類に詳しい日本語大規模言語モデル」 があります。
このモデルはHuggingFace Hubに保存されており、菌類分類や科学論文の要約、専門的な比較、日本語の質疑応答に強みがあります。
モデル名やリポジトリIDを選択画面で指定することで、誰でもColab上で簡単に利用できます。
【モデルの詳細】
・Googleの「Gemma3 1b it」モデルをベースに、LoRA(Low-Rank Adaptation)手法でファインチューニングしています。
・ファインチューニングには、菌類に関する日本語論文の要約データ、菌類の識別形質比較データ、日本語の一般QAデータなど、複数の専門・汎用データセットを組み合わせています。
・LoRAは元の大規模モデルの重みをほとんど変えず、追加の小さなパラメータ(LoRAアダプタ)だけを学習するため、効率的かつ省メモリで専門知識を追加できます。
・菌類分類や科学論文の要約、専門的な比較、日本語の質疑応答に特化した応答が可能です。
・HuggingFace Hubに保存されているため、Colab上で簡単に呼び出して利用できます。
詳細なファインチューニングの流れや工夫ポイントは、midori290〜midori292 のノートブックで解説しています。
関連ノートブックへのリンク
『PyTorch形式のモデルを利用して推論.ipynb』の詳細解説
このノートブックは、「自分の好きなAIモデルをColab上で簡単に選んで、すぐに日本語チャットができる」 ことを目指したものです。
難しい設定やコマンドを覚えなくても、画面の案内に従うだけでOK です。
Colabでノートブックを開く
ライブラリ自動インストール
モデル選択・ロード
チャット画面で対話
推論結果が表示される
ノートブックの主な流れ(クリックや入力はすべて画面上で案内されます)
1. Colabでノートブックを開く :リンクをクリックするだけでOK
2. 必要なライブラリが自動でインストール :特別な操作は不要です
3. モデル選択 :自分のDriveやHuggingFace、ローカルのモデルも自動検出。リストから選ぶだけ
4. チャット画面 :日本語で自由に質問・会話できます。履歴も反映されるので自然なやりとりが可能
5. 推論結果がすぐに表示 :AIが考えた答えがその場で返ってきます
ヒント: Colabの無料枠では大きなモデルは動かない場合があります。
うまく動かないときは、モデルを小さくする・再起動する・GPUランタイムを選ぶ、などを試してください。
このノートブックの「すごいところ」
・難しいPythonコードやパス指定が不要
・モデルの形式(LoRA/量子化/公式など)を自動で判別し、最適な方法でロード
・チャット履歴を活用して、より自然な会話ができる
・エラーが出ても、トラブルシューティングのヒントが表示される
・CPU/GPU環境を自動で判別し、最適な推論設定にしてくれる