GX10でQwenとGemma 4を載せ替えながら比較するローカルAI実験環境を抽象的に表したテックビジュアル

Article

GX10でQwenとGemma 4を載せ替えてわかった、ローカルLLM専用機の現実

2026年5月23日
10 min read
ローカルAI
#ASUS Ascent GX10#Qwen#Gemma 4#vLLM#OpenClaw#ローカルLLM

GX10をローカルAI専用機としてセットアップしてから、QwenとGemma 4を何度も載せ替えて試した。

最初は単純に、Mac Studioで動かしているGemma 4をGX10へ移せば、メインマシンを空けられて、しかも速くなるのではと思っていた。ところが実際には、同じGemma 4系ではMac StudioのMLXがかなり強かった。

一方で、GX10にQwenを載せると見え方は変わる。Qwen3.6のQ4はかなり速い。ただし、OpenClawやAtlasで使うには速度だけでは足りない。tool calling、画像入力、context長、runtime、実際のアプリ経路まで見ないと判断できなかった。

この日はほぼ一日、GX10上でモデルとruntimeを入れ替え続けた。

先に結論

今回の手元実験での暫定判断はこう。

速さ:
  GX10 Qwen3.6 Q4 llama.cpp
  > GX10 Qwen3.6 vLLM
  > Mac Studio Gemma 4 MLX
  > GX10 Gemma 4 vLLM

実用候補:
  GX10 Qwen3.6 vLLM

安定性を見たい用途:
  Gemma 4 vLLMをfallback候補に残す

まだ慎重に見るべきもの:
  OpenClaw/Atlasのtool-heavyな実経路

GX10が遅い、という話ではない。むしろQwenではかなり速かった。問題は、モデル、量子化、runtime、tool calling、画像入力、context長の組み合わせで結果が大きく変わることだった。

特に大きかったのは、同じ「Qwen3.6」と言っても、GGUFをllama.cppで出すtext-only経路と、Hugging FaceモデルをvLLMで直接出すmultimodal経路では、できることが違うという点だ。

GX10で試した主なLLM構成の生成速度比較

この図の数字は、手元の短い評価での平均値だ。厳密な同一条件比較ではない。むしろ、ローカルLLM専用機の評価では「runtimeと起動経路が違うだけで、別物のように振る舞う」ことを見るためのメモに近い。

最終的に置いた構成

最終的に、GX10では単一モデルだけを置くのではなく、役割ごとに分けた。

LLM / vision / tool calling:
  model: Qwen/Qwen3.6-35B-A3B
  runtime: vLLM
  served name: gx10-qwen
  endpoint: http://<gx10-tailnet-ip>:18081/v1
  context: 131072
  input: text + image

embedding:
  model: multilingual-e5-large
  endpoint: http://<gx10-tailnet-ip>:18082/v1
  runtime: CPU sidecar

TTS:
  model: gx10-edge-tts
  endpoint: http://<gx10-tailnet-ip>:18083/v1
  runtime: CPU/network sidecar

STT:
  model: gx10-whisper-medium
  endpoint: http://<gx10-tailnet-ip>:18084/v1
  runtime: CPU faster-whisper medium int8

中心に置いたのはQwen/Qwen3.6-35B-A3Bだ。Q4のllama.cpp版はもっと速かったが、実用上はtext-onlyだった。vLLM版はQ4ほど速くない代わりに、画像入力とOpenAI互換tool callingを同じ経路で扱える。

Embedding、TTS、STTはCPU側のsidecarにした。これはQwen本体のGPUメモリを削りすぎないためだ。TTSは一度Qwen3-TTSをGPUで動かすところまで試したが、vLLM-Omniの2段構成で追加のGPUメモリをそれなりに使う。常用構成としては、Qwen本体を優先した。

STTは、TTSで作った日本語テスト音声を正しく文字起こしできた。短い音声のウォーム後は数秒台まで来ているので、自分用の軽い音声入力補助としては十分試せそうだった。

試したモデル一覧

ざっくり並べると、今回見たのはこのあたり。

host model runtime 主目的 結果
Mac Studio mlx-community/gemma-4-31b-it-4bit MLX VLM server 既存baseline Gemma 4比較では最速。約20.6 tok/s
GX10 gemma-4-31B-it-Q4_K_M.gguf llama.cpp CUDA 同系Gemma比較 約10.8 tok/s。Mac Studioに負けた
GX10 Qwen3.6-35B-A3B-UD-Q4_K_M.gguf llama.cpp CUDA OpenClaw高速backend候補 とても速い。通常回答で約62 tok/s。ただしtext-only
GX10 Qwen3.6-35B-A3B-BF16 llama.cpp CUDA Qwen品質改善の確認 動くがQ4より遅い。小テストでは明確な品質改善なし
GX10 Qwen3VL-32B-Instruct-Q4_K_M.gguf llama.cpp CUDA 画像対応Qwen 画像は読めたが、実用経路は重め
GX10 Qwen/Qwen3-VL-30B-A3B-Instruct-FP8 SGLang Qwen VLM構成 直叩きは速い。ただしOpenClaw/Atlasのtool-heavy用途で不安定
GX10 nvidia/Gemma-4-31B-IT-NVFP4 vLLM 安定候補 遅いが、画像・tool・Atlas Chatでは扱いやすかった
GX10 Qwen/Qwen3.6-35B-A3B vLLM Qwen3.6のmultimodal経路 Gemma 4 vLLMより約4から5倍速い。text/image確認済み

この表だけ見ると「Qwenが勝ち」と言いたくなる。ただ、実際にはもう少しややこしい。

Q4のQwenは速いが、画像が必要な場面では足りない。SGLangのQwen3-VLは直APIでは面白かったが、OpenClawやAtlasのtool-heavyな実経路では崩れ方が気になった。Gemma 4 vLLMは遅いが、Atlas Chatのような根拠付きのtool利用では安定感があった。

Gemma 4: Mac Studioが強かった

最初にやったのはGemma 4同士の比較だった。

Mac Studio側は、もともと動かしていたMLX VLM server。

model: mlx-community/gemma-4-31b-it-4bit
runtime: MLX
context: 262144

GX10側は、GGUFをllama.cpp CUDAで起動した。

model: gemma-4-31B-it-Q4_K_M.gguf
runtime: llama.cpp CUDA
context: 32768

結果は意外だった。

target mean wall-clock completion speed
Mac Studio MLX Gemma 4 20.60 tok/s
GX10 llama.cpp CUDA Gemma 4 10.76 tok/s

GX10の方が速いと思っていたが、Gemma 4同士ではMac Studioがかなり速かった。

たぶん、Mac StudioのMLX最適化とメモリ帯域が効いている。今回のMac StudioはM4 Max 64GB構成で、Appleの仕様上メモリ帯域は546GB/s。一方、GX10のGB10は273GB/s級とされている。Gemma 4 31Bくらいのdenseモデルだと、GPU演算だけでなくメモリ帯域とruntime最適化がかなり効いていそうだ。

もちろん、これは完全に同一条件ではない。MLX 4bitとGGUF Q4_K_Mで、runtimeも違う。だから「GX10が遅い」とは言えない。ただ、少なくとも「Gemma 4を移せばGX10の方が速い」は、この条件では成り立たなかった。

Qwen3.6 Q4: 速い、かなり速い

次に試したのがQwenだった。

model: Qwen3.6-35B-A3B-UD-Q4_K_M.gguf
runtime: llama.cpp CUDA
context: 65536 -> 131072 -> 262144
served model: gx10-qwen

これは速かった。

Mac Studio Gemma 4との比較では、通常回答もtool call小テストもQwenが明確に勝った。

target suite mean wall tok/s
Mac Studio Gemma 4 answer tasks 19.56
GX10 Qwen Q4 answer tasks 62.08
Mac Studio Gemma 4 tool-call tasks 10.32
GX10 Qwen Q4 tool-call tasks 36.63

小さなtool callテストでは、search_hybridget_fileexecのようなtool callも正しく出せた。

ただし、OpenClawに組み込むとすぐに別の問題が出た。64K contextでは、実セッションがシステムプロンプトやツール定義で膨らみ、contextが足りなくなった。

request (65555 tokens) exceeds the available context size (65536 tokens)

そこで128K、最終的には262K contextまで上げた。GX10はメモリに余裕があり、モデル側も長いcontextを持っていたので、ここはGX10らしい強みが出た。

一方で、このQwen3.6は実用上text-onlyだった。OpenClawやAtlasで画像を扱いたいという要求には合わない。

Qwen3.6 BF16: 品質向上を期待したが、速度低下が大きい

Q4で速いなら、BF16なら品質が上がるのでは、ということでBF16も試した。

model: Qwen3.6-35B-A3B-BF16
runtime: llama.cpp CUDA
context: 262144

互換性は問題なかった。直接のchat completionもtool callも成功した。

ただ、同じ小さな評価タスクではQ4より明確に遅かった。

target suite mean wall tok/s tool accuracy
Qwen Q4_K_M quality 62.08 -
Qwen BF16 quality 27.41 -
Qwen Q4_K_M tools 36.63 4/4
Qwen BF16 tools 17.96 4/4

BF16は動く。しかし、この範囲では遅くなった分だけの明確な品質改善は見えなかった。しかもQ4とBF16を同時に起動するとメモリ圧が強くなり、swapを使い始めた。

常用候補としては、BF16のllama.cpp経路より、別の起動方法を見た方がよさそうだった。

Qwen3-VL: 画像対応はできるが、実用経路は難しい

テキストしか扱えないのは困るので、Qwen3-VLも試した。

まずはGGUF版。

model: Qwen3VL-32B-Instruct-Q4_K_M.gguf
mmproj: mmproj-Qwen3VL-32B-Instruct-F16.gguf
runtime: llama.cpp CUDA
context: 262144

これは画像を読めた。OpenClawのlocal one-shotでも、画像の内容を読ませるところまでは成功した。

ただし、OpenClaw Gatewayのone-shot --file経由では、ファイルが入力として認識されているのに、モデル側には画像処理ログが出ないケースがあった。これはモデルそのものというより、Gatewayのファイル転送経路の問題に見えた。

その後、より理想に近い構成としてSGLang + Qwen3-VL FP8も試した。

model: Qwen/Qwen3-VL-30B-A3B-Instruct-FP8
runtime: SGLang
context: 262144
served model: gx10-qwen
input: text + image

この構成はかなり有望だった。直接APIでは、テキスト、画像、OpenAI互換tool callingが動いた。短い直接生成では約51 tok/sも出ている。

ただし、実際にOpenClawやAtlasで使うと別の問題が見えた。

  • Telegramでtool call JSONの断片がそのまま出ることがあった
  • argumentsだけが溢れ出るような返答が見えた
  • Atlas Chatで、以前のQwenでは取れた情報を取れないケースがあった
  • 画像は読めても、tool-heavyなエージェント用途では安定感が足りなかった

SGLang側の設定で改善できる部分はありそうだった。ただ、OpenClaw側のツールを絞って帳尻を合わせるのは、実用評価としては違う。実環境のOpenClawでそのまま使えるかを見たいので、ここは課題として残した。

Gemma 4 NVFP4 + vLLM: 遅いが、いちばん安定した時期があった

最終的に一度戻ってきたのがGemma 4だった。

ただし、最初のGGUF/llama.cppではなく、NVIDIAのNVFP4モデルをvLLMで起動した。

model: nvidia/Gemma-4-31B-IT-NVFP4
runtime: vLLM
served model: gx10-gemma4
context: 65536
tool parser: gemma4
reasoning parser: gemma4
input: text + image

この構成では、直接APIでテキスト応答、画像入力、OpenAI互換tool callを確認できた。Atlas Chatでもsearch_hybrid -> get_fileの流れで根拠付き回答ができた。

一方で、速度は厳しかった。

runtime context prompt sec completion tokens wall tok/s
Gemma4 NVFP4 vLLM 256K jp_summary 38.38 256 6.67
Gemma4 NVFP4 vLLM 64K jp_summary 38.48 256 6.65
Gemma4 NVFP4 vLLM 64K python_code 32.87 218 6.63

256Kから64Kに落としても、長文生成速度はほぼ変わらなかった。つまり、この時のボトルネックはKV cache容量というより、Gemma 4 31Bのdense decodeそのもの、またはvLLM/GB10上での最適化状況だと思う。

Gemma 4 NVFP4は速くはない。しかし、当時のQwen経路よりもtool-heavyなAtlas用途では安定していた。ここは重要だった。

Qwen3.6 BF16 + vLLM: 最後に状況が変わった

ここまで試した段階では、「速いQwen」と「遅いが安定するGemma 4」という見え方だった。

ただ、後から重要な見落としがわかった。最初に使っていたQwen3.6のGGUF経路は、実用上はtext-onlyだった。しかし、Qwen/Qwen3.6-35B-A3B自体はmultimodalモデルで、Hugging FaceのモデルをvLLMで直接起動すると画像の経路も立ち上がる。

つまり、問題は「Qwen3.6が画像を読めない」ではなく、「起動方法がmultimodal経路に乗っていなかった」ことだった。

最終的に、GX10上ではこういう構成にした。

model: Qwen/Qwen3.6-35B-A3B
runtime: vLLM
served model: gx10-qwen
endpoint: http://<gx10-tailnet-ip>:18081/v1
context: 131072
max_num_batched_tokens: 8192
max_num_seqs: 4
gpu_memory_utilization: 0.75
input: text + image
tool parser: qwen3_coder
reasoning parser: qwen3

この構成では、直接APIでテキスト、画像、OpenAI互換tool callが通った。さらにOpenClaw Gateway経由でも、テキスト入力と画像入力の確認が通った。テスト画像に書いた文字列も正しく読めた。

速度も、Gemma 4 vLLMとはかなり違った。

prompt Qwen3.6 BF16 vLLM 64K Gemma4 NVFP4 vLLM 64K Qwen/Gemma
jp_short 26.53 tok/s 4.61 tok/s 5.8x
jp_summary 28.59 tok/s 6.65 tok/s 4.3x
python_code 29.11 tok/s 6.63 tok/s 4.4x
mean 28.08 tok/s 5.96 tok/s 4.7x

その後、実運用向けにmax_model_lenを128Kへ広げ、max_num_seqsを4に抑えて再起動した。短い定常ベンチでは平均が28.96 tok/sで、少なくともこの範囲では速度低下は出なかった。

Atlas/OpenClawっぽい小タスクでも、かなり実用的な数字になった。

runtime suite mean wall tok/s tool accuracy
Qwen3.6 BF16 vLLM quality 29.41 -
Qwen3.6 BF16 vLLM tools 21.80 4/4
Qwen3.6 Q4_K_M llama.cpp quality 62.08 -
Qwen3.6 Q4_K_M llama.cpp tools 36.63 4/4
Qwen3.6 BF16 llama.cpp quality 27.41 -
Qwen3.6 BF16 llama.cpp tools 17.96 4/4

Q4のllama.cpp経路はまだ速い。ただしtext-onlyだった。vLLM経路はQ4ほど速くはないが、画像が使えて、OpenClaw Gatewayからも呼べる。

Gemma 4 vLLMと比べると、Qwen3.6 vLLMは体感でもかなり軽い。短い会話や画像付きの確認をOpenClawから投げる用途では、Gemma 4の6 tok/s台はつらく、Qwen3.6の28から29 tok/s台は現実的に使える。

もちろん、これで全部解決ではない。OpenClawの実エージェント経路で複数toolを回し続けるところまでは、まだ慎重に見る必要がある。今回確認できたのは、Gateway経由のtext/image疎通と、直接APIでのtool call構造だ。

OpenClawから見た進歩

以前、Mac Studio上のGemma 4をOpenClawのバックエンドにしようとしたときは、うまく呼べなかった。

それに比べると、GX10ではかなり進んだ。

  • OpenClawからGX10上のモデルを直接呼べる
  • Tailnet経由でOpenClawホストからGX10を見られる
  • gx10/gx10-qwengx10/gx10-gemma4としてモデル登録できた
  • QwenではGateway model.runも通った
  • Gemma 4でもOpenClaw local one-shotは通った
  • Telegram上でもGX10 Gemma 4から自然な応答が返るところまで見えた
  • Qwen3.6 vLLMではGateway経由のテキストと画像入力が通った

ただし、OpenClawからAtlasの中身を読む話はまだ別問題だ。

Atlas Chat APIを直接叩くと、search_hybrid -> get_fileのループで正しく答えられる。一方、OpenClawの通常エージェント経路で「Atlasを見て」と言っても、Atlas Chat APIに入らず、OpenClaw側のmemory/wiki検索に流れることがある。

つまり現在の課題はこう。

OpenClaw -> GX10 LLM
  これはできた

OpenClaw -> GX10 LLM -> 画像を読む
  Qwen3.6 vLLMでできた

OpenClaw -> Atlas Chat API -> GX10 LLM -> Atlas tools
  ここはまだきれいにつながっていない

これはモデル性能だけの問題ではない。アプリ側のtool経路、provider設定、どのAPIをどこから呼ぶかの設計も含めた問題になる。

今日の実用判断

一日試した結果、今の実用判断はこう。

Qwen3.6 vLLMを使いたい場面

Qwenは速い。特にQwen3.6 Q4やSGLang FP8の速度は魅力的だった。

ただし、いま第一候補に見えているのはQ4のtext-only経路ではなく、Qwen3.6 BF16をvLLMで直接起動する経路だ。Q4よりは遅いが、画像が使えて、Gemma 4 vLLMよりかなり速い。

向いているのは、たぶんこういう用途だ。

  • 短い対話
  • 軽い分類
  • 単純なtool選択
  • 速度優先のOpenClaw実験
  • 画像つきの軽い確認
  • Gemma 4では遅すぎる日常的な問い合わせ

Gemma 4を残したい場面

Gemma 4は遅いが、回答が比較的締まっていて、Atlasのようなtool-heavy用途では安定していた。

向いているのは、たぶんこういう用途だ。

  • Atlas Chat
  • 根拠付き回答
  • 安全寄りの判断
  • Qwenがtool callを崩す場面
  • Qwen3.6 vLLMでまだ実運用確認が足りない場面

まだ決めきれていない場面

AtlasのバッチAI処理は悩ましい。

Gemma 4なら動くが、大きめの文書の再要約が遅い。Qwen3.6 vLLMなら速くなる可能性が高いが、Atlasの実バッチ処理で同じ安定性が出るかはまだ別途確認したい。

今後は、Atlasの処理を分けるのが良さそうだ。

軽い分類・タグ付け:
  Qwen3.6 vLLM

根拠付き回答・画像・複雑な更新:
  Qwen3.6 vLLMを第一候補にしつつ、Gemma 4をfallbackに残す

最終判断や危険な操作:
  より強いモデルや人間の確認に戻す

ローカルLLMは「全部を置き換えるもの」ではなく、作業の種類によって使い分ける道具に近い。

まとめ

GX10は、Gemma 4ではMac Studioより遅かった。でもQwenでは速かった。画像対応もできた。OpenClawからも呼べるようになった。Atlasにも一部つながった。

その一方で、tool callが崩れたり、OpenClawの表示経路にハマったり、Atlasのバッチ処理が重かったりした。

最後にQwen3.6 vLLMで、速度と画像対応の両方がかなり現実的になった。とはいえ、これで勝ちモデルが決まったというより、ようやく実用評価のスタートラインに立ったという感覚が近い。

ローカルAI専用機の性能は、GPUスペックだけでは決まらない。

モデル、量子化、runtime、tool calling、画像対応、context長、そして実アプリのエージェント経路まで含めて、ようやく評価できる。

今回のGX10実験で一番面白かったのは、起動経路ひとつで評価が反転するところだった。

次は、このQwen3.6をNVFP4版に差し替えて、GX10のBlackwell世代らしい4bit実行がどこまで効くのかを見る。