ryugyosoft commited on
Commit
5c48e14
·
verified ·
1 Parent(s): ca9925f

README: add power efficiency and temperature section (Qwen3.5-9B, Lunar Lake)

Browse files
Files changed (1) hide show
  1. README.md +40 -0
README.md CHANGED
@@ -24,6 +24,9 @@ LLM を **Intel NPU だけで** 動かす小さなエンジンです。MoE(専
24
  llama.cpp と GGUF の関係と同じく、エンジンとモデルは別々にダウンロードします。エンジンは一つ、コマンドも一つで、
25
  変換済みのモデルならどれでも動きます。
26
 
 
 
 
27
  ## インストール(コマンドを 1 行貼るだけ)
28
 
29
  Intel Core Ultra(NPU 付き)の PC なら、次の 1 行で入ります(詳しい条件は下の「必要なもの」)。
@@ -214,6 +217,43 @@ KV キャッシュは INT8 で、会話が実際に使った長さの分だけ
214
  | `setup.*`、`install.*`、`find_python.bat` | インストーラー(Python の検出と winget) |
215
  | `check_ref.py`、`check_vision.py`、`test_*.py`、`probe_segments.py`、`prof_*.py`、`mem_*.py`、`bench_*.py` | 元の HF モデルとの比較、生成・画像・複数ターンの検証、区間ごとの NPU と CPU の比較、速度・メモリ計測 |
216
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
217
  ## 注意点と制限
218
 
219
  - コンテキスト長の既定は 32K トークンで、モデルの最大(Qwen3.5/3.6 は 262K、Gemma 4 E4B は 128K)まで設定できます。
 
24
  llama.cpp と GGUF の関係と同じく、エンジンとモデルは別々にダウンロードします。エンジンは一つ、コマンドも一つで、
25
  変換済みのモデルならどれでも動きます。
26
 
27
+ 低電力の NPU で動かすので、ファンが低回転のままでも静かに LLM を使えます。Lunar Lake で計測したところ、1 トークンあたりの電力は
28
+ iGPU(llama.cpp)より少なく、CPU の約 4 割でした。詳しい数字と測り方は [電力効率と温度](#電力効率と温度) にあります。
29
+
30
  ## インストール(コマンドを 1 行貼るだけ)
31
 
32
  Intel Core Ultra(NPU 付き)の PC なら、次の 1 行で入ります(詳しい条件は下の「必要なもの」)。
 
217
  | `setup.*`、`install.*`、`find_python.bat` | インストーラー(Python の検出と winget) |
218
  | `check_ref.py`、`check_vision.py`、`test_*.py`、`probe_segments.py`、`prof_*.py`、`mem_*.py`、`bench_*.py` | 元の HF モデルとの比較、生成・画像・複数ターンの検証、区間ごとの NPU と CPU の比較、速度・メモリ計測 |
219
 
220
+ ## 電力効率と温度
221
+
222
+ 同じ PC(LattePanda Mu Ultra、Core Ultra 5 226V=Lunar Lake)で、Qwen3.5-9B の生成中のパッケージ電力と温度を、NPU・iGPU・CPU で比べました。
223
+ 日本語の長文生成(768 トークン、temperature 0)を各 3 回測った平均です。
224
+
225
+ | デバイス | 実行環境 | 生成速度 | パッケージ電力 | パッケージ温度(平均 / 最大) | 1 トークンあたり | 同(アイドル分を引いた値) |
226
+ |---|---|---|---|---|---|---|
227
+ | **NPU** | onw(Qwen3.5-9B-onw、INT4、5.3 GB) | 7.3 tok/s | **12.0 W** | 52 / **67 ℃** | **1.66 J** | **1.27 J** |
228
+ | iGPU(Arc) | llama.cpp SYCL(Q4_K_M、6.2 GB) | **12.6 tok/s** | 23.5 W | 66 / 83 ℃ | 1.91 J | 1.67 J |
229
+ | CPU | llama.cpp(Q4_K_M、6.2 GB) | 5.7 tok/s | 22.3 W | 93 / 96 ℃ | 3.99 J | 3.47 J |
230
+
231
+ アイドル時のパッケージ電力は約 2.9 W、温度は約 42〜46 ℃ です。
232
+
233
+ 1 万トークンを生成したとき(上の平均値からの計算):
234
+
235
+ | デバイス | かかる時間 | 消費エネルギー | 同(アイドル分を引いた値) |
236
+ |---|---|---|---|
237
+ | **NPU** | 約 23 分 | **4.6 Wh** | 3.5 Wh |
238
+ | iGPU | 約 13 分 | 5.3 Wh | 4.6 Wh |
239
+ | CPU | 約 30 分 | 11.1 Wh | 9.6 Wh |
240
+
241
+ NPU は CPU の約 4 割、iGPU より約 13% 少ないエネルギーで済みます。生成中の電力は 12 W で iGPU の約半分、最大温度は 67 ℃ で、ファンも低回転のまま動かせました(ファンの回転数は測れていないため、目視・体感の観察です)。
242
+ 1 万トークンの値は 768 トークンの測定からの計算で、実測ではありません。長く回すと、熱で CPU の電力が下がって遅くなり、時間が延びることがあります。
243
+
244
+
245
+ - 1 トークンあたりの電力は、NPU が最も少なく、iGPU より 13〜24% 少なく、CPU の約 4 割以下です。
246
+ - 速さは iGPU が最も速く、NPU の約 1.7 倍です。ただし電力は約 2 倍かかります。
247
+ - NPU は最大でも 67 ℃ に収まります。iGPU は 83 ℃、CPU は 96 ℃ まで上がりました。
248
+
249
+ 測り方と注意:
250
+ - 電力は Linux の RAPL(`intel-rapl:0`、package-0)の電力量を 0.5 秒ごとに読んだものです。SoC(CPU・iGPU・NPU)だけの値で、DRAM(約 0.4〜0.8 W)や PC 全体は含みません。温度は `x86_pkg_temp` です。
251
+ - 測るのは生成の区間だけで、モデルの読み込みは除いています。毎回、温度が下がるのを待ってからアイドル電力を 30 秒測りました。デバイスの順番による偏りが出ないよう、NPU、iGPU、CPU を 3 周しています。
252
+ - ファン回転数は、この PC では CPU クーラーの値を OS から読めないため、測っていません。NPU の生成中、ファンは止まらず低回転のままでした(観察)。
253
+ - onw と llama.cpp ではエンジンが違い、重みの量子化も同一ではありません(onw は独自の INT4、llama.cpp は Q4_K_M)。モデルと実行環境をまとめた比較として読んでください。
254
+ - ばらつき:NPU と CPU は 3 回でほぼ揃いました(NPU の 1 トークンあたり 1.65〜1.67 J)。iGPU は生成速度が 10.9〜13.5 tok/s と回ごとに差があり、1 トークンあたり 1.84〜2.05 J でした。
255
+ - 別の PC、別のプロンプト、別の冷却では値が変わります。
256
+
257
  ## 注意点と制限
258
 
259
  - コンテキスト長の既定は 32K トークンで、モデルの最大(Qwen3.5/3.6 は 262K、Gemma 4 E4B は 128K)まで設定できます。