Loose-Info.com
Last Update 2026/05/05
TOP - 各種テスト - LLM - ローカルLLMの実測値比較 - コーディング - Qwen3.6

低スペック寄りのPCでローカルLLMを動作させた際の記録です。
LLM以外の仮想マシンなどが起動され、多少負荷がかかった状態で実行しています。
ベンチマークなどでLLMの性能を評価する内容ではありません。

検証用PC

OS

Debian GNU/Linux 12 (bookworm)

CPU

Intel(R) Core(TM) i5-14400F

GPU

GeForce RTX 3060 12GB

メモリ

DDR4 PC4-25600 32GB × 4

SSD

crucial P310 CT1000P310SSD8-JP


構築環境 : Docker + Ollama (特別な設定などは無い状態)

検証用プロンプト

``` ### 依頼内容 - コード生成 ### 指示 - C言語 - コード以外の出力は不要 - 中括弧スタイルはオールマン - テストコードも生成 - テストコードは別ファイル - 実行用ソースファイル名 : sample_code.c - テスト用ソースファイル名 : sample_test.c - 標準ヘッダ以外は使用しない - 戻り値はEXIT_SUCCESSを使用 - 関数はmain()の前で定義 ### コード仕様(sample_code.c) - コマンドラインから整数2つを取得 - [引数1]から[引数2]までをインクリメントして空白区切りで標準出力に出力 - 出力する文字列はmain()ではなく関数で生成 ### コード仕様(sample_test.c) - unity.hを使用しない ```

Qwen3.6 [実測結果一覧へ]

GPU無し
35b-a3b-q4_K_M(13.85TPS)  
GPU使用
35b-a3b-q4_K_M(19.21TPS)  

35b-a3b-q4_K_M(GPU無し)

Model architecture qwen35moe parameters 36.0B context length 262144 embedding length 2048 quantization Q4_K_M 2026-05-04 【1回目思考停止】 total duration: 8m39.754508778s load duration: 138.072795ms prompt eval count: 195 token(s) prompt eval duration: 3.647059643s prompt eval rate: 53.47 tokens/s eval count: 4072 token(s) eval duration: 8m34.426029101s eval rate: 7.92 tokens/s 追加プロンプト >>> 続けて total duration: 13m19.661533872s load duration: 126.895974ms prompt eval count: 206 token(s) prompt eval duration: 3.765222437s prompt eval rate: 54.71 tokens/s eval count: 6064 token(s) eval duration: 13m13.534697255s eval rate: 7.64 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・標準ヘッダ以外の使用無し ・関数戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 各テストケースに個別の関数を作成 テストケースは5ケース (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし 整数1が負数 (4) 整数1 > 整数2 (5) 整数1 < 整数2 ただし各整数は2桁 (注) 上記概要は、検証用プロンプトを実測回数分実行した際の結果を使用しています。 LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 検証用プロンプトにて生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/cchSwKL2.o: in function `main': sample_test.c:(.text+0x2b9): multiple definition of `main'; /tmp/ccUkijp3.o:sample_code.c:(.text+0x11d): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 Error: Invalid range or memory allocation failed. $ ./sample_test All tests passed.

35b-a3b-q4_K_M(GPU使用)

Model architecture qwen35moe parameters 36.0B context length 262144 embedding length 2048 quantization Q4_K_M 2026-05-04 【1回目思考停止】 total duration: 5m31.006013435s load duration: 148.046012ms prompt eval count: 195 token(s) prompt eval duration: 896.130612ms prompt eval rate: 217.60 tokens/s eval count: 4113 token(s) eval duration: 5m28.47201148s eval rate: 12.52 tokens/s 追加プロンプト >>> 続けて total duration: 7m3.987076307s load duration: 140.415419ms prompt eval count: 206 token(s) prompt eval duration: 904.326293ms prompt eval rate: 227.79 tokens/s eval count: 5276 token(s) eval duration: 7m1.080445203s eval rate: 12.53 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・標準ヘッダ以外の使用無し ・関数戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(空文字列(文字列リテラル)を返すため引数1>引数2の場合に実行停止) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 実行用コードと同一の文字列生成関数定義を記述 main()を伴うテストコード 各テストケースに個別の関数を作成 テストケースは4ケース (1) 整数1 < 整数2 (2) 整数1 < 整数2 ただし 整数1が負数 (3) 整数1 == 整数2 (4) 整数1 > 整数2 (注) 上記概要は、検証用プロンプトを実測回数分実行した際の結果を使用しています。 LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 検証用プロンプトにて生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 free(): invalid pointer Aborted (core dumped) ← 整数1 > 整数2 の場合に空文字列(文字列リテラル)を返すため解放できずにエラー発生 $ ./sample_test test_basic_range passed test_negative_range passed test_single_number passed free(): invalid pointer Aborted (core dumped) $ vi sample_code.c ← 整数1 > 整数2 の場合に空文字列ではなくNULL文字格納メモリへのポインタを返すように修正 $ vi sample_test.c ← 同上 $ gcc -Wall -o sample_code sample_code.c $ gcc -Wall -o sample_test sample_test.c $ ./sample_code 1 5 1 2 3 4 5 $ ./sample_code -3 3 -3 -2 -1 0 1 2 3 $ ./sample_code 1 1 1 $ ./sample_code 5 1 $ ./sample_test test_basic_range passed test_negative_range passed test_single_number passed test_empty_range passed All tests passed.