概要
- Gemmaモデルのテキスト・画像・音声のローカルファインチューニングをMac上で実現
- 大容量データもGCSやBigQueryからストリーミング学習が可能
- Apple Silicon (M1/M2/M3)にネイティブ対応、NVIDIA GPU不要
- LoRAによるマルチモーダル学習をサポート
- プライバシー重視のオンデバイストレーニングが可能
Gemma Tuner Multimodalの特徴
- Gemmaのテキスト・画像・音声ファインチューニング をMac上で実行
- テキストのみ、画像+テキスト(キャプション/VQA)、音声+テキストの全モード対応
- ローカルCSV によるデータ管理
- テキストや画像・音声のペアデータをCSVで管理し、学習・評価を簡単に設定
- GCS/BigQueryからのストリーミング学習
- ローカルストレージ不足でも、クラウド上のテラバイト級データに直接アクセス
- Apple Silicon(MPS)ネイティブ動作
- NVIDIA GPUやCUDA環境が不要、Mac一台で完結
- LoRAによる軽量ファインチューニング
- Hugging FaceのGemmaチェックポイントとPEFT LoRAを活用
他ツールとの比較
- Gemma 3n/4 のテキスト・画像・音声ファインチューニングに唯一フル対応
- Apple Siliconでマルチモーダル学習 できる唯一の選択肢
- クラウドストリーミング学習 や オンデバイス完結 も実現
| 機能 | gemma-tuner-multimodal | MLX-LM | Unsloth | axolotl | |---|---|---|---|---| | テキストのみLoRA | ✅ | ✅ | ✅ | ✅ | | 画像+テキストLoRA | ✅ | ⚠️ | ⚠️ | ⚠️ | | 音声+テキストLoRA | ✅ | ❌ | ❌ | ⚠️ CUDAのみ | | Apple Silicon対応 | ✅ | ✅ | ❌ | ❌ | | クラウドストリーミング | ✅ | ❌ | ❌ | ⚠️ 部分対応 | | NVIDIA GPU不要 | ✅ | ✅ | ❌ | ❌ |
できること・用途例
- 専門分野ASR :医療・法律・コールセンターなどの音声認識精度向上
- ドメイン特化画像理解 :レシート、チャート、製造欠陥、医療画像キャプションやVQA
- ドキュメント・画面理解 :UIエージェントやOCRパイプライン、チャートQA
- アクセント・少数言語適応 :独自音声ラベルでGemmaを多言語化
- マルチモーダルアシスタント :画像・音声とテキスト推論の組み合わせ
- 完全ローカル学習 :データと重みが外部に出ないプライベート運用
サポートモデル
- Gemma 3n/4 (テキスト・画像・音声の各種チェックポイント)
- Hugging FaceのGemmaベースモデルと連携
- Gemma 4の大規模モデル(26B/31B)は現時点で非対応
アーキテクチャ概要
- CLIツール :gemma-macos-tuner
- モデル選択、データセット設定、学習・評価・エクスポートを一元管理
- データローダー :ローカル/HTTP/GCS/BigQueryからCSVをロード
- 学習・評価スクリプト :finetune.py、evaluate.py、export.py
- 設定管理 :INIファイル階層でデフォルト・グループ・モデル・データセット・プロファイルを管理
動作要件
- Python 3.10以上 (Homebrewやpython.orgからarm64バージョン推奨)
- macOS 12.3以上 (Apple Silicon/MPS必須)
- RAM 16GB以上 (小規模なら可、64GB推奨)
- PyTorch (MPSまたはCUDAビルド)
- Hugging Faceアカウント (Gemmaモデル利用のため)
インストール手順
- 仮想環境作成
- Homebrewでpython@3.12をインストール
- python3.12 -m venv .venv && source .venv/bin/activate
- arm64確認
- python -c "import platform; print(platform.machine())" でarm64を確認
- PyTorchインストール
- pip install torch torchaudio
- パッケージインストール
- pip install -e .
- Gemma 4利用時
- pip install -r requirements/requirements-gemma4.txt
- Wizard起動
- gemma-macos-tuner wizard で対話的セットアップ
主要コマンド
- データセット準備 :gemma-macos-tuner prepare <dataset-profile>
- 学習 :gemma-macos-tuner finetune <profile> --json-logging
- 評価 :gemma-macos-tuner evaluate <profile-or-run>
- エクスポート :gemma-macos-tuner export <run-dir-or-profile>
- ブラックリスト生成 :gemma-macos-tuner blacklist <profile>
- セットアップウィザード :gemma-macos-tuner wizard
テキストのみファインチューニング
- CSVのローカル分割データ で学習
- instructionモード :prompt_column, text_column指定でユーザー/アシスタント形式
- completionモード :text_columnのみで全体を学習
- max_seq_length 指定可能(デフォルト2048)
画像ファインチューニング
- キャプション (image_sub_mode=caption)または VQA (image_sub_mode=vqa)選択
- image_token_budget (70, 140, 280, 560, 1120)で画像情報量を調整
- image_path_column で画像パス指定
音声ファインチューニング
- 音声+テキストペア のCSVによる学習
- ASR評価スクリプト や クラウドストリーミング も対応
クラウドデータ対応
- GCS/BigQueryのCSVデータ をローカルにコピーせず直接学習
- Application Default Credentials でBigQuery認証
Tips & 注意点
- 長いシーケンス学習時はOOMに注意 (RAM不足に陥りやすい)
- bf16推奨、MPS安定性のためattentionはeagerモード
- PYTORCH_ENABLE_MPS_FALLBACK=1 は本番で無効推奨(CPUフォールバックを隠すため)
開発者メッセージ(要約)
- Whisperのローカルファインチューニング から始まり、Gemma 3n/4に拡張
- 大容量クラウドデータのストリーミング学習 を実現するために開発
- Apple Siliconで音声ファインチューニングできる唯一の選択肢
- 個人のサイドプロジェクト として楽しみながら開発
- Gemma 4の注目度の高さ と MLXで音声ファインチューニング不可 が本ツール開発の動機
公式リポジトリ・詳細 https://github.com/mattmireles/gemma-tuner-multimodal
ドキュメント
- README/guides/README.md
- README/specifications/Gemma3n.md
- README/guides/apple-silicon/gemma4-guide.md
コミュニティ貢献・フォーク歓迎