世界を動かす技術を、日本語で。

なぜあなたの地域のLLMは実際よりも賢くないと感じるのか

概要

  • LLMのローカル実装とリファレンス実装の違いが精度と挙動に大きく影響
  • ハードウェアやソフトウェア、量子化方式ごとに推論結果が異なる現象
  • ベンチマークやKLD(KLダイバージェンス)による違いの可視化
  • AttentionバックエンドやKVキャッシュ量子化、重みの量子化による差異を実験
  • 実験結果から最適な組み合わせや落とし穴を解説

LLMローカル実装の落とし穴と推論精度への影響

  • フォーラムやSNSで絶賛されたモデル をローカルで動かしても、 期待外れな結果 になる事例が多発
  • リファレンス実装 (公式ラボ・ベンチマーク環境)と あなたの環境 の違いが主な要因
  • ハードウェア(GPU世代混在など)やソフトウェア(依存パッケージ734個超)による違い
  • 同じ重み を使っても、 命令セットや計算精度 の違いで推論結果が異なる現象
  • 実際の評価は「3つのテストプロンプト」や「ゼロショット」だけでは不十分
    • 長文コンテキストツールコールドメイン固有知識 の評価が必要

KLD(KLダイバージェンス)による分布のズレ

  • Logits (各トークンのスコア)は 確率分布 に変換され、サンプラーを経てテキスト化
  • KLDは「基準分布からどれだけズレたか」を測る指標
    • 低KLD=基準に近い が、必ずしも「賢い」わけではない
    • KLDの値だけで評価せず、 測定方法や環境 の開示が必須

vLLMなど推論エンジンの挙動

  • 推論エンジンの各段階 で、ハード・ソフト・モデル構成ごとに違いが発生
  • Attentionバックエンド (FlashAttention2, FlashInference, TritonAttention)選択が推論精度・速度に影響
    • 同じプロンプトでも 数千トークン以降でトークン選択が分岐
    • ランダムノイズではなく、計算実装の差異 が原因

KVキャッシュ量子化の影響

  • 重み・アクティベーションはBF16のまま、KVキャッシュのみ量子化 して比較
    • int8, int4化で トークン選択が大きく分岐、ツールコールの失敗率が増加
    • int4では リカバリー不可 な失敗も観測

重み量子化の比較実験

  • Qwen3.6-27Bモデルで以下の量子化方式を比較
    • BF16リファレンス
    • FP8(公式)
    • INT8 W8A16
    • NVFP4
    • AWQ W4A16
  • INT8 W8A16 が最も精度良好、 NVFP4やAWQ W4A16はトークン選択ミスやツールコール失敗 が多発
  • 量子化方式ごとに使用するCUDAカーネルやGEMM実装が異なり、精度・速度トレードオフが発生

実験まとめ・今後の展望

  • LLMのローカル実行は、実装・量子化方式・ハードウェアごとに大きなバラツキ
  • ベンチマークやKLDだけでなく、 実際の業務ワークロードでの評価が重要
  • 今後も さらなる実験GEMM実装違いの影響 を継続調査予定

ローカルLLM環境の精度評価ガイド

  • 自分の環境がどれだけ「ズレているか」 を知るためには
    • 標準ベンチマーク を複数実施
    • 実際の用途に近いプロンプト長文コンテキスト で評価
  • KLDやトークン一致率 の確認
    • 実装や量子化方式の違い ごとに分布のズレを比較
  • Attentionバックエンドや量子化方式 の選択が、 精度・速度・安定性 に直結

量子化方式・Attentionバックエンド選択のポイント

  • INT8 W8A16 は現状、 精度・安定性が高い
  • FP8やNVFP4、AWQ W4A16 は用途やツールコールによってはミスが増加
  • Attentionバックエンド
    • Tritonが安定 傾向
    • FlashAttention2やFlashInference は速度重視だが、分岐リスクあり
  • KVキャッシュの量子化 は、 int8以上推奨int4は非推奨

結論とアドバイス

  • 「みんなのローカル実装もズレている」 ので、 過度な完璧主義は不要
  • 自分の用途・ワークロードに最適な組み合わせ を探すことが重要
  • 公式ベンチマークや他人の評価 を鵜呑みにせず、 自分の環境で検証 する姿勢が肝要
  • 疑問やトラブルはコミュニティで相談 するのも有効

今後の展望

  • さらなる量子化方式やGEMM実装の比較実験 を実施予定
  • 複数GPU・異種環境での再現性や分岐の検証 も進行中
  • 実運用での安定性・ツールコール成功率 など、より実践的な評価軸の追加

Hackerたちの意見

MacBook Proでqwen 3.8 27b mlxを動かしてみたけど、正直言って、思ったより全然賢いなって驚いてる。

問題は、めっちゃ熱くなることなんだよね。m4 pro使ってるけど、同じような問題ある?

反応はどれくらい早い? あなたのノートパソコンのスペックは?

どれくらいのtok/s出てる? 何世代のMBP?

タイトルすら読んでないの?

MacBook Pro M5 48GBでqwen 3.8のアブリテレイテッドモデルを動かしてるけど、ローカルモデルで色々実験できるのはかなりいい感じだよ。

実際、めっちゃ良かった。いわゆる非AIボックスで8GBのVRAMがあって、偶然にもゲーミングPCからのものなんだ... 以前の「フロンティアレベル、試してみて!」って言われたモデルは、エージェントモードでは全く動かなかったし、以前のQwenも含めて、ただがっかりしただけだった。それでQwen 3.8 27bを試したら、超遅かったけど(4t/s)、pi.dev用の使える「ウェブ検索/プル」スキルを一発で作れたんだ。他のモデルは実際のガイダンスがあっても、全く使えるものを作れなかったからね。それ以来、gemma-4 12Bの4ビット量子化を約250MBのMTPで動かして、32kコンテキストで80-120 t/sで「動いてる」んだ。これは偶然のボックスでプライベートなことに使えるよ!まだ32kコンテキストだけど、我々のAPIで有料のClaude Opusに比べると全然ダメだけど、プライベートなローカルなことには全然問題なく使えるし、AIの価格が上がっても財布に優しいよ!この rig はほんとに一ヶ月前にゲーム用に買ったばかりなんだ。

この投稿の比較は、テストプロンプトをいくつか使って2.58ビットのgguf-in-ollamaを動かすことにはならないよ。真剣な質問だけど、Ollamaには根本的に何か問題があるの? Ollamaを使ってるのは、設定と管理が簡単だからなんだ(あと、VLLMがWindowsにあまり優しくないから)。VLLMの主な利点は、より良い同時処理管理(バッチ処理が優れている)だと思ってたけど、もし干渉の質自体が問題なら、選択を見直すべきかも。

聞いた話だと、Ollamaはllama.cppの薄いラッパーに過ぎなくて、ちゃんとしたクレジットを与えてないから、実際に大半の作業をしているメンテナたちから認知を奪ってるって評判が悪いみたい。

Ollamaを使ってる人たちは、モデルを動かすときにどの量子化を使ってるかをあんまり理解してないことが多いんだよね。だから「Qwen 3.8 27bをローカルで動かしてみたけど、ダメだった」って言う人がいるけど、OllamaはモデルのQ4バージョンをデフォルトで使うから、BF16の重みとは全然結果が違うんだよね。そうなると、モデル自体についての評価にはならないし、かなり量子化されちゃってるから。確かに楽にはなるけど、使ってるものを誤解してる人が多くて、その上で体験を共有するから、具体的にどの重みを使ってるかも言わないしね。ローカルユーザーなら、OllamaのCLIを使ってるなら、直接llama.cppを使っても問題ないよ。基本的には同じように動くけど、自分で重みを管理する必要があるし、お気に入りのエージェントを使ってOllamaがローカルで用意した「レジストリ + イメージレイヤー」を理解させれば、Ollamaでダウンロードしたファイルを再利用できるよ。

Ollamaに根本的に問題があるの? うん、あるよ。 https://news.ycombinator.com/item?id=47788385

「vLLM」については全然知らないんだけど、「llama.cpp」と比べて何か良い点ある?最初は「Ollama」(プリコンパイル版)から始めて、それで基本的なことは理解できたんだ。その後、「llama.cpp」のソースコードをダウンロードして、自分のGPU(Gentoo Linuxのプロプライエタリモジュールを使ったCUDA/nVidia)とCPU(AMD)用に特定のコンパイルオプションでコンパイルしたら、同じモデルが2倍速で動いたんだ。それ以来「llama.cpp」にハマってる(たまに「ik_llama.cpp」も使うけど)。正直、「Ollama」(プリコンパイル版)が「llama.cpp」(ローカルコンパイル版)より遅かった理由は分からないし、今更確認するのも面倒だしね。とにかく、今は「llama.cpp」のハードウェア設定やワークロードを調整するためのノブが大好きだから、これをおすすめしてるんだ。

Hacker Newsで議論の続きを見る