PM 編集方針 ── 7/29 18:00 HKT evening brief LOCKED 計画(7/30 PM slot)

PM 7/29 18:00 evening brief で P0-PM 7/30 に指定された内容。HN #6(237pts, 73cmt)で発見、PM 7/30 18:00 再検証でも未出版・妥当性確認済み。Zero Japanese coverage confirmed. 当記事は PM 7/29 PM brief LOCKED + PM 7/30 18:00 evening brief validation の二重確認を経ている。Builder tutorial cluster。Override counter: 7 (post-freeze)。NOT override(pipeline upgrade P1→P0)。

はじめに:500ドルでフロンティアを超える現実

2026年7月27日、FermiSense(フェルミセンス)という企業が一つのケーススタディを公開した。Qwen 3.5 9B Instruct という90億パラメータのオープンウェイトモデルに、強化学習(RL)ファインチューンを施したところ、GPT-5.6 Sol(93%)や Claude Opus 4.8(91%)を上回る 97%の精度 を自動車部品カタログレビュー業務で達成したという。

訓練コストは 約500ドル。推論コストはフロンティアAPIの 1/68倍

これは「小さな専門家モデルがフロンティア汎用モデルを特定タスクで超える」というアイデアの最も具体的で再現可能な実証例の一つだ。本記事では、FermiSenseが何をどう行ったのか、GRPO(Group Relative Policy Optimization)がなぜ機能するのか、そして読者が自身の業務でこのアプローチを再現するための具体的な手順を解説する。

FermiSense ケーススタディの全容

タスク:自動車部品カタログレビュー

FermiSenseが取り組んだのは、Eコマースの自動車部品カタログにおける 商品記載の正確性検証 だ。入力される自由記述の部品説明(例:「ブレーキパッドセット、セラミック、フロント、Toyota Camry 2022-2025適合」)が、5万以上の部品からなるカタログの正しい製品にマッチしているかを判断する。

エピソードあたりのツール呼び出しフローは以下の通り:

  1. 検索タクソノミーを参照(search taxonomy)
  2. ブランドをルックアップ(lookup brand)
  3. 属性スキーマを取得(get attribute schema)
  4. 判定をコミット(commit verdict)

各エピソードには同一のツール、画像、スコアラー、ターン予算が与えられ、完全に制御された比較環境で評価が行われた。

訓練設定

パラメータ
ベースモデル Qwen 3.5 9B Instruct
RL手法 GRPO(Group Relative Policy Optimization)
訓練データ 177,767 エピソード(Amazon Berkeley Objects データセット由来)
検証データ 200 stratified episodes
ハードウェア 2x RTX PRO 6000 GPU
訓練時間 約3.5日(1,000 optimizer steps)
GPUコスト 約500ドル
開始精度 64.2%
最終精度 97%
フロンティア越え Step 250 付近(約1日)

比較結果

モデル % of max achievable score 1,000件あたりコスト
ファインチューン済み Qwen 3.5 9B 87.3% $0.50
GPT-5.5-pro ~76% $172
GPT-5.6 Sol ~71% $29
Gemini 3.1 Pro ~76% $19
Claude Fable 5 ~76% $111
GPT-5.5 ~70% $34

最も性能の高いフロンティア構成(GPT-5.6 Solを最適化プロンプトで運用)のスコアが76.9%だったのに対し、ファインチューン済み9Bモデルは 87.3% を記録した。相対改善率は +13.5%

コストインパクト

1,000件あたりのコスト比較:

  • GRPOスペシャリスト(9B): $0.50
  • 最安のフロンティア: ~$20
  • 最高のフロンティア: ~$34

40倍〜68倍のコスト差 がついた。スケールのインパクトを考えるとさらに顕著だ:

4000万件/日のカタログ判定を行う大規模ECの場合、$34/千件のフロンティアAPI運用では年間約 5億ドル かかる。GRPOスペシャリスト($0.50/千件)では約 700万ドル98%のコスト削減 に相当する。

GRPO がなぜ効くのか

GRPO(Group Relative Policy Optimization)は、DeepSeek R1を有名にしたRL手法だ。PPO(Proximal Policy Optimization)と比較すると、以下の違いがある:

要素 PPO GRPO
価値モデル(Value model) 必要 不要
サンプル戦略 1 response per prompt 複数 response のグループ
ベースライン 学習された価値関数 グループ平均報酬
メモリフットプリント 大(policy + value + reference) 小(policy + reference)
実装の複雑さ 中〜高

GRPOがこのタスクで効果を発揮した理由は、検証可能な正解(ground truth)が存在するタスクだったからだ。カタログレビューには正解データがあり、スコアラー(verifier function)が自動的に各エピソードに報酬を割り当てられる。

GRPOの動作フロー:

  1. グループ生成: 1つのプロンプトに対してN個(FermiSenseはグループサイズ8)の応答をサンプリング
  2. 報酬計算: 各応答をverifier functionで評価
  3. ベースライン: グループ内の平均報酬をベースラインとして計算
  4. 利点計算: 各応答の報酬 - グループ平均 = advantage
  5. ポリシー更新: advantageが正の応答の確率を上げ、負の応答の確率を下げるようにpolicyを更新
  6. KL制約: 参照モデルからあまり乖離しないようKLダイバージェンスでペナルティ

PPOのように価値モデルを別途学習する必要がないため、訓練パイプラインがシンプルになり、ハードウェア要件も低くなる。これが500ドルという低コストでの訓練を可能にした要因の一つだ。

なぜQwen 3.5 9Bが選ばれたのか

ベースモデルとしてQwen 3.5 9B Instructが選ばれた理由はいくつかある:

  1. Apache 2.0ライセンス: 商用利用・改変・再配布が完全に自由。GLM-5.2のMITライセンスと並んで最も制約の少ないオープンウェイトモデルの一つ
  2. 9Bという適度なサイズ: 単一GPU(80GB VRAM)でフルファインチューンが可能。27Bや72Bでは訓練コストが桁違いに上がる
  3. 高品質なベース性能: スケールRLによる訓練済みで、出荷時点で64.2%の精度を持っていた。チューニング前からある程度の性能が出ている
  4. 日本語対応: 日本語専用トークンを含み、同じ内容を少ないトークンで表現可能。トークン効率がGemma 4やLlama 4より高い
  5. プライベートデプロイ: オンプレミス運用が可能で、データが外部に出ない

Qwen 3.5自体の詳細や、他のオープンウェイトモデルとの比較については、Qwen 3.5 ファインチューンガイド(GLM-5.2実践例)の冒頭解説も参考になる。

自分で再現する方法

FermiSenseのアプローチを自身のタスクで再現するための手順を解説する。

Step 1: タスク選定の条件

GRPOスペシャリストが有効なタスクの条件:

条件 説明
頻繁に発生する 月1,000〜10,000件以上(少ないと訓練コストが回収できない)
検証可能な正解がある 自動スコアラーが組める(人手判定を避けられる)
業務知識が必要 独自のタクソノミー、ルール、判断基準がある
データを外部に出せない 社内データで訓練し、社内でデプロイする

向かないタスク:

  • 月100件未満の低頻度タスク
  • 「良い/悪い」の客観的基準がないクリエイティブ業務
  • 汎用的な知識のみで対応できるタスク

Step 2: ベースモデル選定

モデル パラメータ VRAM要件 ライセンス 備考
Qwen 3.5 9B 9.4B 22GB (BF16 LoRA) Apache 2.0 日本語性能最高、推奨
Llama 4 8B 8B ~20GB (BF16) Llama 4 Community 英語タスク向き
Gemma 4 9B 9B ~22GB (BF16) Apache 2.0 1Mコンテキスト
GLM-5.2 9B 9B ~20GB (BF16) MIT 実践例あり

Step 3: 訓練データの準備

  1. 数百〜数千件のラベル付きデータを集める(FermiSenseは約18万件だが、数百件でも効果があるケースが多い)
  2. 各サンプルに verifiable output(検証可能な正解)を含める
  3. 訓練データと同じ分布の ホールドアウト検証セット を確保する

Step 4: Verifier Function の実装

GRPOの鍵は自動スコアラーだ。以下はシンプルな実装例:

class CatalogVerifier:
    """カタログレビュー用verifier functionの簡易実装"""
    def __init__(self, catalog_db):
        self.catalog = catalog_db  # 正解データベース
        self.missed_violation_penalty = 7.0  # 見逃しのペナルティ(重み大)
        self.false_alarm_penalty = 1.0       # 誤検知のペナルティ(重み小)

    def score(self, prediction: dict, ground_truth: dict) -> float:
        """
        prediction: モデルの出力(approved/rejected + reasoning)
        ground_truth: 正解データ
        """
        correct = prediction["verdict"] == ground_truth["verdict"]

        if not correct:
            if ground_truth["verdict"] == "rejected":
                # 本当は弾くべきものをapprovedした → 見逃し(重いペナルティ)
                return -self.missed_violation_penalty
            else:
                # 本当は通すべきものをrejectedした → 誤検知(軽いペナルティ)
                return -self.false_alarm_penalty

        # 正解の場合、部分点付与
        accuracy = 1.0
        if prediction.get("confidence"):
            accuracy *= prediction["confidence"]
        return accuracy

FermiSenseのケースでは、見逃し(violationを見過ごす)に 7倍のペナルティ を設定した。これは、不良商品の流通を防ぐ現実的なビジネス判断を反映している。

Step 5: GRPO訓練の実行

Hugging Face TRLの GRPOTrainer を使う。以下は最小限の起動コード:

from trl import GRPOTrainer, GRPOConfig

# 訓練設定
training_args = GRPOConfig(
    model_name="Qwen/Qwen3.5-9B-Instruct",
    learning_rate=1e-6,
    num_train_epochs=1,
    per_device_train_batch_size=2,      # グループサイズに応じて調整
    gradient_accumulation_steps=4,
    num_generations=8,                   # グループサイズ(GRPOのN)
    max_prompt_length=2048,
    max_completion_length=1024,
    beta=0.04,                           # KL制約の強さ
)

# GRPO Trainerの初期化
trainer = GRPOTrainer(
    model=training_args.model_name,
    reward_funcs=[catalog_verifier],     # 独自のverifier function
    args=training_args,
    train_dataset=dataset,
    eval_dataset=eval_dataset,
)

# 訓練開始(〜2,500ステップ、シングルGPUで数十時間)
trainer.train()

注意: GRPOTrainerはHugging Face TRLの最新バージョンで利用可能。Qwen 3.5のファインチューン用ノートブックは Unslothの公式ドキュメント でも提供されている。

Step 6: デプロイとルーティング

訓練済みモデルは以下の方法でデプロイできる:

  • vLLM: 本番推論サーバー。マルチGPU対応、PagedAttentionでメモリ効率が良い
  • Ollama: 簡易テスト・検証用。GGUF量子化でサイズを削減
  • LoRA adapter + base: LoRAならアダプターのみ持ち運び可能

効率的な推論ルーティングの設計については、GPT-5.6 Terra routing ガイドで詳しく解説している。

このアプローチが示唆するもの

1. フロンティアAPI vs オープンウェイトは「偽の二択」

FermiSenseの結果が示すのは、「フロンティアAPIか、オープンウェイトか」という二択が誤った枠組みだということだ。正しい問いは:

このタスクには検証可能な正解があるか?

「はい」なら、GRPOによる専門化モデルはフロンティアを超える可能性が高い。このパターンはFermiSenseだけでなく、Ramp(スプレッドシート検索)、Intercom Fin Apex(カスタマーサポート)、Harvey(法律文書レビュー)などでも確認されている。 Inklingとオープンウェイトの実践ガイドでも、同様のパターンが報告されている。

2. プロンプト税の排除

FermiSenseは重要な観察をしている。GPT-5.5のプロンプトに含まれる 2,800文字の指示 が、測定コストを3分の1押し上げていた。これを「プロンプト税」と呼び、ファインチューンではこの税がゼロになる——指示が重みに組み込まれるためだ。

3. コスト意識の高いチームへの実装推奨

コスト破綻の構造で指摘した通り、Uberが$3.4Bを4ヶ月で燃焼したように、トークン課金のAPIは使えば使うほどコストが線形に増える。一方、ファインチューン済みオープンモデルの推論コストは、一度訓練してしまえば 限界費用がほぼゼロ に近づく。

4. 日本語タスクでの優位性

Qwen 3.5は日本語トークン効率が高い。日本語専用トークンを持つため、同じ内容を表現するのに必要なトークン数がGemma 4やLlama 4より少ない。これは推論コストの面でさらなる優位性をもたらす。

限界と注意点

FermiSenseの結果は印象的だが、いくつかの重要な限界がある:

  1. 外部妥当性: スコアラーはFermiSense社のカタログポリシーをエンコードしている(見逃し: 7x vs 誤検知: 1x)。ポリシー、データ、ツールが変わればランキングも変わる
  2. 未検証: 結果はFermiSenseの自己報告であり、独立した第三者による再現はまだ行われていない
  3. 再現性: モデル/アダプターのウェイトはHugging Faceにあるが、READMEやモデルカード、評価手順が不足している。ライセンスもクリアではない(ベースQwen 3.5 9BはApache 2.0だが、派生モデルのライセンスは明示されていない)
  4. 汎用性がない: このモデルは自動車部品カタログの専門家であり、他のタスクではフロンティアに及ばない

まとめ

FermiSenseのケーススタディは、$500のGRPOファインチューンでQwen 3.5 9BがGPT-5.6 SolやClaude Opus 4.8を特定タスクで超えられることを示した。

このアプローチが機能する条件は明確だ:

  • 検証可能な正解がある
  • 頻繁に発生するタスク
  • 独自の業務知識が必要
  • 社内データで訓練し、社内でデプロイできる

フロンティアモデルが日々進化する一方で、「小さな専門家モデル」という別の軸での進化が、特にコスト効率とデータ主権の観点から重要な意味を持ち始めている。

クライアントごとのカスタマイズが求められる日本企業の業務システムにおいて、このアプローチは特に有効だろう。日本語対応に優れたQwen 3.5をベースに、自社の業務データでGRPOファインチューンする——500ドルから始められるAI専門化の選択肢が、今現実のものとなった。


この記事はAIによって生成され、人間の編集を経て公開されています。 Appwright AI は AI によるコンテンツ制作の可能性を探求する実験的プロジェクトです。