
2026/04/08 4:37
**Show HN:** Apple Silicon向けGemma 4マルチモーダルファインチューナー
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Gemma-tuner-multimodal は、Mac に優しいツールキットであり、ユーザーが Google の Gemma 言語モデルをテキスト、画像+テキスト(キャプション/VQA)、および音声+テキストでファインチューニングできるようにします。すべて Apple Silicon 上で直接実行され、NVIDIA GPU は不要です。arm64 Python と Metal Performance Shaders (MPS) バックエンドをネイティブに使用し、GPU を持つユーザー向けにはオプションの CUDA サポートも利用可能です。
ツールキットは LoRA ファインチューニングを Gemma 4 および Gemma 3n チェックポイント(例:
google/gemma-4-E2B-it、google/gemma-3n-E2B-it)に対応しています。データはローカル CSV ファイルから取り込むか、Google Cloud Storage/BigQuery からストリーミングして、ラップトップにテラバイト級のコピーを避けることができます。トレーニング設定は階層構造の INI ファイル(config/config.ini)で定義され、各プロファイルはモダリティ、サブモード、トークン予算(キャプション/VQA の画像トークン予算値 70/140/280/560/1120)、およびデータセットパスを指定します。
画像のファインチューニングはキャプション(画像+指示)と VQA(画像+質問)をサポートしています。音声のファインチューニングは、Apple‑Silicon で唯一のネイティブ経路であり、医療や法務などのドメイン固有の音声→テキストタスクに最適です。
エクスポートでは LoRA アダプターを単一の Hugging Face/SafeTensors バンドルに統合し、Core ML と GGUF の推論ユーティリティが含まれます。プロジェクトはまた、テキストオーバーライド、ブラックリスト処理、および削除規則用の自動データパッチング(
data_patches/)を提供します。プロファイルに visualize=true を設定すると、ローカル Flask サーバーが起動し、トレーニング進捗を可視化できるオプションのビジュアライザーを有効化できます。
CLI コマンドには
prepare、finetune、evaluate、export、blacklist、runs list、および設定用のガイド付き wizard が含まれます。トラブルシューティングノートでは、非対応モデル、MPS 利用不可、OOM(メモリ不足)、遅いフォールバックなどの一般的な問題をカバーしています。ライセンスは Gemma の Hugging Face モデルカードへの同意が必要です。
Mac 上でオンプレミスのマルチモーダルトレーニングを可能にすることで、ツールキットはクラウド GPU への依存を減らし、音声–テキストモデルをカスタマイズしたい企業向けに効率的なワークフローを提供します。
本文
Gemmaをテキスト・画像・音声でファインチューニング – Mac上でローカルに収まりきらないデータも扱える
- 🖼️ 画像+テキスト LoRA – ローカルCSVからキャプション生成&VQA
- 🎙️ 音声+テキスト LoRA – Apple Silicon にネイティブ対応した唯一のパス
- 📝 テキストのみ LoRA – CSV で指示/完了タスクを学習
- ☁️ GCS / BigQuery からストリーム – SSD を埋めることなく数 TB のデータでトレーニング
- 🍎 Apple Silicon 上で動作 – MPS 本格サポート、NVIDIA GPU 不要
ソース: https://github.com/mattmireles/gemma-tuner-multimodal(公開)
他ツールキットとの比較
| 機能 | Gemma Tuner | MLX‑LM | Unsloth | axolotl |
|---|---|---|---|---|
| テキストのみ CSV で Gemma をファインチューニング | ✅ | ✅ | ✅ | ✅ |
| 画像+テキスト(キャプション/VQA CSV)で Gemma をファインチューニング | ✅ | ⚠️ バリエーションあり | ⚠️ バリエーションあり | ⚠️ バリエーションあり |
| 音声+テキストで Gemma をファインチューニング | ✅ | ❌ | ❌ | ⚠️ CUDA み単独 |
| Apple Silicon (MPS) 上で動作 | ✅ | ✅ | ❌ | ❌ |
| クラウドからトレーニングデータをストリーム | ✅ | ❌ | ❌ | ⚠️ 部分的 |
| NVIDIA GPU 不要 | ✅ | ✅ | ❌ | ❌ |
Gemma をテキスト・画像・音声のいずれも Apple Silicon 上でファインチューニングしたい場合、これが唯一のツールキットです。
何を作れるか
- ドメイン固有 ASR – 医療筆記、法廷証言、コールセンター録音など
- ドメイン固有ビジョン – レシート・チャート・スクリーンショット・製造欠陥・医用画像のキャプション/VQA
- 文書&画面理解 – UI エージェント、OCR 近接パイプライン、チャート QA 用にスクリーンショット → 構造化出力ペアを学習
- アクセント・方言・低リソース言語適応 – 自身のラベル付き音声でベース Gemma を未代表の声・言語へ適応
- マルチモーダルアシスタント – 画像や音声を基盤にしてテキスト推論を拡張(文字起こし、キャプション生成、Q&A パイプライン)
- 完全ローカル・オンデバイスパイプライン – Mac 上でトレーニング&実行。データは機械外へ出ません
GCS や BigQuery にデータがある場合でも、ローカルに数 TB をコピーせずにラップトップだけで済ませられます。データローダーは必要に応じてシャードをストリームします。
対応モデル
config/config.ini の base_model で Gemma マルチモーダルチェックポイントを指定します。デフォルトの設定ファイルには以下が含まれます(LoRA は Hub 重み上に乗せる):
| モデルキー | Hugging Face base_model | 備考 |
|---|---|---|
| gemma‑4‑e2b‑it | google/gemma-4-E2B-it | Gemma 4 instruct, 約 2B – が必要 |
| gemma‑4‑e4b‑it | google/gemma-4-E4B-it | Gemma 4 instruct, 約 4B – Gemma 4 スタックが必要 |
| gemma‑4‑e2b | google/gemma-4-E2B | Gemma 4 base – Gemma 4 スタックが必要 |
| gemma‑4‑e4b | google/gemma-4-E4B | Gemma 4 base – Gemma 4 スタックが必要 |
| gemma‑3n‑e2b‑it | google/gemma-3n-E2B-it | Gemma 3n instruct, 約 2B – デフォルトで によってインストール |
| gemma‑3n‑e4b‑it | google/gemma-3n-E4B-it | Gemma 3n instruct, 約 4B |
独自チェックポイントを追加したい場合は
[model:your-name] セクションに group = gemma と互換性のある base_model を記述してください。Gemma 4 の 26B/31B など大きな重みは、現在このトレーナーがサポートする AutoModelForCausalLM の音声パスと別アーキテクチャになるため、未対応です。
アーキテクチャ概要
gemma_tuner/cli_typer.py # 標準 CLI gemma_tuner/core/ops.py # prepare → scripts.prepare_data, finetune → scripts.finetune などをディスパッチ gemma_tuner/scripts/finetune.py # Gemma モデル用ルーター gemma_tuner/utils/device.py # MPS → CUDA → CPU 選択 gemma_tuner/utils/dataset_utils.py # CSV 読み込み、パッチ適用、ブラックリスト意味論 gemma_tuner/wizard/ # Questionary + Rich UI;python -m gemma_tuner.main finetune … を起動
典型的な実行フォルダ構成:
output/ ├── {id}-{profile}/ │ ├── metadata.json │ ├── metrics.json │ ├── checkpoint-*/ │ └── adapter_model/ # LoRA アーティファクト(該当時)
設定は階層型 INI で、デフォルト → グループ → モデル → データセット → プロファイルと順に読み込まれます。
gemma_tuner/core/config.py が参照します。CLI をリポジトリ外から呼び出す場合は GEMMA_TUNER_CONFIG を設定してください。
要件
- Python 3.10+(macOS 内蔵 Python は 3.9 → 古い)
- macOS 12.3+(MPS 用); ARM64 ネイティブ Python を使用(Rosetta では不可)
- RAM 小規模 Gemma 実行なら 16 GB 程度で十分。多めに取ると安定します
- CUDA 必須なし;必要なら PyTorch の CUDA ビルドをインストール
インストール手順
-
仮想環境作成(最初に実行)
python3.12 -m venv .venv source .venv/bin/activate -
ARM64 Python を確認
python -c "import platform; print(platform.machine())" # arm64 が出力されるはず -
PyTorch インストール
pip install torch torchaudio -
パッケージインストール
pip install . -
Gemma 4(オプション)
pip install -r requirements/requirements-gemma4.txt -
ウィザード実行
ウィザードはモデル選択、データセット設定、トレーニングを対話形式で案内し、
を自動生成します。config/config.ini事前に Hugging Face のライセンス同意と認証が必要です:
huggingface-cli login
CLI チートシート
# データセット準備(プロファイル名は config.ini に記載) gemma-macos-tuner prepare <dataset-profile> # トレーニング gemma-macos-tuner finetune <profile> --json-logging # 評価 gemma-macos-tuner evaluate <profile-or-run> # HF/SafeTensors ツリーをエクスポート(adapter_config.json があれば LoRA をマージ) gemma-macos-tuner export <run-dir-or-profile> # エラーからブラックリスト生成 gemma-macos-tuner blacklist <profile> # 走行一覧表示 gemma-macos-tuner runs list # ガイド付きセットアップ gemma-macos-tuner wizard
テキストのみファインチューニング
ローカルに
data/datasets/<name>/ にある CSV(分割済み)で音声を使わずに学習します。プロファイル設定例:
modality = text text_sub_mode = instruction # または completion prompt_column = prompt # 指示モードの場合 text_column = response # 完成モードの場合は `text` max_seq_length = 2048
チェックポイントはマルチモーダル Gemma の AutoModelForCausalLM を保持し、音声トワーの重みは v1 でメモリに残ります。
画像ファインチューニング
ローカル CSV (
train.csv / validation.csv) にある画像+テキストペアを学習します。サポートモード:キャプション(image_sub_mode = caption)と VQA(image_sub_mode = vqa)。
例(キャプション):
modality = image image_sub_mode = caption text_column = caption image_path_column = image_path image_token_budget = 280 # (70, 140, 280, 560, 1120 のいずれか)
例(VQA):
modality = image image_sub_mode = vqa prompt_column = question text_column = answer image_path_column = image_path image_token_budget = 560
トークン予算を増やすと詳細度は上がりますが、MPS 上でメモリ消費・ステップ時間も増加します。
Apple Silicon での実行
- エンドツーエンドノートは
に記載README/specifications/Gemma3n.md - マルチモーダル Gemma 4 + MPS ガイド:
README/guides/apple-silicon/gemma4-guide.md
典型的なワークフロー:
python -m gemma_tuner.scripts.gemma_preflight python -m gemma_tuner.scripts.gemma_profiler --model google/gemma-3n-E2B-it gemma-macos-tuner wizard
bf16 がサポートされている場合は推奨。デバッグ時のみ PYTORCH_ENABLE_MPS_FALLBACK=1 を有効にしてください。
データ:CSV、GCS、BigQuery
ローカルに GCS 音声をコピーせずに済ませたいときは:
gemma-macos-tuner prepare <profile> --no-download
BigQuery からのインポートには
pip install .[gcp] と Application Default Credentials(gcloud auth application-default login または GOOGLE_APPLICATION_CREDENTIALS)が必要です。ウィザードで _prepared.csv を作成し、config/config.ini にデータセットセクションを追加できます。
パッチディレクトリ構造:
data_patches/{source}/ ├── override_text_perfect/ ├── do_not_blacklist/ └── delete/
オプションのトレーニングビジュアライザー
visualize=true をプロファイルに設定し、表示された URL(デフォルト 127.0.0.1:8080)を開くとトレーニング進行状況が確認できます。Flask が未インストールの場合は警告のみでトレーニングは継続します。
トラブルシューティング
| 症候 | 推奨対処 |
|---|---|
| ファインチューニング時に「Unsupported model」 | を含むモデル ID / パスを使用 |
| MPS が利用できない | macOS 12.3+、arm64 Python、最新 PyTorch を確認 |
| OOM / スワップ激増 | バッチサイズを小さく、勾配チェックポイント化、 を下げる |
| Fallback 環境が遅い | デバッグ後は を無効に |
| 設定ファイルが見つからない | を設定、またはリポジトリ内で実行( が存在) |
| 401 / ガテッドモデル / 重みダウンロード不可 | Hugging Face のライセンス同意を済ませ、 または を設定 |
コントリビューション
詳細は
docs/CONTRIBUTING.md を参照。cli_typer.py と gemma_tuner/core/ 内の共通ヘルパー拡張を優先してください。
謝辞
Google の Gemma チーム、Hugging Face Transformers & PEFT、PyTorch MPS メンテナ、および Activity Monitor が赤くなるまで問題報告してくださったすべての方へ感謝します。
ライセンス
MIT ライセンスで公開。