공지: llama.cpp에서 "threads" 인자 테스트해보세요 (+80% 성능 향상 경험)
PSA: Test your "threads" argument in llama.cpp (+80% performance in my case)
핵심 요약
llama.cpp 실행 시 스레드 수를 조정하여 하이브리드 CPU 환경에서 성능을 80%까지 끌어올린 사례 공유.
- 스레드 최적화 — 하이브리드 CPU에서 스레드 수를 조정해 성능을 극대화함
- 벤치마크 결과 — 6스레드 대비 16스레드 사용 시 토큰 생성 속도가 80% 향상됨
- 하이브리드 추론 — CPU와 GPU를 함께 사용하는 환경에서 특히 효과적임
- 성능 병목 — 모든 코어를 사용하는 것보다 특정 스레드 수에서 최적의 성능을 보임
작년에 GPT-OSS 120B 나왔을 때 성능 최대로 뽑아보려고 이것저것 만져봤거든. 그때 다들 하는 말이 하이브리드 CPU(P코어+E코어) 쓸 때는 무조건 P코어만 써야 한다고, --threads 옵션이랑 taskset/affinity로 코어 제한 걸라고 하더라고. 그래서 친구 14700K에 모델 올리고 8스레드(P코어 8개니까)로 제한 걸어봤는데, 확실히 성능이 오르긴 하더라. 그 뒤로 나도 계속 그렇게 쓰고 남들한테도 그렇게 추천했지.
근데 오늘 Gemma 4 26B A4B QAT 모델에 MTP 설정 만지다가 문득 "스레드 수 좀 늘려보면 어떨까?" 싶은 생각이 드는 거야. 내 CPU(250K Plus)는 18코어(P코어 6개 + E코어 12개)거든.
성능 향상이 너무 미쳐서 확실히 하려고 간단하게 스크립트 짜서 돌려봤어(워드프레스용 PHP 코드 짜달라는 프롬프트 넣고, 스레드 옵션만 바꾸고 시드 고정, 웜업 1회 후 5회 측정해서 평균 냄). 결과는 아래와 같음.
threads runs min_tok/s mean_tok/s max_tok/s
------- ---- --------- ---------- ---------
6 5 48,938 49,144 49,451
12 5 61,329 62,938 67,614
16 5 87,877 88,765 89,126
18 5 64,154 66,478 67,373
와, 진짜 6스레드 쓰다가 16스레드로 바꾸니까 성능이 80%나 떡상함. 나도 처음에 안 믿겨서 성능 측정 스크립트까지 돌려본 거임.
6스레드 테스트할 때는 /affinity 옵션으로 P코어에 고정했는데, 안 썼을 때랑 차이가 없는 거 보면 애로우 레이크의 스레드 디렉터가 랩터 레이크(전에 테스트했던 14700K)보다 훨씬 똑똑해진 듯.
신기한 건 18코어 다 쓰면 오히려 성능이 떨어지는데, 스로틀링 걸리는 것도 아니고 모든 코어가 풀 부스트 터지는 거 보면 어딘가에서 병목이 생기는 것 같거든? 아는 사람 있으면 댓글 좀 달아줘.
사양:
Intel 250K Plus + 64GB 6400MT/s + RTX 4070 SUPER 12GB (메모리 OC 571GB/s) + llama.cpp b9601
지금까지 테스트한 것 중에 성능 제일 잘 나오는 명령어는 이거임(다들 spec draft 3 많이 쓰던데, 내 경우엔 QAT 모델은 '2'로 설정했을 때 성능이 더 잘 나왔음. non-QAT 모델은 3이 괜찮았고):
llama-server -m models/gemma-4-26B-A4B-it-qat-UD-Q4_K_XL.gguf --model-draft models/mtp-gemma-4-26B-A4B-it-qat.gguf --alias gemma4-26b-a4b-qat-q4xl-mtp -c 131072 -np 1 -b 2048 -ub 512 --threads 16 -ngl 99 -ncmoe 18 -fa on --spec-type draft-mtp --spec-draft-ngl 99 --spec-draft-n-max 2 --cache-type-k-draft q8_0 --cache-type-v-draft q8_0 --temp 1.0 --top-p 0.95 --top-k 64 --min-p 0.0 --repeat-penalty 1.0
그러니까 나처럼 12GB VRAM 쓰는 애들은 위 명령어 한번 써봐. 퀀트랑 MTP 모델은 Unsloth 거 썼음. 당연히 컨텍스트 길어지면 tok/s는 떨어지겠지만, 스레드에 따른 성능 차이 비율은 그대로일 거야. 이 명령어가 완벽한 건 아닐 수도 있어서, 자고 일어나서 내가 했던 가정들 다시 다 테스트해 볼 생각임. 내가 다른 옵션들도 잘못 설정했을 수도 있으니까 ㅋㅋ
너네 CPU에서도 성능 어떻게 나오는지 꼭 확인해 봐. 나처럼 성능 절반 가까이 날려 먹고 있을지도 모르니까... 이제 와서 Gemma 4 124B 안 나온 게 더 아쉬워지네. 16스레드 설정이면 충분히 빠르게 돌아갔을 텐데. 램 32GB만 더 박으면 딱이었을 텐데 말이야 :( :( :( :(

