前回のマシンを更新したのでローカルLLMを軽くベンチマークしてみたでは生成速度だけを見れば十分実用ラインということを確認したが、品質が悪い問題があった。
そこで4月に出て、そこそこ評判を聞くQwen3.6がいかほどのものかというのを軽く試し、ついでにベンチマークもした。
CPU推論とGPU推論が分かれているが、これは初回ベンチマーク時にCUDAのDLLを入れ忘れていたため、GPU推論はDLLを入れてリトライした時の数値、CPU推論はDLLがない状態の数値で書いている。
| 種別 |
デバイス |
| CPU |
Intel Core Ultra 7 265F |
| GPU |
GeForce RTX 5070 Ti |
| MEM |
Crucial CT2K16G56C46U5(DDR5-5600 16GB) * 4 |
| M/B |
ASRock Z890 Pro RS |
実行環境はWindows 11。今回はllama.cppをメインで使っている。
| Env |
Ver |
| llama.cpp |
9196 |
| Ollama |
0.24.0 |
| Open WebUI |
0.9.5 |
Qwen3.6-35B-A3B-UD-Q4_K_Mを使用。
CPU推論時に出した内容。スクショが面倒なのでGPU推論時のはなし

生成速度
| 指標 |
値 |
| cache_n |
0 |
| prompt_n |
14 |
| prompt_ms |
203.404 |
| prompt_per_token_ms |
14.528857142857143 |
| prompt_per_second |
68.82853827849993 |
| predicted_n |
1553 |
| predicted_ms |
94147.172 |
| predicted_per_token_ms |
60.622776561493886 |
| predicted_per_second |
16.495450335990974 |
| input_tokens |
14 |
| output_tokens |
1553 |
| total_tokens |
1567 |
リソース消費

生成速度
| 指標 |
値 |
| cache_n |
0 |
| prompt_n |
14 |
| prompt_ms |
103.612 |
| prompt_per_token_ms |
7.400857142857142 |
| prompt_per_second |
135.11948422962593 |
| predicted_n |
1554 |
| predicted_ms |
26037.862 |
| predicted_per_token_ms |
16.755380952380953 |
| predicted_per_second |
59.68231953913881 |
| input_tokens |
14 |
| output_tokens |
1554 |
| total_tokens |
1568 |
リソース消費

Qwen3.6-35B-A3B-UD-Q5_K_Mを使用。
CPU推論時に出した内容。スクショが面倒なのでGPU推論時のはなし

生成速度
| 指標 |
値 |
| cache_n |
0 |
| prompt_n |
14 |
| prompt_ms |
228.782 |
| prompt_per_token_ms |
16.34157142857143 |
| prompt_per_second |
61.19362537262546 |
| predicted_n |
1816 |
| predicted_ms |
119116.155 |
| predicted_per_token_ms |
65.59259636563877 |
| predicted_per_second |
15.24562306431063 |
| input_tokens |
14 |
| output_tokens |
1816 |
| total_tokens |
1830 |
リソース消費

生成速度
| 指標 |
値 |
| cache_n |
0 |
| prompt_n |
14 |
| prompt_ms |
156.28 |
| prompt_per_token_ms |
11.162857142857144 |
| prompt_per_second |
89.58280010238033 |
| predicted_n |
1575 |
| predicted_ms |
30901.59 |
| predicted_per_token_ms |
19.620057142857142 |
| predicted_per_second |
50.96825114824189 |
| input_tokens |
14 |
| output_tokens |
1575 |
| total_tokens |
1589 |
リソース消費

Qwen3.6-35B-A3B-UD-Q8_K_XLを使用。
CPU推論時に出した内容。スクショが面倒なのでGPU推論時のはなし

生成速度
| 指標 |
値 |
| cache_n |
0 |
| prompt_n |
14 |
| prompt_ms |
262.85 |
| prompt_per_token_ms |
18.775000000000002 |
| prompt_per_second |
53.262316910785614 |
| predicted_n |
1704 |
| predicted_ms |
119261.701 |
| predicted_per_token_ms |
69.98926115023474 |
| predicted_per_second |
14.287906223977135 |
| input_tokens |
14 |
| output_tokens |
1704 |
| total_tokens |
1718 |
リソース消費

生成速度
| 指標 |
値 |
| cache_n |
0 |
| prompt_n |
14 |
| prompt_ms |
190.329 |
| prompt_per_token_ms |
13.594928571428571 |
| prompt_per_second |
73.55684104892055 |
| predicted_n |
1829 |
| predicted_ms |
51098.747 |
| predicted_per_token_ms |
27.93807927829415 |
| predicted_per_second |
35.7934412755757 |
| input_tokens |
14 |
| output_tokens |
1829 |
| total_tokens |
1843 |
リソース消費

qwen3.6:35bを使用
CPU推論時に出した内容。スクショが面倒なのでGPU推論時のはなし

生成速度
| 指標 |
値 |
| input_tokens |
14 |
| output_tokens |
1364 |
| total_tokens |
1378 |
| prompt_tokens |
14 |
| completion_tokens |
1364 |
| response_token/s |
20.84 |
| prompt_token/s |
5.84 |
| total_duration |
126876747900 |
| load_duration |
58586625500 |
| prompt_eval_count |
14 |
| prompt_eval_duration |
2398703000 |
| eval_count |
1364 |
| eval_duration |
65458229300 |
| approximate_total |
"0h2m6s" |
リソース消費

| 指標 |
Q4_K_M |
Q5_K_M |
Q8_K_XL |
| 入力tok/s |
68.82 |
61.19 |
53.26 |
| 出力tok/s |
16.49 |
15.24 |
14.28 |
| 指標 |
Q4_K_M |
Q5_K_M |
Q8_K_XL |
| 入力tok/s |
135.11 |
89.58 |
73.55 |
| 出力tok/s |
59.68 |
50.96 |
35.79 |
| 指標 |
Ollama |
| 入力tok/s |
5.84 |
| 出力tok/s |
20.84 |
上の表の指標については明確な根拠を見つけることができなかったため、指標の名前から推測して、おそらくこの指標はこれだろうというので割り当てて書いている。
何故というとAPIレスポンスの仕様書が何処にあるかわからず、Claude Opus 4.7に聞いてもデッドリンクになった仕様書を提示され、後はソースコードを読めと言われたため、わからないのだ。ソースコードなんか一々読んでられない。しかも嘘を教えられたため、自力で解釈した。
さて、処理時間についてだが、これはOllamaよりllama.cppのほうが圧倒的に早いことが判明した。また、ついでに言うとOllamaはどのモデルを実行してるのかが不明なため、単純比較ができない。
またリソース消費を見る感じ、OllamaはCPU・GPU共に遊ばせていたので、これが処理が遅い原因になっていた可能性がある。llama.cppはマニュアルでそのあたりをうまくやっているので早かったのだろう。
生成品質としては前回とそこまで変わらない気がしたが、質問を一回投げているだけなので、正直なところちゃんとした品質を確かめるには叩きまくる必要はあると思う。面倒なのでそこまではしてない。
一般的なマシンで動くローカルLLMは、まだそれなりという感じの次元だが、Qwen3と比べると3.6は気持ち品質が上がったように感じた。とはいってもLLMはコンテキストがある状態で質問したり、コーディングさせたりしないと真価がわからないので、今回のように「神戸市について教えて」と聞くだけではあまり意味のある結果にはならないので、あくまで参考値くらいだろう。
取り敢えずまともなモデルはOpenAIもQwenもクラウドにあって、配布されているモデルは劣化版というのが分かったのが今日の収穫だったように思う。
Qwen公式の比較表を見る限り、Qwen3.6-35B-A3BはClaude Sonnet 4.5よりは賢いようだ。ただSonnetは個人的にはもう使っておらず、レートリミットがない環境で使っているのもあり、もっぱらOpus 4.7しか使っていないので、Sonnet 4.5を超えたところで微妙な感じは否めない。4.5は個人的にERPをするときにOpus 4.7, Sonnet 4.6, Opus 4.6でも返事をしなくなったときに4.5を叩き、その次のターンでOpus 4.6→Sonnet 4.6→Opus 4.7という流れで回帰させるのに使うことが多い。これは何をしているかというとSonnet 4.5の検閲が緩いのを逆手にとって、上位バージョンを騙すためのコンテキストを書かせているわけだ。
Sonnet 4.5が出た時は割と重宝していた記憶もあるのだが、Opus 4.7が優秀なので、もうまともな用途ではOpus 4.7以外全く使わなくなった。Opus 4.6も悪くはないと思うので、Opus 4.6くらいまでローカルLLMが進歩してくれたら助かるところである。
ひとまず今回の収穫はQwen3.6-35B-A3Bという昨今注目されているモデルが、特にメモリの増設なしでも動いた上に、VRAMを使わずRAMだけで実用速度で走らせることができたことだ。
クラウドLLMは高いのでローカルLLMで解決できるようになれば、それに越したことはない。
余談だがQwen3.6-35B-A3Bは検閲モデルだがQwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressiveという無検閲モデルがあり、ERPが機能することを軽く確認している。弾かれないこと程度しか確認してないので品質は謎いが、テストで叩いた感じはそこそこの内容を出してくれたと思う。少なくともGPT-4やGrokよりはよいと思うので、お金を節約したい人にはオススメかもしれない。