테스트: 인텔 CPU 성능과 효율적인 코어를 어떻게 Ollama가 사용하는가
인텔 CPU의 효율성 코어 vs 성능 코어에서의 Ollama
제가 테스트하고 싶은 이론은, 인텔 CPU에서 모든 코어를 사용하면 LLM의 속도가 빨라질까?입니다.
새로운 gemma3 27비트 모델(gemma3:27b, ollama에서 17GB)이 제 GPU의 16GB VRAM에 맞지 않아, 부분적으로 CPU에서 실행되고 있다는 점이 제게 짜증을 주고 있습니다.
통과량, 지연 시간, VRAM, 그리고 런타임과 하드웨어에 걸쳐 벤치마크에 대한 더 많은 정보는 LLM 성능: 벤치마크, 병목 현상 & 최적화를 참조하십시오.
정확히 말하자면
ollama ps
은 다음과 같이 보입니다:
gemma3:27b a418f5838eaf 22 GB 29%/71% CPU/GPU
이상하게 보이지는 않지만, 실제로는 층이 분할되어 있습니다.
실제로 사용량은: **GPU:28%, CPU: 560%**입니다. 네, 여러 코어가 사용되고 있습니다.

여기 아이디어가 있습니다:
모든 인텔 CPU 코어 - 성능 코어와 효율 코어 모두를 Ollama가 사용하도록 강제할 수 있을까요?
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 토큰/초
이제 코어 수를 두 배로 늘려, 성능 코어와 효율 코어의 혼합 사용을 시도해 보았습니다:
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가 Gemma 3 14b보다 똑똑한 것은 사실이지만, 10배는 아닙니다.
결론
LLM이 GPU VRAM에 맞지 않아 Ollama에 의해 일부 레이어가 CPU로 오프로딩되는 경우
num_thread파라미터를 제공함으로써 LLM 성능을 10-14%까지 높일 수 있습니다.- 하지만 오프로딩으로 인한 성능 저하가 더 크며, 이 증가로 보상되지 않습니다.
- 더 강력한 VRAM이 있는 GPU를 사용하는 것이 좋습니다. RTX 3090은 RTX 5080보다 더 좋습니다. 하지만 저는 이 중 하나도 가지고 있지 않습니다…
더 많은 벤치마크, CPU/GPU 튜닝, 성능 가이드에 대해서는 LLM 성능: 벤치마크, 병목 현상 & 최적화 허브를 참조하십시오.