ローカル LLM の電気代が気になる方へ。
RTX 4070 で Qwen 3.5:9b を回したとき、1,000 トークンの生成に 0.708 Wh を消費しました。GPU 単体の平均は 187.5W。J/token は 2.55 です。26 ¥/kWh で換算すると、1,000 トークンあたり約 0.018 円。1 回の返答で使うであろう 1k〜2k トークンを現実的なコストに置き直す目的で、nvidia-smi に 500 ms 間隔で記録を取らせた記録です。
正直、動かし始めは「ワットなんて最初から表示されてるし、わざわざ測ることでもないだろう」と思っていました。測ってみて、電気代より先に J/token という単位のありがたみに殴られた、という順の記事です。
qwen3.5:9b は、1,500 トークン生成で 187.5W
まず結果を置きます。計測は 2 回。
モデルは qwen3.5:9b (Ollama、temperature 0、think off)。生成トークン数は 1,500。nvidia-smi -lms 500 で GPU の power.draw を記録し、GPU 使用率 20% 以上のサンプル平均を取りました。
| model | tok/s | GPU 平均 | J/token | Wh/1k トークン |
|---|---|---|---|---|
| qwen3.5:9b (run1) | 73.6 | 187.5W | 2.55 | 0.708 |
| qwen3.5:9b (run2) | 74.4 | 183.0W | 2.46 | 0.683 |
| qwen3.5:35b-a3b | 10.2 | 21.6W | — | 無効 |
run1 と run2 の差は 4.5W / 0.025 Wh。平均を取ると、1k トークンの生成で約 0.7 Wh。2.55 J/token です。
RTX 4070 の公称 TDP は 200W なので、187.5W は 93% の負荷に相当します。VRAM 12GB に 9B (Q4_K_M) が綺麗に載って、GPU 使用率がほぼ 100% で貼り付いた状態の値です。
35B-A3B の 21.6W は、省電力ではなく「GPU が待機しているだけ」
同じ日に 35B-A3B (qwen3.5:35b-a3b) も計測しました。結果は 10.2 tok/s / 21.6W。
表面だけ見ると「9B より省電力」に見えますが、これは誤読です。恥ずかしながら、最初に数字を眺めたときは「35B のほうが電気も食わないのか、えらいな」と素直に思いました。
35B-A3B は VRAM 12GB に収まらず、CPU にオフロードされています。計算の大半は CPU 側で、GPU はほぼ待機状態 (21.6W) です。nvidia-smi で測った値は、GPU がやった仕事の電力であって、計算全体の電力ではありません。J/token が「無効」になっているのは、この分母ずれを隠さないためです。
本記事は GPU 単体の値だけを扱うので、35B-A3B の値はこれ以上は使いません。「軽量 9B のほうが、GPU 全体を使い切る」逆転の数字として表に残しておきます。
1k トークンの電気代は、約 0.018 円
J/token の 2.55 を、Wh/1k トークンに直すと 0.708 Wh。日本の家庭向け電力単価の目安 26 ¥/kWh で掛け合わせると、1,000 トークンあたり約 0.018 円です。
実感に置き直します。
- 1 回の返答で 2,000 トークン使ったとして、約 0.037 円
- 1 日 100 返答回しても、約 3.7 円
- 1 ヶ月、毎日 100 返答回し続けて、約 111 円
これは GPU 単体の値で、CPU・メモリ・電源ロス・ディスプレイ・冷却ファンの電力は含みません。壁コンセントの値ではない点は、本記事の重要な前提です。それでも、GPU の計算部分だけ見れば「クラウド LLM の API を叩いているつもりの金額」とは、別の桁で動くのが分かる水準です。
参考に、Claude Code Max の月額 $200 (約 30,000 円) で言うと、本記事の 9B の 1k トークンコストの約 160 万倍です。もちろん 9B と Claude のモデル規模は全く違うので、ただの価格比較としての参考値です。「同じ質の返答」ではないことは念押しします。
逆の方向で考えると、月額 30,000 円を 1k トークン 0.018 円で割れば、約 16.6 億トークンを 9B で生成できる計算になります。1 ヶ月 30 日 × 24 時間を 73 tok/s でぶん回しても約 1.9 億トークンなので、現実的には GPU の稼働時間のほうが先に上限に当たります。「コストが安い代わりに、使える時間に上限がある」の構造です。クラウド LLM と手元 LLM は、課金軸が「クエリ単価」と「時間 × 速度」で違います。
なぜ 93% 負荷が張り付くのか
GPU 使用率 100% 近くで平均 187.5W、という数字は、「VRAM に綺麗に収まる」+「ボトルネックが GPU 計算にある」の 2 条件が揃うと出ます。
- 9B は Q4_K_M 量子化で約 5.4GB。KV キャッシュを足しても 12GB 内に収まります
- CPU オフロードが発生しないので、PCIe 経由のメモリ転送の待ちがありません
- 1,500 トークンの連続生成は、推論ループが途切れないので GPU がアイドルに落ちません
逆に、CPU オフロードが入ったり、プロンプトを 1 文字ずつ送るような使い方だと、GPU 使用率は上下して、平均電力はこれより下がります。「アイドル時間を減らすほど、電力は高く、J/token は小さくなる」逆比例の関係です。
nvidia-smi -lms 500 の 500ms 間隔は、GPU の瞬間値をそれなりに拾える粒度です。1 秒間隔だと、1,500 トークンの生成 (約 20 秒) で 20 サンプルしか取れず、山と谷が平均に混ざります。500ms で約 40 サンプル取れると、負荷が張り付いた区間の平均を安定させられます。
J/token は、W より扱いやすい
ローカル LLM の電力の話は、W (ワット) で語られがちです。「35B は 42W、9B は 187W」のように。
ただ、W は瞬間値であって、推論の「仕事量に対する電力」ではありません。生成速度が遅ければ、同じ W でも電力は多く使います。
J/token (ジュール毎トークン) は、1 トークン生成するのに使ったエネルギーの絶対量です。本記事では 2.55 J/token。
この値は、tok/s と W から次の式で出ます。
J/token = W / tok/s
= 187.5 / 73.6
= 2.547...
tok/s が倍になっても、W が倍にならないなら J/token は下がります。つまり、量子化や投機的デコードで速度を上げる施策は、速度の数字と同じだけ「エネルギー効率」を押し上げます。この視点は、電気代の月額比較より、実装選定の判断材料として使えます。
既公開記事との棲み分け
本記事と、同じ RTX 4070 で測った既公開 2 本の役割を整理しておきます。
| 記事 | 軸 | 代表値 |
|---|---|---|
| Qwen 35B は平均 42W で動く | 35B・4 パターン | 平均 42W、構成差を見る |
| RTX 4070 で 90 日連続稼働の電気代を気温別に測った | 季節積算 | 夏と冬で約 2 倍差 |
| 本記事 (9B の 1k トークンは 0.7Wh) | 瞬間値・J/token | 187.5W、0.708 Wh |
35B 側は平均 42W。9B は平均 187.5W で、35B のほうが低く見えるのは「ほとんどが CPU 計算で、GPU 側は小さい」ためです。本記事と並べて読むと、GPU の電力計だけで「ローカル LLM の電気代」を語る怖さが見えてきます。
計測を再現する最小構成
同じ計測を手元で回すのに、特別なツールは要りません。Ollama と nvidia-smi だけで足ります。
# 別ターミナルで power.draw を記録
nvidia-smi \
--query-gpu=timestamp,power.draw,utilization.gpu \
--format=csv -lms 500 > power.csv &
# 1,500 トークンを生成 (temperature 0, think off)
ollama run qwen3.5:9b \
--format json \
"<<<プロンプト>>>"
# 記録を止める
kill %1
生成後、power.csv から utilization.gpu が 20% 以上の行を取り出して、power.draw の平均を取ります。tok/s は Ollama の --verbose でも返るし、生成した JSON を見ても分かります。J/token は W / tok/s。Wh/1k トークンは (J/token × 1000) / 3600 で換算できます。
nvidia-smi の timestamp は秒まで出せますが、ms が欲しい場合は --query-gpu に timestamp 以外のオプションを足すか、カラムの先頭に date -Ins を挟む方法があります。本記事ではサンプリング間隔 500ms で十分だったので、timestamp は秒単位のまま使っています。
実測範囲と限界
- GPU 単体の値、CPU・メモリ・電源ロスは含みません (壁コンセントの値ではない)
- 35B-A3B の値は無効です (CPU オフロード、GPU は待機)
- 1,500 トークン生成 × 2 回の実測。長い生成 (10k トークン等) では放熱で平均が下がる可能性があります
- nvidia-smi 500ms 間隔、GPU 使用率 20% 以上のサンプルで平均。プロンプト処理の短い山は平均に入りにくい設計です
- 計測前の待機電力は 9.3W。この分は差し引いていません (サンプリング対象外)
- 単価 26 ¥/kWh は 2026 年時点の日本の家庭向け目安。契約で異なります
まとめ
- RTX 4070 で Qwen 3.5:9b を回したとき、GPU 単体の平均は 187.5W、1k トークンの生成に約 0.708 Wh を使いました
- J/token は 2.55、1k トークンの電気代は約 0.018 円 (26 ¥/kWh 換算)
- GPU 使用率はほぼ 100% で貼り付き、VRAM 12GB に 9B (Q4_K_M) が収まる状態の値です
- 35B-A3B の 21.6W は CPU オフロードによる GPU 待機で、J/token は無効扱いです
- GPU 単体の値で、壁コンセントの値ではありません
測定条件
本記事は iris-lab/experiments/045-local-llm-power-draw/README.md の実測結果と、Ollama および nvidia-smi 公式ドキュメントの再構成です。新規実測は行っていません。
- 計測日: 2026-10-21
- 環境: RTX 4070 12GB、Ollama、Salad 停止、待機電力 9.3W
- 設定: temperature 0、think off、1,500 トークン生成
- 計測:
nvidia-smi -lms 500で power.draw を記録、GPU 使用率 20% 以上のサンプル平均 - 対象:
qwen3.5:9b(Ollama、Q4_K_M)、qwen3.5:35b-a3b(比較用、35B-A3B は無効値)
続きはこちら
同じ RTX 4070 で、2 フラグ (CPU-MoE / KV 量子化) と速度・品質のトレードオフを 7 問の品質チェックつきで並べた記事があります。瞬間値を見た次は、速度と品質を見るのが順です。
RAG・MCP・ローカルLLM を実際に動かして測った記事を書いています。続きが気になる方は Qiita でフォロー してもらえると、次の記事が届きます。
本書では、Qwen 35B を RTX 4070 で動かすための設定・測定・運用を一通り扱いました。第4章「計測の作法」で、本記事のような瞬間値を取る前に汚れを避けるための作り方 (tok/s の測り方、VRAM の状態管理) を書いています。
