테스트: Ollama가 인텔 CPU 성능 및 효율적인 코어를 어떻게 활용하는가
인텔 CPU의 효율성 코어 vs 성능 코어에서의 Ollama
제가 테스트하고 싶은 이론은, 인텔 CPU에서 모든 코어를 사용하면 LLM의 속도가 빨라질까?입니다.
새로운 gemma3 27비트 모델(gemma3:27b, ollama에서 17GB)이 제 GPU의 16GB VRAM에 맞지 않아, 일부는 CPU에서 실행되고 있다는 점이 제게 괴롭습니다.
정확히 말하면,
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을 실행할 때 여전히 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 tokens/sec
이제 코어 수를 두 배로 늘려보겠습니다. 성능 코어와 효율 코어 모두를 사용하도록 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에 효과적인 프롬프트 작성
- 인텔 13세대 및 14세대 CPU의 성능 저하 문제
- LLM과 Ollama를 사용하여 HTML 콘텐츠를 Markdown으로 변환
- Quadro RTX 5880 Ada 48GB이 유용한가요?
- Ollama와 Qwen3 임베딩 모델을 사용하여 텍스트 문서를 재정렬 - Go로