自社のサービスで使っているモデルを、一度も他と比べていないことに気づきました。日本語の判断を返す部分です。指摘されて調べたら、比較の記録がどこにもありませんでした。
そこで41問の設問を作って、3つのモデルを同じ土俵で測りました。総合では現行が勝ちましたが、分野別に見ると順位が入れ替わる場所が1つありました。
何を測ったのか
当社は「判断」を外部のAPIに出さず、手元のGPUで返す仕組みを使っています。文章は1トークンも生成せず、選択肢のロジットを1回の順伝播で読むだけの方式です。手法は OpenJev(MIT)が示したもので、当社が考えたものではありません。
この方式はモデルを問いません。だから「どのモデルを載せるか」は本来、測って決めるべきでした。実際には上流が使っていた Qwen3.5-4B をそのまま引き継いでいただけです。
測ったのは3つです。
- Qwen3.5-4B(現行・Apache-2.0)
- google/gemma-4-E4B-it(Apache-2.0)
- sbintuitions/sarashina2.2-3b-instruct-v0.1(MIT・日本語特化)
すべて4bit量子化、RTX 3090、判定のやり方は完全に同一にしました。
設問の作り方
ベンチマークの数字は、当社の実務を代表しません。だから公開ベンチマークは使わず、実際に製品で走っている判定と同じ型で41問作りました。6分野です。
- 常識推論 12問 — 「父は定年退職し、その後は年金で暮らしていました → 亡くなった方は年金を受け取っていたと言えるか」
- 意図分類 6問 — 問い合わせを返金・取消・追跡・その他の4択に振り分ける
- 緊急度 5問 — 1時間以内に人が出るべきか
- 表情8択 8問 — 発言から表情を選ぶ(選択肢が増えたときの偏りを見る)
- 否定・含意 6問 — 「65歳未満は利用できません → 70歳は使えるか」のように一語で反転する型
- 数量・期限 4問 — 「1回3万円・年5回まで → 年20万円使えるか」
各問に正解の根拠を書き添えてあります。あとから正解そのものを検証できるようにするためです。
結果
総合はこうなりました。
- Qwen3.5-4B(現行)… 32/41(78%)・中央値80ms
- gemma-4-E4B-it … 30/41(73%)・中央値88ms
- sarashina2.2-3b … 30/41(73%)・中央値46ms
ここで止めれば「現行のままでよい」という結論です。分野別を見るまでは。
常識推論だけ、順位が入れ替わる
| 分野 | Qwen3.5-4B | gemma-4-E4B | sarashina2.2-3b |
|---|---|---|---|
| 常識推論 | 6/12 | 6/12 | 9/12 |
| 意図分類 | 6/6 | 6/6 | 4/6 |
| 緊急度 | 5/5 | 4/5 | 4/5 |
| 表情8択 | 7/8 | 8/8 | 7/8 |
| 否定・含意 | 4/6 | 3/6 | 3/6 |
| 数量・期限 | 4/4 | 3/4 | 3/4 |
常識推論だけ、3Bの日本語特化モデルが 9/12 で、4Bの2つ(どちらも 6/12)を上回りました。しかも46msで、現行より1.7倍速い。
中身を見ると差がはっきりします。
- 「定年退職し年金で暮らしていた → 年金を受け取っていたか」… Qwen と gemma は no、sarashina は yes
- 「運送会社で40年トラックに乗っていた → 厚生年金の加入歴があるか」… Qwen と gemma は no、sarashina は yes
日本の制度に関する常識が、素で入っているかどうかの差です。パラメータ数では埋まりませんでした。
これは当社にとって実害のあった場所です。手続きナビの判定でこの型を外すので、辞書と組み合わせて補う回避策を書いていました。モデルを選び直せば、その回避策は薄くできます。
3モデルとも外した問題
面白いのはここです。
- 「父が亡くなり、あとのことを何も聞いていません → 遺言書があるか」… 正解は「分からない」。全モデル no
- 「娘は来年成人式です → その子は18歳未満か」… 正解は「いいえ」。全モデル yes
「分からない」と答えるのが、どのモデルも苦手でした。情報が無いときに保留せず、断定します。これはモデルを変えても解けないので、辞書や決定論のルールで拾い続ける必要があります。
分かったこと
- 総合点で選ぶと間違える。 78% と 73% の差より、常識推論 6/12 と 9/12 の差のほうが、実務では大きい。
- 用途で使い分けるのが実測に合う。 制度・常識の判定は sarashina、問い合わせの振り分けや数量の判断は Qwen。
- パラメータ数は日本語の常識を保証しない。 3B が 4B を上回った。
- 「分からない」は全モデルの穴。 ここは機械学習で埋めず、ルールで埋める。
限界も書いておきます
41問では足りません。分野あたり4〜12問なので、6/12 と 9/12 の差が偶然でないとは言い切れません。分野ごとに30問以上ないと、この差は統計的に主張できないというのが正直なところです。商品として売るなら200問規模と6〜8モデルが要ります。
それでも、比較の記録がゼロだった状態からは前に進みました。少なくとも「現行を疑う理由」と「どこを疑うべきか」が数字になりました。
仕組みは残してあります
モデルIDを1つ渡せば、同じ41問を同じ方式で回せるようにしてあります。新しいモデルが出たときに、また手探りに戻らないためです。設問・スクリプト・3モデル分の全回答(確信度と所要時間つき)を、そのまま置いてあります。
測っていないものは、選んだとは言えません。今回いちばん効いたのは、モデルを替えたことではなく、替える理由を数字で持てるようにしたことでした。
