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

低スペック寄りの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 gptoss parameters 116.8B context length 131072 embedding length 2880 quantization MXFP4 Capabilities completion tools thinking Parameters temperature 1

gpt-oss [実測結果一覧へ]

(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-19 total duration: 2m42.069118726s load duration: 134.636279ms prompt eval count: 280 token(s) prompt eval duration: 3.549670268s prompt eval rate: 78.88 tokens/s eval count: 1318 token(s) eval duration: 2m37.82112208s eval rate: 8.35 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 引数値のチェック(エラー判定有) start > end の場合はNULL文字のみのメモリへのポインタを返す 文字列長に応じたメモリの確保(エラー処理有) インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・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 -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccUsvrmX.o: in function `main': sample_test.c:(.text+0x260): multiple definition of `main'; /tmp/ccgdXDTT.o:sample_code.c:(.text+0x134): 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 $ ./sample_test All tests passed.

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

2026-07-19 total duration: 2m49.212790055s load duration: 122.40437ms prompt eval count: 280 token(s) prompt eval duration: 143.196755ms prompt eval rate: 1955.35 tokens/s eval count: 1402 token(s) eval duration: 2m48.434307672s eval rate: 8.32 tokens/s

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -o sample_test sample_code.c sample_test.c sample_test.c: In function ‘main’: sample_test.c:42:46: error: ‘INT_MAX’ undeclared (first use in this function) 42 | char *result = generate_range_string(INT_MAX, INT_MAX); | ^~~~~~~ sample_test.c:5:1: note: ‘INT_MAX’ is defined in header ‘<limits.h>’; did you forget to ‘#include <limits.h>’? 4 | #include <assert.h> +++ |+#include <limits.h> 5 | sample_test.c:42:46: note: each undeclared identifier is reported only once for each function it appears in 42 | char *result = generate_range_string(INT_MAX, INT_MAX); | ^~~~~~~ sample_test.c:51:46: error: ‘INT_MIN’ undeclared (first use in this function) 51 | char *result = generate_range_string(INT_MIN, INT_MIN); | ^~~~~~~ sample_test.c:51:46: note: ‘INT_MIN’ is defined in header ‘<limits.h>’; did you forget to ‘#include <limits.h>’? $ vi sample_test.c ← <limits.h>を追加 $ gcc -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccgVL7KO.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/ccf3pTIT.o:sample_code.c:(.text+0x174): 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 5 4 3 2 1 $ ./sample_test All tests passed.

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

2026-07-19 total duration: 3m0.442817989s load duration: 17.10215517s prompt eval count: 280 token(s) prompt eval duration: 4.909694248s prompt eval rate: 57.03 tokens/s eval count: 1295 token(s) eval duration: 2m37.712317484s eval rate: 8.21 tokens/s

コード生成結果の概要

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

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccpVYUF8.o: in function `main': sample_test.c:(.text+0x260): multiple definition of `main'; /tmp/ccYkwfCx.o:sample_code.c:(.text+0x150): 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 $ ./sample_test All tests passed.

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

2026-07-19 total duration: 2m53.79263286s load duration: 125.18869ms prompt eval count: 280 token(s) prompt eval duration: 128.857493ms prompt eval rate: 2172.94 tokens/s eval count: 1424 token(s) eval duration: 2m52.972787341s eval rate: 8.23 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 start > end の場合はNULLを返す 初期メモリとして所定のバイト数確保し、必要に応じて拡張する インクリメント+空白区切りで文字列用メモリに書き込み 文字列用メモリへのポインタを返す ・main() 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) 生成文字列の標準出力への出力 文字列用メモリの解放 #ifndefによりテストコードとのmain()の重複を解消 ・テストコードを別途生成 main()の重複解消マクロの定義 sample_code.cのインクルード テスト対象関数の宣言 main()を伴うテストコード 文字列生成関数を4種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (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 $ ./sample_code -3 3 -3 -2 $ ./sample_code 1 1 1 $ ./sample_code 5 1 Failed to generate output string. $ ./sample_test sample_test: sample_test.c:15: main: Assertion `strcmp(result, "1 2 3 4 5") == 0' failed. Aborted (core dumped) $ vi sample_code.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 Failed to generate output string. ← 文字列がNULLの場合はエラーで終了 $ ./sample_test sample_test: sample_test.c:32: main: Assertion `result != NULL' failed. Aborted (core dumped) ← テストコードは文字列がNULLの場合のassert()による終了

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

2026-07-19 total duration: 1m59.579839453s load duration: 127.973072ms prompt eval count: 280 token(s) prompt eval duration: 125.340203ms prompt eval rate: 2233.92 tokens/s eval count: 994 token(s) eval duration: 1m58.970670589s eval rate: 8.36 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 文字列生成ではなく出力 ・main() 引数個数のチェック(エラー処理有) 引数内容のチェック(エラー処理有) 文字列生成関数の呼び出し(エラー処理有) ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 標準出力のファイルへの再割り当て後、出力されたファイル内文字列をチェック 文字列生成関数を4種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数は共に2桁 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/cccyW2Lk.o: in function `main': sample_test.c:(.text+0x180): multiple definition of `main'; /tmp/ccQ1LScG.o:sample_code.c:(.text+0x48): 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 $ ./sample_test

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

2026-07-19 total duration: 2m2.614756005s load duration: 133.44114ms prompt eval count: 280 token(s) prompt eval duration: 128.612894ms prompt eval rate: 2177.08 tokens/s eval count: 1015 token(s) eval duration: 2m1.969592272s eval rate: 8.32 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 文字列格納メモリへのポインタは引数渡し インクリメント+空白区切りで文字列用メモリに書き込み ・main() 生成文字列用配列の定義 引数個数のチェック(エラー処理有) 文字列生成関数の呼び出し ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード テスト失敗時はassert()で停止 文字列生成関数を4種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (範囲 1~5) (2) 整数1 == 整数2 (3) 整数1 > 整数2 (4) 整数1 < 整数2 (範囲 0~20) (5) 整数1 < 整数2 (バッファオーバーフローとなる場合) (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccA0gKtE.o: in function `main': sample_test.c:(.text+0x0): multiple definition of `main'; /tmp/cc4EkX2J.o:sample_code.c:(.text+0xc8): 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 $ ./sample_test sample_test: sample_test.c:23: main: Assertion `strcmp(buf, "") == 0' failed. Aborted (core dumped) $ vi sample_test.c ← テストが失敗する部分をコメントアウト $ gcc -D TEST_MAIN -Wall -o sample_test sample_code.c sample_test.c $ ./sample_test All tests passed. ← 整数1 > 整数2 以外のパターンはテスト通過

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

2026-07-19 total duration: 1m56.821551386s load duration: 142.266824ms prompt eval count: 280 token(s) prompt eval duration: 130.840202ms prompt eval rate: 2140.02 tokens/s eval count: 971 token(s) eval duration: 1m56.170732258s eval rate: 8.36 tokens/s

コード生成結果の概要

・C言語による生成 ・コード以外の出力無し ・コードの記述スタイルをオールマンで生成 ・戻り値は stdlib.h の EXIT_*** を使用 ・文字列生成関数 文字列生成ではなく出力 ・main() 引数個数のチェック(エラー処理有) 引数内容のチェック(エラー処理有) 文字列生成関数の呼び出し ・テストコードを別途生成 テスト対象関数の宣言 main()を伴うテストコード 標準出力のファイルへの再割り当て後、出力されたファイル内文字列をチェック 文字列生成関数を4種類の引数の組み合わせでテスト実行 (1) 整数1 < 整数2 (範囲 1~5) (2) 整数1 == 整数2 (3) 整数1 < 整数2 ただし、整数1が負数 (注) LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。

生成コードの実行結果

sample_code.c : 検証用プロンプトにて生成されたコード
sample_test.c : 生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c $ gcc -o sample_test sample_code.c sample_test.c /bin/ld: /tmp/ccrsMCUp.o: in function `main': sample_test.c:(.text+0x17f): multiple definition of `main'; /tmp/ccylALZk.o:sample_code.c:(.text+0x5a): 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: first integer must be less than or equal to second integer. $ ./sample_test