自宅ラボのユースケースまわりでの45テスト・ベンチマークと、Strix Halo上でローカルLLM 19本(Gemma 4およびQwen 3.5を含む)を評価

Reddit r/LocalLLaMA / 2026/4/4

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical UsageModels & Research

要点

  • 著者は、自身の自宅ラボのワークフロー(メール分類、ビジョンベースのカメラ警告の説明作成、献立(食事)計画、ファイナンス分析、Home AssistantのオートメーションYAML生成)に合わせてカスタムの45テスト・ベンチマークを構築した。これは、標準的な公開ベンチマークでは、これらの用途に対する信頼性や、構造化された出力品質を予測できなかったため。
  • AMD Strix Halo(Ryzen AI MAX+ 395)に128GBメモリを搭載し、llama-serverのDockerイメージを用いてVulkan/RADV環境で6つのモデルファミリーに属する19種類のローカルLLMを評価した。
  • ベンチマークでは、Claude Opus 4.6に各応答の全文をルーブリックに照らして採点させ、0〜10のスコアを付与する。ルーブリックは、コーディング、自宅ラボの運用/デバッグ、ツール呼び出しタスクなど12カテゴリにまたがる。
  • 著者が最初にモデルが壊れているように見えてしまった原因となる2つの別々のバグを修正した結果、Gemma 4 26B-A4Bが最高順位となった。これは、テスト実装上の問題が比較結果を歪めうることを示している。
  • この手法は学術的に厳密というより「趣味レベル」であることを明示しつつも、特定の繰り返し発生するオートメーション作業において、どのローカル・モデルが最適かを実務的に判断することを目的としている。
Strix HaloでローカルLLM 19個(Gemma 4とQwen 3.5を含む)を、ホームラボの用途とテストで45テストベンチマーク

ハードウェア: AMD Strix Halo (Ryzen AI MAX+ 395), 128GB RAM, 96GB共有VRAM, Vulkan/RADV, llama-server(kyuz0 Dockerイメージ)

簡単な免責事項: 私はML研究者でも科学者でもありません。テックの仕事をしていてかなり技術的ではありますが、これは純粋に趣味のプロジェクトです。方法論は学術的な基準で厳密なものではありません。単に自分の用途に対してどのモデルが最適かを知りたかっただけです。Qwenについていくつか初期結果を投稿したところ、他の人から「自分の用途に関する具体的なテスト内容ももっと投稿してほしい」と言われました。

TL;DR: 私のホームラボでは、非同期タスクのためにローカルLLMを動かしています。汎用のベンチマークはモデル選びに役立たなかったので、私が実際にLLMにやらせていることを基に、独自の45テスト・スイートを書きました。6つのファミリーにまたがる19モデルをテストしました。Gemma 4 26B-A4Bが結局トップになりましたが、その前に「初回実行で壊れているように見せてしまった」2つの別々のバグを直した後でした。

なぜローカルLLMなのか、そしてなぜ自分のベンチマークが必要だったのか

私はインタラクティブなコーディングと推論にはClaude(Opus)を使っています。ですが、24時間365日動いているサービスもいくつかあって、それらにはローカルモデルが必要です:

  • メール分類:15分ごとに実行し、50通以上のメールをカテゴリに振り分ける
  • カメラ通知:視覚モデルで、モーションアラートを引き起こしたものを説明し、その後スマホにプッシュする
  • 献立作成:2人分の食事制約つきで週次プランを生成する
  • ファイナンス分析:税金シナリオとポートフォリオ見通しを計算する
  • Home Assistantオートメーション:YAMLとして生成され、検証される

これらに「最先端品質」は必要ありません。必要なのは、速さ、信頼性、そして構造化出力をきちんとこなせることです。MMLUスコアやチャットボット・アリーナのランキングでは、「Home Assistantのオートメーションとして有効な記述を書けるか」や「Gmailを正しく分類できるか」が分かりません。なので自分でテストを書きました。

テスト・スイート

12カテゴリにまたがる45テスト。各応答は、Claude Opus 4.6が完全な出力をルーブリックに照らして0〜10で採点します:

  • コーディング(4テスト):Docker Compose、systemdサービス、Pythonスクリプト、コードレビュー
  • ホームラボ運用(6テスト):メモリ分析、OOMデバッグ、ディスクの切り分け、ネットワークデバッグ、ログ解析
  • ツール呼び出し(5テスト):Proxmoxのpct/qmコマンド、SSHチェーン、Docker操作、gitワークフロー
  • 食事/献立計画(6テスト):JSONの献立、仕込みスケジュール、レシピのスケーリング、買い物リスト、栄養
  • ファイナンス(5テスト):税計算、ポートフォリオ分析、FIREの見通し、タックスロス・ハーベスティング
  • メール分類(3テスト):カテゴリ割り当て、曖昧なケース、購読解除の判断
  • Home Assistant(3テスト):オートメーションYAML、テンプレートセンサー、条件
  • 数学(4テスト):住宅ローンの繰上げ、確率、数論、税最適化
  • 推論(3テスト):光熱費、統計、論理制約
  • 指示遵守(3テスト):フォーマット順守、JSON出力、否定的制約
  • 長文コンテキスト(1テスト):8Kトークンのインフラドキュメントから事実を抽出
  • 速度(2テスト):最初のトークンまでの時間、持続的な生成

そのうち9つは「クリティカル」テストで、私の最も一般的な用途に対応しているため2倍の重みづけをしています。最大スコアは540です。

各テストには「良い回答がどのようなものか」を定義したルーブリックがあります。例えばメモリ分析テストでは、モデルが「available」メモリ(22G)が実際の空き指標であり、「free」(5.7G)ではないこと、さらにスワップ使用量はクリティカルではないことを正しく特定する必要があります。税計算テストでは、AGI、課税所得、そしてブラケット(税率段階)の計算がすべて正しいことを確認します。各モデルが全45テストを実行した後、Claude Opusが同じルーブリックを使って審査員として採点します。これにより、19モデルすべてで採点の一貫性を保てますが、当然ながらスコアは「1人の審査員の解釈」によるものになります。ルーブリックと全ての生の回答は、誰かが照合したい場合のために保存しています。

何をテストしたか

6つのファミリーにまたがる19のモデル構成を、すべてVulkanでllama-server上で実行しました:

Qwenファミリー:

  • Qwen3.5-122B-A10B(10B active MoE)—先月まで私の本番モデルでした
  • Qwen3-Coder-Next 80B-A3B(3B active MoE)—現在の本番モデル
  • Qwen3.5-35B-A3B(3B active MoE)
  • 複数の量子化バリアント:Unsloth IQ3/IQ4/Q4/Q8 と ggml Q4

Gemma 4:

  • Gemma 4 26B-A4B(3.8B active MoE)—4月1日にリリース
  • Gemma 4 E4B(4.5B dense)—小型のマルチモーダルモデル
  • 複数のquant(Unslothとggmlの両方)

その他:

  • GPT-OSS 20Bと120B(OpenAIのオープンモデル)— 不完全な実行、下記の注を参照
  • Nemotron Cascade-2 30B-A3B(NVIDIA、Mamba-2ハイブリッド)
  • GLM-4.7-Flash(Zhipu)
  • Mistral Small 4 119B(6.5B active MoE)

すべて reasoning = off でテストしました(理由は下記で詳しく説明します)。

https://preview.redd.it/7oahi27wh1tg1.png?width=2080&format=png&auto=webp&s=44333dad9680333d162065170571b3b37f614f49

結果

https://preview.redd.it/u06cdf6zh1tg1.png?width=1930&format=png&auto=webp&s=e249a2226cd25e1720c1ef13dc73da6a494bbabc

品質トップ5:

順位 モデル スコア tok/s VRAM
1 Gemma 4 26B UD-Q8_K_XL 438/540 (81%) 41 26G
2 Gemma 4 26B ggml Q8_0 435/540 (81%) 43 26G
3 Qwen3.5-122B UD-IQ3_S 432/540 (80%) 27 44G
4 Gemma 4 26B UD-Q4_K_XL 430/540 (80%) 47 16G
5 Coder-Next ggml Q4_K_M 428/540 (79%) 52 46G

Gemma 4をちゃんと動かすまで

Gemma 4は4月1日にリリースされました。最初に読み込んだとき、45テストのうち11件が空の応答を返しました。モデルが壊れているのだと思いました。壊れてはいませんでした。問題は2つありました。

問題1:思考モードがあなたのトークンを食い尽くす。 Gemma 4のチャットテンプレートはデフォルトで思考(thinking)を有効にします。モデルは内部ブロックですべての最大2048トークンを燃やし尽くして、何も表示せずに返していました。llama-serverの設定にreasoning = offを追加したら直りました。Qwen3.5でも同じことが起きました(122Bで45テスト中32が空)。GPT-OSS*は同じ問題を抱える「harmony」形式を使っていて、私はそれを完全に動作させるところまで到達できませんでした。

問題2:トークナイザーバグ。 llama.cppにはGemma 4のトークナイザーバグ(PR #21343、4月3日にマージ)があり、長いプロンプトで入力を静かに壊していました。更新されたDockerイメージを取り込んだ後、Gemmaのスコアは全バリアントで20〜23ポイントジャンプしました。

https://preview.redd.it/e2dfgkz1i1tg1.png?width=1630&format=png&auto=webp&s=25df3ab37ff8df972a4d0be94f3693e4871bd1d8

両方の修正がないと、Gemma 4はCoder-Nextを下回りました。両方あると、1位になりました。もしGemma 4を提供開始日に試して「なんか微妙」と感じたなら、更新されたllama.cppと、思考を無効にしてもう一度試してみてください。

量子化の比較

ビット深度がどれくらい効くのか確かめるため、Gemma 4 26Bの異なる5種類の量子化(quants)をテストしました:

https://preview.redd.it/yji3h6p5i1tg1.png?width=1931&format=png&auto=webp&s=52ed55b0d6f71b9c64f83690dce2d7ff937ccb4c

  • IQ3(11G)はQ4の品質の98%を得られ、VRAMを35%節約でき、24%高速
  • Q8は最高スコア(438 vs 423-430)だが、IQ3のVRAMの2.4倍が必要
  • Unsloth Dynamic quantsは、同じビット深度でggml-orgより3〜5ポイント高いスコア。ただしggmlの方が少し高速

https://preview.redd.it/gko3zjk8i1tg1.png?width=1331&format=png&auto=webp&s=7301864760b34a647eab455c1ca5d4bc95017d70

Coder-Nextでは、ggmlはUnslothより実際に2ポイント高くなりました。量子化器の間に「明確な万能勝者」はありません。GemmaならUnsloth、Qwenならggmlを選ぶのがよさそうですが、差は小さいので、おそらく重要ではありません。

予想外だったこと

MoEモデルはVulkan上での唯一の選択肢。 アクティブパラメータが3〜10Bのものはすべて、40〜60+ tok/sで動きます。9Bを超える密(dense)モデルは遅すぎて実用になりません。Qwen3.5-27B(dense)は、3月の私のテストでは6〜8 tok/sで、ほとんどのテストでタイムアウトしました。iGPUや共有VRAMのあるAPUを使っているなら、denseモデルはやめた方がいいです。

思考モードはセットアップを静かに壊す。 複数のモデルファミリー(Gemma, Qwen3.5, GPT-OSS*)は、チャットテンプレートでデフォルトのまま思考を有効にします。llama-serverを使っていて、応答が空になったり途中で切り詰められたりする場合は、サーバーログでthinking = 1を探し、設定にreasoning = offを追加してください。一部のモデルでは、これが「0点」と「438点」の差でした。

トークナイザーバグは、量子化の選択より影響が大きい。 Gemmaのトークナイザ修正によってスコアが20ポイント以上動きました。Q4からQ8に変えるだけでは、動いたのは8〜15ポイント程度でした。特に新しいモデルアーキテクチャが出てすぐのタイミングでは、llama.cppのビルドを最新に保ってください。

GPT-OSS*はllama-server上で正しく動作しない。 harmony応答形式は、私が試した推論設定に関係なく、約25%のプロンプトで空の出力になります。120Bは概ね使えました(45件中空は3件)が、20Bはダメでした(空が12件)。誰かが直し方を見つけたなら、教えてください。

Nemotron Cascade-2が予想外だった。 62 tok/s、417/540、VRAM 24G、クラッシュなし。3月にはNemotron-3-Superは、20件の連続リクエストの後にクラッシュしていました。Cascade-2は45件すべてのテストをきれいに通しました。Vulkan上のMamba-2ハイブリッドは、ようやく安定したようです。

今動かしているもの

Coder-Nextから切り替え:

  • Primary: 品質重視のタスク向けにGemma 4 26B-A4B UD-Q8_K_XL(26G)
  • Fast secondary: メール分類とエージェントのループ向けにGemma 4 26B-A4B UD-IQ3_S(11G)
  • Vision: ひとまずQwen3-VL-8Bをカメラのスナップショット用として保持

Q8とIQ3で合計37G、私の96G GTTを使います。残りは59Gで、KVキャッシュに充てられます。これは、これまでのどの構成よりも余裕があります。

https://preview.redd.it/rovrjtcbi1tg1.png?width=1623&format=png&auto=webp&s=17930b4f86c1b02dba57e9ebdf4b51b6eb7267c7

手法

  • Temperature 0、max_tokens 2048(持続生成テストでは4096)
  • テスト中はモデルを1つずつロード(マルチモデル提供はなし)
  • Claude Opus 4.6が各応答をルーブリックで採点
  • 空の応答(モデルはトークンを生成したが、表示される出力が空だった)は0点
  • GPT-OSS*のスコアにはアスタリスクが付いている(全テストを完了できていないため)
  • 同じテストを自分の環境で実行したい人がいれば、テストスイート、ルーブリック、元データのJSONを共有する用意があります
投稿者: /u/MBAThrowawayFruit
[link] [comments]