テスト: Ollama がインテル CPU のパフォーマンスコアと効率コアをどのように利用しているか
インテルCPUにおけるOllamaの効率コアとパフォーマンスコアの比較
私は理論をテストしたいと思っています - すべてのコアをIntel CPUで使用するとLLMの速度が上がるか?
新しいgemma3 27bitモデル(gemma3:27b、ollama上では17GB)が私のGPUの16GB VRAMに収まらず、部分的にCPU上でも実行されていることが気になります。
正確には、以下のように表示されます:
ollama ps
gemma3:27b a418f5838eaf 22 GB 29%/71% CPU/GPU
これはあまり悪いとは言えませんが、レイヤーが分割されているのが問題です。実際の負荷は:GPU:28%, CPU: 560%。はい、複数のコアが使用されています。
ここでアイデアがあります:
もしもOllamaがすべてのIntel CPUコア(パフォーマンスコアと効率コアの両方)を使用するように強制したらどうなるでしょうか?
OLLAMA_NUM_THREADS設定パラメータ
Ollamaには、環境変数の設定パラメータ OLLAMA_NUM_THREADS があり、Ollamaがどのくらいのスレッドとコアを使用するかを指定するものとされています。
まず、3つのコアに制限して試してみました:
sudo xed /etc/systemd/system/ollama.service
# OLLAMA_NUM_THREADS=3として設定
# Environment="OLLAMA_NUM_THREADS=3"
sudo systemctl daemon-reload
sudo systemctl restart ollama
しかし、これはうまく機能しませんでした。
Gemma 3 27B LLMを実行している間、OllamaはCPUの約560%を使用し続けていました。
残念です。
num_threadコールオプション
では、以下のように呼び出してみましょう:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Why is the blue sky blue?",
"stream": false,
"options":{
"num_thread": 8
}
}' | jq .
結果:
- CPU使用率:585%
- GPU使用率:25%
- GPU電力:67w
- パフォーマンス評価:6.5トークン/秒
では、コアを倍にしましょう。パフォーマンスと効率の両方のコアを使用するようにOllamaに指示します:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Why is the blue sky blue?",
"stream": false,
"options":{
"num_thread": 16
}
}' | jq .
結果:
- CPU使用率:1030%
- GPU使用率:26%
- GPU電力:70w
- パフォーマンス評価:7.4 t/s
良い!パフォーマンスは約14%向上しました!
では、極端にしましょう。すべての物理コアを使用してみましょう:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Why is the blue sky blue?",
"stream": false,
"options":{
"num_thread": 20
}
}' | jq .
結果:
- CPU使用率:1250%
- GPU使用率:10-26%(不安定)
- GPU電力:67w
- パフォーマンス評価:6.9 t/s
では、8つのパフォーマンスコア+4つの効率コアを試してみましょう:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Why is the blue sky blue?",
"stream": false,
"options":{
"num_thread": 12
}
}' | jq .
結果:
- CPU使用率:801%
- GPU使用率:27%(不安定)
- GPU電力:70w
- パフォーマンス評価:7.1 t/s
ここに至るところです。
比較のために、Gemma 3 14bを実行してみましょう。Gemma 27bに比べてスマートではありませんが、GPU VRAMにうまく収まります。
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:12b-it-qat",
"prompt": "Why is the blue sky blue?",
"stream": false
}' | jq .
結果:
- CPU使用率:106%
- GPU使用率:94%(不安定)
- GPU電力:225w
- パフォーマンス評価:61.1 t/s
これが我々が言うパフォーマンスです。 たとえGemma 3 27bが14bよりはるかにスマートでも、10倍は速くはなりません!
結論
LLMがGPU VRAMに収まらず、Ollamaによって一部のレイヤーがCPUにオフロードされている場合
num_thread
パラメータを指定することで、LLMのパフォーマンスを10〜14%向上させることができます。- オフロードによるパフォーマンスの低下は、この向上に比べてはるかに大きく、補償されません。
- より高性能なVRAMを持つGPUを入手する。RTX 3090はRTX 5080より優れていますが、私はどちらも持っていない…
有用なリンク
- Ollamaが並列リクエストをどのように処理するか
- Ollamaモデルを別のドライブまたはフォルダに移動する
- Ollamaチートシート
- LLMの速度パフォーマンス比較
- Deepseek-r1をOllamaで実行する
- LLMによる論理的誤謬の検出
- Hugoで生成されたウェブサイトをAWS S3にデプロイする
- LLMの要約能力比較
- LLMに効果的なプロンプトの書き方
- Intelの13thおよび14th世代CPUの劣化問題
- LLMとOllamaを使用してHTMLコンテンツをMarkdownに変換する
- Quadro RTX 5880 Ada 48GBはどれくらい良いですか?
- OllamaとQwen3埋め込みモデルを使用してテキストドキュメントを再ランク付けする - Goで