Ollama vs llama.cpp 백엔드 테스트 | 1x Jetson Orin Nano Super에서 8개 모델 벤치마크
요약
Jetson Orin Nano Super 환경에서 8개의 초소형 LLM을 대상으로 Ollama와 llama.cpp의 추론 성능을 비교 분석했습니다. 테스트 결과, 1B 미만 모델에서는 llama.cpp가 Ollama보다 처리량과 전력 효율 면에서 유의미하게 우수한 성능을 보였습니다.
핵심 포인트
- 1B 미만 모델에서 llama.cpp가 Ollama 대비 최대 4.2배 빠른 속도 기록
- llama.cpp는 처리량(throughput)과 토큰당 전력 효율(tok/J)에서 우세
- Llama3.2-1B 등 1B급 모델에서는 두 백엔드 간 성능 차이가 미미함
- 에지 디바이스의 전력 모드(7W~MAXN)에 따른 최적화 성능 확인
$250 Jetson Orin Nano Super에서 구동하는 8개의 초소형 LLM — 에지(edge)에서 추론(inference)을 실행하며 배운 점
지난 일주일 동안 단일 Jetson Orin Nano Super 8GB에서 135M 파라미터부터 1.2B에 이르는 8개의 소형 언어 모델(small language models)을 실행해 보았습니다.
테스트한 모델:
SmolLM2-135M
SmolLM2-360M
Qwen2.5-0.5B
LFM2.5-350M
LFM2.5-1.2B
Qwen3-0.6B
Llama3.2-1B
Gemma3-1B.
모든 모델은 7W, 15W, 25W, MAXN의 네 가지 Jetson 전력 모드 전반에서 llama.cpp CUDA와 Ollama 모두를 사용하여 실행되었습니다.
왜 두 백엔드(backends)를 모두 사용했나요? llama.cpp와 Ollama의 추론(inference) 사이에 실제로 눈에 띄는 차이가 있는지 알고 싶었기 때문입니다. 결과적으로 llama.cpp는 1B 미만 모델과 거의 동일한 1B 모델 수준에서 Ollama를 앞서는 것으로 나타났습니다.
제가 발견한 내용은 다음과 같습니다.
25W 환경의 llama.cpp에서 SmolLM2-135M Q4_K_M 실행 시:
최대 165 tok/s (Ollama: 121 tok/s), 29.6 output tok/J (Ollama: 21.3)
ctx=2048에서 0.31 s TTFT (Ollama: 0.46 s) -- llama.cpp가 처리량(throughput)에서 1.37배, tok/J에서 1.39배 더 빠름
ctx=2048, gen=64에서 총 487 tok/J: 테스트 세트 중 최고 성능
25W 환경의 llama.cpp에서 LFM2.5-350M Q4_K_M 실행 시:
115 tok/s -- 단 219 MB만 사용하면서 SmolLM2-360M (369 MB)과 거의 대등한 성능
동일 모드에서 Ollama는 28 tok/s로 하락 -- 4.20배 차이, 이는 순수하게 커널(kernel) 문제임
17.16 output tok/J (Ollama: 6.39)
ctx=2048에서 0.39 s TTFT (Ollama: 0.50 s)
25W 환경의 llama.cpp에서 LFM2.5-1.2B Q4_K_M 실행 시:
54.1 tok/s: ~1B 클래스를 선도 (Llama3.2-1B의 47.1 대비 15% 우세, Gemma3-1B의 40.8 대비 33% 우세)
Ollama: 21.8 tok/s -- llama.cpp가 2.48배 더 빠름
6.37 output tok/J (Ollama: 3.94), 1.03 s TTFT (Ollama: 1.11 s)
단 698 MB 사용 -- 1B 클래스 중 가장 작은 점유율(footprint)
25W 환경의 llama.cpp에서 Llama3.2-1B Q4_K_M 실행 시:
47.1 tok/s (Ollama: 44.8) -- 단 5% 차이, 백엔드 간 거의 동일함
5.48 output tok/J (Ollama: 5.38), 0.98 s TTFT (Ollama: 1.23 s)
벤치마크 방법론 (Benchmark Methodology)
각 모델 × 프롬프트(prompt) × 생성(gen) 조합에 대해, aiperf는 정확한 목표 토큰 수에 맞춰 합성 프롬프트(synthetic prompts)를 사용한 20개의 단일 동시성(single-concurrency) 요청을 보냅니다.
전력은 tegrastats의 VDD_CPU_GPU_CV (mW → W)로부터 500ms 간격으로 샘플링됩니다. Tegrastats 샘플은 profile_export.jsonl (aiperf의 통계)에서 제공하는 요청별 나노초(nanosecond) 타임스탬프를 사용하여 정확한 프리필(prefill)/디코드(decode) 단계 윈도우에 할당됩니다.
모든 모드에서 jetson_clocks를 사용하여 클럭(Clocks)을 고정했습니다. 각 실행의 전력과 클럭 속도는 nvpmodel을 통해 제한되었으며, 열적 안정성(지속적인 스로틀링(throttling) 없음; 접합 온도(junction temp) ≤ 73 °C)을 모니터링했습니다.
전체 과정에서 사용된 지연 시간 백분위수(Latency percentile): 보고된 모든 TTFT, ITL 및 요청 지연 시간(RL) 값은 조합당 20개의 요청에 대한 p50(중앙값)을 사용합니다.
분석 결과
제출자: /u/East-Muffin-6472
[link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기