Last Update 2026/07/05
低スペック寄りのPCでローカルLLMを動作させた際の記録です。
LLM以外の仮想マシンなどが起動され、多少負荷がかかった状態で実行しています。
ベンチマークなどで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を使用しない
```
LFM2.5 [実測結果一覧へ]
GPU無し
8b-a1b-q4_K_M(30.41TPS)
GPU使用
8b-a1b-q4_K_M(170.62TPS)
8b-a1b-q4_K_M(GPU無し)
Model
architecture lfm2moe
parameters 8.5B
context length 128000
embedding length 2048
quantization Q4_K_M
requires 0.30.0
Capabilities
completion
tools
thinking
Parameters
repeat_penalty 1.05
temperature 0.2
top_k 80
2026-07-03
total duration: 1m51.999792227s
load duration: 187.814819ms
prompt eval count: 206 token(s)
prompt eval duration: 1.228665s
prompt eval rate: 167.66 tokens/s
eval count: 3363 token(s)
eval duration: 1m50.58095s
eval rate: 30.41 tokens/s
コード生成結果の概要
・C言語による生成
・コード以外の出力無し
・コードの記述スタイルのオールマン指定を無視
・標準ヘッダ以外の使用無し
・関数戻り値は stdlib.h の EXIT_*** を使用
・文字列生成関数
2つの引数を空白で連結した文字列をバッファに格納する関数
標準出力への出力も無く、戻り値もEXIT_SUCCESSを返すのみ、バッファを利用することも無い
・main()
引数個数のチェックはあるが引数が無い(void)
・テストコードを別途生成
パイプを用いたテストコードを出力しているが、ほぼ実行不能な内容
(注) 上記概要は、検証用プロンプトを実測回数分実行した際の結果を使用しています。
LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。
生成コードの実行結果
sample_code.c : 検証用プロンプトにて生成されたコードsample_test.c : 検証用プロンプトにて生成されたテストコード
$ gcc -Wall -o sample_code sample_code.c
sample_code.c: In function ‘main’:
sample_code.c:15:9: error: ‘argc’ undeclared (first use in this function)
15 | if (argc < 3) {
| ^~~~
sample_code.c:15:9: note: each undeclared identifier is reported only once for each function it appears in
sample_code.c:19:22: error: ‘argv’ undeclared (first use in this function)
19 | int start = atoi(argv[1]);
| ^~~~
$ vi sample_code.c ← エラー解消のため、main()をコマンドライン引数取得を伴う呼び出しに修正
$ gcc -Wall -o sample_code sample_code.c
$ ./sample_code 1 5 ← 標準出力・ファイル出力は一切無し
$ gcc -Wall -o sample_test sample_test.c
sample_test.c: In function ‘testPrintNumbers’:
sample_test.c:11:17: warning: implicit declaration of function ‘fork’ [-Wimplicit-function-declaration]
11 | pid_t pid = fork();
| ^~~~
sample_test.c:14:24: warning: implicit declaration of function ‘dup2’ [-Wimplicit-function-declaration]
14 | int fd_write = dup2(pipes[1][0], STDOUT_FILENO);
| ^~~~
sample_test.c:14:29: error: ‘pipes’ undeclared (first use in this function); did you mean ‘pipefd’?
14 | int fd_write = dup2(pipes[1][0], STDOUT_FILENO);
| ^~~~~
| pipefd
sample_test.c:14:29: note: each undeclared identifier is reported only once for each function it appears in
sample_test.c:14:42: error: ‘STDOUT_FILENO’ undeclared (first use in this function)
14 | int fd_write = dup2(pipes[1][0], STDOUT_FILENO);
| ^~~~~~~~~~~~~
sample_test.c:15:41: error: ‘STDIN_FILENO’ undeclared (first use in this function)
15 | int fd_read = dup2(pipes[1][1], STDIN_FILENO);
| ^~~~~~~~~~~~
sample_test.c:16:9: warning: implicit declaration of function ‘close’; did you mean ‘pclose’? [-Wimplicit-function-declaration]
16 | close(pipes[1][0]);
| ^~~~~
| pclose
sample_test.c:19:9: warning: implicit declaration of function ‘write’; did you mean ‘fwrite’? [-Wimplicit-function-declaration]
19 | write(fd_write, input, strlen(input));
| ^~~~~
| fwrite
sample_test.c:22:9: warning: implicit declaration of function ‘execve’ [-Wimplicit-function-declaration]
22 | execve(argv[0], argv, envp);
| ^~~~~~
sample_test.c:22:16: error: ‘argv’ undeclared (first use in this function)
22 | execve(argv[0], argv, envp);
| ^~~~
sample_test.c:22:31: error: ‘envp’ undeclared (first use in this function)
22 | execve(argv[0], argv, envp);
| ^~~~
sample_test.c:15:13: warning: unused variable ‘fd_read’ [-Wunused-variable]
15 | int fd_read = dup2(pipes[1][1], STDIN_FILENO);
| ^~~~~~~
sample_test.c:27:9: warning: implicit declaration of function ‘waitpid’ [-Wimplicit-function-declaration]
27 | waitpid(pid, NULL, 0);
| ^~~~~~~
sample_test.c:10:9: warning: unused variable ‘pipefd’ [-Wunused-variable]
10 | int pipefd[2];
| ^~~~~~
エラー発生多数であるものの、テスト対象が無出力であるためデバッグは行わない
8b-a1b-q4_K_M(GPU使用)
Model
architecture lfm2moe
parameters 8.5B
context length 128000
embedding length 2048
quantization Q4_K_M
requires 0.30.0
Capabilities
completion
tools
thinking
Parameters
repeat_penalty 1.05
temperature 0.2
top_k 80
2026-07-03
total duration: 10.295751507s
load duration: 102.017817ms
prompt eval count: 207 token(s)
prompt eval duration: 76.197284ms
prompt eval rate: 2716.63 tokens/s
eval count: 1658 token(s)
eval duration: 9.717308375s
eval rate: 170.62 tokens/s
コード生成結果の概要
・C言語による生成
・コード以外の出力無し
・コードの記述スタイルのオールマン指定を無視
・標準ヘッダ以外の使用無し
・関数戻り値は stdlib.h の EXIT_*** を使用
・文字列生成関数
return (char *)sprintf("%d %d", a, b); のみで構成
・main()は生成無し
・テストコードを別途生成
期待文字列 "5 10" と出力を比較するテストコードではあるが、テスト対象関数とともに書き換えレベルの修正が必須
(注) 上記概要は、検証用プロンプトを実測回数分実行した際の結果を使用しています。
LLMの生成結果は毎回一定ではないため、結果によっては上記内容通りではないことが考えられます。
生成コードの実行結果
sample_code.c : 検証用プロンプトにて生成されたコードsample_test.c : 検証用プロンプトにて生成されたテストコード
問題点多数のため実行結果は省略