Loose-Info.com
Last Update 2026/07/10
TOP - 各種テスト - LLM - ローカルLLMの実測値比較 - コーディング(設定用パラメータ比較) - Devstral 2

低スペック寄りの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を使用しない ```

モデル詳細

Model architecture mistral3 parameters 125.0B context length 262144 embedding length 12288 quantization Q4_K_M Capabilities completion tools Parameters temperature 0.15

Devstral 2 [実測結果一覧へ]

(1) temperature=0.15; top_p=---; top_k=--
(2) temperature=0.15; top_p=0.7; top_k=--
(3) temperature=0.15; top_p=0.5; top_k=--
(4) temperature=0.15; top_p=0.4; top_k=--
(5) temperature=0.15; top_p=0.7; top_k=32
(6) temperature=0.15; top_p=0.7; top_k=16
(7) temperature=0.10; top_p=0.7; top_k=--

(1) temperature=0.15; top_p=---; top_k=--

2026-07-09 total duration: 16m9.021046757s load duration: 108.400131ms prompt eval count: 726 token(s) prompt eval duration: 15.269495195s prompt eval rate: 47.55 tokens/s eval count: 567 token(s) eval duration: 15m53.42644224s eval rate: 0.59 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 生成文字列長の算定(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りでバッファに書き込み バッファへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を4種類の引数の組み合わせで呼び出してテスト実行 (1) 整数1 < 整数2 (2) 整数1 < 整数2 ただし 整数1が負数 (3) 整数1 == 整数2 (4) 整数1 > 整数2 (5) 整数1 == 整数2 ただし 整数1、整数2がともに0 (注) 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/cczJy20t.o: in function `main': sample_test.c:(.text+0x28d): multiple definition of `main'; /tmp/ccTDxrPu.o:sample_code.c:(.text+0xe7): 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 Invalid range or memory allocation failed $ ./sample_test All tests passed successfully.

(2) temperature=0.15; top_p=0.7; top_k=--

2026-07-09 total duration: 15m19.99863567s load duration: 158.352683ms prompt eval count: 726 token(s) prompt eval duration: 16.51858755s prompt eval rate: 43.95 tokens/s eval count: 530 token(s) eval duration: 15m3.11187923s eval rate: 0.59 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・関数戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を3種類の引数の組み合わせで呼び出してテスト実行 (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_code.c sample_test.c /bin/ld: /tmp/ccCPObUu.o: in function `main': sample_test.c:(.text+0x1fd): multiple definition of `main'; /tmp/cc8ZSPCO.o:sample_code.c:(.text+0xea): 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 Invalid range or memory allocation failed $ ./sample_test All tests passed successfully.

(3) temperature=0.15; top_p=0.5; top_k=--

2026-07-09 total duration: 15m51.46295394s load duration: 99.333296ms prompt eval count: 729 token(s) prompt eval duration: 6.687428075s prompt eval rate: 109.01 tokens/s eval count: 567 token(s) eval duration: 15m44.528284533s eval rate: 0.60 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・関数戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を3種類の引数の組み合わせで呼び出してテスト実行 (1) 整数1 < 整数2 (2) 整数1 < 整数2 ただし 整数1が負数 (3) 整数1 == 整数2 (4) 整数1 > 整数2 (5) 整数1 == 整数2 ただし 整数1、整数2がともに0 (注) 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/ccVREfDT.o: in function `main': sample_test.c:(.text+0x28d): multiple definition of `main'; /tmp/ccz45vjd.o:sample_code.c:(.text+0xea): 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 Invalid range or memory allocation failed $ ./sample_test All tests passed successfully.

(4) temperature=0.15; top_p=0.4; top_k=--

2026-07-09 total duration: 15m8.889332212s load duration: 82.062437ms prompt eval count: 806 token(s) prompt eval duration: 6.657283404s prompt eval rate: 121.07 tokens/s eval count: 548 token(s) eval duration: 15m2.007779722s eval rate: 0.61 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルのオールマン指定を無視 ・関数戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 文字列生成ではなく出力 ・main() 引数個数のチェック(エラー処理有) 文字列出力関数の呼び出し ・テストコードを別途生成 テスト対象関数の宣言無し main()を伴うテストコード 標準出力のファイルへの再割り当て後、出力されたファイル内文字列をチェック 文字列生成関数を3種類の引数の組み合わせで呼び出してテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし 整数1が負数 (注) 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 sample_test.c: In function ‘test_generate_sequence’: sample_test.c:9:5: warning: implicit declaration of function ‘generate_sequence’; did you mean ‘test_generate_sequence’? [-Wimplicit-function-declaration] 9 | generate_sequence(1, 5); | ^~~~~~~~~~~~~~~~~ | test_generate_sequence sample_test.c:17:9: warning: implicit declaration of function ‘strcmp’ [-Wimplicit-function-declaration] 17 | if (strcmp(buffer, "1 2 3 4 5 \n") == 0) { | ^~~~~~ sample_test.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘strcmp’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | /bin/ld: /tmp/ccWyXIdK.o: in function `main': sample_test.c:(.text+0x2e0): multiple definition of `main'; /tmp/cczVyyH8.o:sample_code.c:(.text+0x48): first defined here collect2: error: ld returned 1 exit status $ vi sample_code.c ← main()関数重複エラー解消のため条件付きコンパイル用の#ifndefマクロを追加 $ vi sample_test.c ← テスト対象関数の宣言を追加 $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c sample_test.c: In function ‘test_generate_sequence’: sample_test.c:19:9: warning: implicit declaration of function ‘strcmp’ [-Wimplicit-function-declaration] 19 | if (strcmp(buffer, "1 2 3 4 5 \n") == 0) { | ^~~~~~ sample_test.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘strcmp’ 2 | #include <stdlib.h> +++ |+#include <string.h> 3 | $ ./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 1: PASSED Test 2: PASSED Test 3: PASSED

(5) temperature=0.15; top_p=0.7; top_k=32

2026-07-10 total duration: 15m54.695628714s load duration: 85.497878ms prompt eval count: 726 token(s) prompt eval duration: 15.001924268s prompt eval rate: 48.39 tokens/s eval count: 568 token(s) eval duration: 15m39.404721585s eval rate: 0.60 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・関数戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を3種類の引数の組み合わせで呼び出してテスト実行 (1) 整数1 < 整数2 (2) 整数1 < 整数2 ただし 整数1が負数 (3) 整数1 == 整数2 (4) 整数1 > 整数2 (5) 整数1 == 整数2 ただし 整数1、整数2がともに0 (注) 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/ccn549FW.o: in function `main': sample_test.c:(.text+0x28d): multiple definition of `main'; /tmp/ccVMM60i.o:sample_code.c:(.text+0xe7): 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 Invalid range or memory allocation failed $ ./sample_test All tests passed successfully.

(6) temperature=0.15; top_p=0.7; top_k=16

2026-07-10 total duration: 15m29.068850032s load duration: 95.90737ms prompt eval count: 726 token(s) prompt eval duration: 1.655079097s prompt eval rate: 438.65 tokens/s eval count: 560 token(s) eval duration: 15m27.181403029s eval rate: 0.60 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・関数戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を3種類の引数の組み合わせで呼び出してテスト実行 (1) 整数1 < 整数2 (2) 整数1 < 整数2 ただし 整数1が負数 (3) 整数1 == 整数2 (4) 整数1 > 整数2 (5) 整数1 == 整数2 ただし 整数1、整数2がともに0 (注) 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/cc0sM7Ar.o: in function `main': sample_test.c:(.text+0x28d): multiple definition of `main'; /tmp/ccS0aPYX.o:sample_code.c:(.text+0xea): 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 Invalid range or memory allocation failed $ ./sample_test All tests passed successfully.

(7) temperature=0.10; top_p=0.7; top_k=--

2026-07-10 total duration: 15m42.67160487s load duration: 77.676787ms prompt eval count: 726 token(s) prompt eval duration: 1.630774529s prompt eval rate: 445.19 tokens/s eval count: 568 token(s) eval duration: 15m40.810586588s eval rate: 0.60 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・関数戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を3種類の引数の組み合わせで呼び出してテスト実行 (1) 整数1 < 整数2 (2) 整数1 < 整数2 ただし 整数1が負数 (3) 整数1 == 整数2 (4) 整数1 > 整数2 (5) 整数1 == 整数2 ただし 整数1、整数2がともに0 (注) 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/ccDEFobA.o: in function `main': sample_test.c:(.text+0x28d): multiple definition of `main'; /tmp/ccGVhGPU.o:sample_code.c:(.text+0xe7): 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 Invalid range or memory allocation failed $ ./sample_test All tests passed successfully.