ANTIGRAVITY LABEN
記事一覧/AIツール
AIツール/2026-04-10中級

Gemma 4ファインチューニング入門:AntigravityでカスタムAIモデルを作成する実践ガイド

Gemma 4をLoRA/QLoRAでファインチューニングし、Antigravityに組み込む手順を実践的に解説。データセット準備からカスタムモデルの活用まで、コード例付きで丁寧に説明します。

gemma412fine-tuning7antigravity435local-llm16lora4qlora4

取り組みの背景:なぜ Gemma 4 をファインチューニングするのか

Google が 2026 年 4 月に公開した Gemma 4 は、マルチモーダル対応・高い推論精度・商用利用可能なライセンスという三つの特長を備えたオープンソース LLM です。Antigravity との親和性も高く、多くの開発者が活用しています。

しかし、汎用モデルをそのまま使うだけでは物足りないケースもあります。

  • 社内専門用語や独自ドメインへの対応が弱い
  • 特定のフォーマット(JSON 出力・コードスタイル等)で精度が安定しない
  • プライバシー上、クラウド API に送りたくないデータを扱う必要がある

こうした課題を解決するのが ファインチューニング です。ここではGemma 4 を LoRA / QLoRA でファインチューニングし、その結果を Antigravity 上でローカル LLM として活用するまでの全工程をご紹介します。

まず Gemma 4 の API 連携の基礎を押さえたい方は、Antigravity × Gemma 4 API 実践実装ガイド もご参照ください。


Gemma 4 ファインチューニングの基礎知識

LoRA と QLoRA の違い

フルファインチューニングはモデル全パラメータを更新するため、数十 GB の VRAM が必要です。個人開発の現場では現実的ではありません。そこで登場するのが LoRA(Low-Rank Adaptation)QLoRA(Quantized LoRA) です。

LoRA の仕組み:

  • 元のモデルの重みを凍結し、小さな「アダプター行列」だけを学習する
  • 学習対象パラメータが全体の 0.1〜1% 程度に削減できる
  • 推論時はアダプターを元の重みにマージして使う

QLoRA の特長:

  • LoRA に 4-bit 量子化を組み合わせることで VRAM 消費をさらに削減
  • 16 GB 未満の GPU でも Gemma 4 の 7B クラスモデルを学習可能
  • 精度の低下は最小限(フルファインチューニング比で数%程度)

実際の開発では、まず QLoRA で試してみることを推奨します。精度が不足する場合に LoRA(bf16)へ移行するフローが効率的です。

必要な環境

  • GPU: VRAM 16 GB 以上(Google Colab Pro / A100 推奨)または Apple Silicon Mac(Metal バックエンド使用)
  • Python: 3.11 以上
  • ライブラリ: transformers, peft, trl, bitsandbytes, datasets
  • Antigravity: v1.20 以降(カスタムモデルのローカル接続サポート済み)

環境準備:Python 環境と Antigravity の設定

Python パッケージのインストール

# 必要パッケージのインストール
pip install transformers==4.48.0 peft==0.13.0 trl==0.13.0 \
            bitsandbytes==0.44.1 datasets==3.2.0 accelerate==1.2.0
 
# Gemma 4 は HuggingFace Hub からダウンロード
huggingface-cli login
# → HuggingFace のアクセストークンを入力
# → google/gemma-4-7b-it へのアクセス許可(要 HF アカウント)

Antigravity のカスタムモデル設定

Antigravity の設定ファイル(~/.antigravity/config.json)に以下を追記します。

{
  "models": {
    "custom": [
      {
        "name": "gemma4-finetuned",
        "provider": "ollama",
        "endpoint": "http://localhost:11434",
        "modelId": "gemma4-custom:latest"
      }
    ]
  }
}

ファインチューニング後のモデルを Ollama 経由で提供することで、Antigravity のコード補完・チャット機能をカスタムモデルで動作させられます。


データセットの作成と Antigravity での効率化

データセット形式

Gemma 4 のインストラクションチューニング(SFT: Supervised Fine-Tuning)では、以下の形式のデータセットを用意します。

# データセットのサンプル構造
dataset_sample = [
    {
        "instruction": "次のコードのバグを修正し、修正理由を説明してください。",
        "input": "def divide(a, b):\n    return a / b",
        "output": "def divide(a, b):\n    if b == 0:\n        raise ValueError('ゼロ除算は許可されていません')\n    return a / b\n\n# 修正理由: ゼロ除算による ZeroDivisionError を防ぐため、事前チェックを追加しました。"
    },
    # ... 最低 100 件以上を推奨
]

Antigravity でデータセット作成を効率化

Antigravity のマルチファイル編集機能を活用すると、データセット作成が格段に効率化されます。

# generate_dataset.py - Antigravity のエージェント機能で自動生成するスクリプト例
import json
import random
 
def create_coding_sample(code_snippet: str, language: str) -> dict:
    """コードスニペットからファインチューニング用サンプルを生成する"""
    templates = [
        f"以下の{language}コードをレビューし、改善点を提案してください。",
        f"以下の{language}コードにドキュメントを追加してください。",
        f"以下の{language}コードのパフォーマンスを改善してください。",
    ]
    return {
        "instruction": random.choice(templates),
        "input": code_snippet,
        "output": "(実際のデータでは人間が作成した高品質な回答を入れる)"
    }
 
# 少なくとも 500〜1,000 件のサンプルを用意することを推奨

Antigravity 上でこのスクリプトを開き、「エージェントに指示する」機能を使って「既存のコードベースからレビュータスクのサンプルを 200 件生成して」と依頼すると、AI が自動的にデータセットを拡充してくれます。


QLoRA によるファインチューニング実行

# fine_tune_gemma4.py
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model, TaskType
from trl import SFTTrainer, SFTConfig
from datasets import load_dataset
 
# 1. 量子化設定(QLoRA: 4-bit)
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_use_double_quant=True,
)
 
# 2. モデルとトークナイザーのロード
model_id = "google/gemma-4-7b-it"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    quantization_config=bnb_config,
    device_map="auto",
)
 
# 3. LoRA アダプターの設定
lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type=TaskType.CAUSAL_LM,
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# 出力例: trainable params: 83,886,080 || all params: 7,262,437,376 || trainable%: 1.155
 
# 4. データセットの読み込み
dataset = load_dataset("json", data_files="my_dataset.jsonl", split="train")
 
# 5. トレーニング設定
training_args = SFTConfig(
    output_dir="./gemma4-finetuned",
    num_train_epochs=3,
    per_device_train_batch_size=2,
    gradient_accumulation_steps=8,
    learning_rate=2e-4,
    warmup_ratio=0.1,
    lr_scheduler_type="cosine",
    save_steps=100,
    logging_steps=10,
    bf16=True,
    max_seq_length=2048,
)
 
trainer = SFTTrainer(
    model=model,
    args=training_args,
    train_dataset=dataset,
)
trainer.train()
 
# 6. アダプターの保存
model.save_pretrained("./gemma4-lora-adapter")
tokenizer.save_pretrained("./gemma4-lora-adapter")
print("LoRA アダプターを保存しました: ./gemma4-lora-adapter")

学習時間の目安として、A100 GPU(40 GB VRAM)で 500 件のデータセット・3 エポックで約 30〜60 分です。Google Colab Pro で実行可能なコストです。


カスタムモデルを Antigravity で使う

ファインチューニング後のモデルを Ollama 経由で Antigravity に接続するには、まずモデルをエクスポートします。

# 1. LoRA アダプターを元モデルにマージ
python -c "
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base = AutoModelForCausalLM.from_pretrained('google/gemma-4-7b-it')
model = PeftModel.from_pretrained(base, './gemma4-lora-adapter')
model.merge_and_unload().save_pretrained('./gemma4-merged')
AutoTokenizer.from_pretrained('google/gemma-4-7b-it').save_pretrained('./gemma4-merged')
"
 
# 2. GGUF 形式に変換(llama.cpp の convert スクリプトを使用)
python llama.cpp/convert_hf_to_gguf.py ./gemma4-merged \
    --outfile gemma4-custom.gguf --outtype q4_k_m
 
# 3. Ollama に登録して起動確認
cat > Modelfile << 'EOF'
FROM ./gemma4-custom.gguf
PARAMETER temperature 0.7
SYSTEM あなたは優秀なソフトウェアエンジニアです。日本語で簡潔に答えてください。
EOF
ollama create gemma4-custom -f Modelfile
ollama run gemma4-custom "テストメッセージです"

これで Antigravity の設定から gemma4-custom を選択すれば、ファインチューニング済みモデルがコード補完・チャットに使えるようになります。

さらに高度なプロダクション環境での活用については、Antigravity × Gemma 4 完全ガイド:プロダクション・エージェントをローカルLLMで構築する で詳しく解説しています。


よくあるエラーと対処法

CUDA out of memory:

QLoRA の batch size を 1 に減らし、gradient_accumulation_steps を 16 に増やすことで実効バッチサイズを維持しつつ VRAM 消費を削減できます。また、max_seq_length を 1024 に下げることも効果的です。

bitsandbytes が見つからないエラー:

pip install bitsandbytes --upgrade を実行してください。Mac(Apple Silicon)では bitsandbytes の代わりに Metal バックエンドを使う方法があります。

Ollama でモデルが起動しない:

GGUF ファイルのサイズが大きすぎる場合(例: q8_0 形式)、より軽量な量子化形式(q4_k_m)を試してください。ollama list でモデルが正しく登録されているか確認しましょう。


まとめ

ここではGemma 4 を QLoRA でファインチューニングし、Ollama 経由で Antigravity に組み込むまでの全工程を解説しました。

  • LoRA / QLoRA: 少ない VRAM でも効率的に学習できる手法
  • データセット作成: Antigravity のエージェント機能で効率化が可能
  • Ollama 連携: カスタムモデルを Antigravity のローカル LLM として活用

自社ドメインに特化した AI アシスタントを手元の開発環境で動かすことは、プライバシーとパフォーマンスの両立という観点から非常に価値があります。ぜひ本記事のコードをベースに、自分だけの Gemma 4 カスタムモデルを作成してみてください。

ファインチューニングの理論的背景をさらに深く

シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

AIツール2026-04-21
Gemma 4 を自分用に仕上げる — LoRA / QLoRA ファインチューニングを現実的な予算で回すための実務ノート
Gemma 4 をフルファインチューニングするのは個人には荷が重いですが、LoRA/QLoRA で軽量に『自分用』に仕上げるのは現実的な予算で可能です。データ準備、学習設定、落とし穴、評価方法、そして Antigravity で活用するまでを、実体験ベースで掘り下げます。
AIツール2026-04-19
Gemma 4 × Antigravity でローカルLLMを本番環境で動かす——セットアップから安定運用まで
Gemma 4 を Antigravity と繋いでローカルで本番運用するまでの道筋です。モデルサイズの選び方・Ollama のチューニング・API連携・応答が遅いときの対処を、実装例を添えて追っていきます。
Antigravity 基本2026-05-05
Gemma 4 fine-tuning 実践 — データ不足・過学習・品質問題を防ぐ完全ノウハウ
Gemma 4 の fine-tuning で直面するデータ品質・過学習・評価方法の問題を実装コード付きで解説。LoRA・QLoRA の使い分け、データ準備の落とし穴、本番で使えるチェックポイント選択の判断基準まで体系的にまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →