Last verified: 2026-10-14 — llama.cpp build b11609.
All flags in this guide apply to
llama-server and llama-cli from llama.cpp build b11609 (October 14, 2026). Flag names can change between builds — run llama-server --help to confirm what your binary supports.Flash attention
Flash attention을 활성화하려면-fa 또는 --flash-attn on을 사용하세요. 대부분의 벤치마크에서, 이것은 llama.cpp가 제공하는 거의 무료 성능 개선에 가장 가까운 것입니다 — 동일한 또는 더 낮은 메모리 사용량으로 더 빠른 추론을 얻을 수 있으며, 품질 비용은 무시할 수 있습니다.
- KV 캐시의 더 낮은 메모리 사용량 — 긴 컨텍스트 길이에서 가장 큰 이점.
- 더 빠른 추론 — 특히 GPU에서, 타일된 계산이 텐서 코어에 잘 매핑됩니다.
- 동일한 출력 품질 — flash attention은 표준 어텐션과 수학적으로 동일하며, 근사가 아닙니다.
mmap vs mlock
llama.cpp는 2가지 전략 중 하나를 사용하여 모델 가중치를 메모리에 로드합니다. 기본값은--mmap으로, 모델 파일을 프로세스의 가상 주소 공간에 직접 매핑합니다. 대안은 --mlock으로, 전체 모델을 물리적 RAM에 고정합니다.
mmap이 이기는 경우
--mmap이 기본인 이유는 대부분의 대화형 사용에서 잘 작동하기 때문입니다. OS가 모델 페이지를 온디맨드로 로드하므로 시작이 빠르고, 페이지가 실제로 터치될 때까지 모델 파일이 RAM에 이중으로 계산되지 않습니다. 모델을 테스트하거나 짧은 세션을 실행하는 경우 기본값으로 충분합니다.
mlock이 이기는 경우
--mlock은 OS가 모델 페이지를 스왑으로 축출하는 것을 방지합니다. 이것이 중요한 경우:
- 하루 종일 같은 모델을 실행하며 일관된 지연 시간을 원할 때 — 페이지 폴트로 인한 콜드 스타트 페널티 없음.
- 시스템이 다른 프로세스의 메모리 압박을 받고 있으며 모델 가중치를 페이지 아웃할 수 있을 때.
- 스왑이 느린(또는 스왑이 없는) 머신에서 페이지 폴트가 추론을 몇 초간 중단시킬 수 있을 때.
스레드 튜닝
이-t 플래그는 추론에 사용되는 CPU 스레드 수를 설정합니다. 올바른 값은 CPU가 실제로 얼마나 많은 작업을 수행하는지에 따라 다릅니다.
Apple Silicon에서는 GPU와 CPU가 통합 메모리를 공유하고 Metal 백엔드가 스케줄링을 처리하므로 스레드 튜닝이 덜 중요합니다. 기본값이 일반적으로 잘 작동합니다.
GPU 오프로드 전략
이-ngl 플래그는 GPU로 오프로드하는 모델 레이어 수를 제어합니다. GPU의 레이어가 많을수록 추론이 빨라지지만, 각 레이어는 VRAM을 소비합니다.
부분 오프로드
먼저-ngl을 GPU 메모리에 맞출 수 있는 레이어 수로 설정하세요. 나머지 레이어는 CPU에서 실행됩니다.
전체 오프로드
여기서-ngl 999를 설정하여 모든 레이어를 오프로드하세요. llama.cpp는 999를 “나머지 모든 레이어”로 사용합니다 — 문자 그대로 999개 레이어를 오프로드하려고 하지 않습니다.
레이어당 메모리 예산
오프로드된 각 레이어는 가중치와 KV 캐시 모두를 위해 VRAM을 소비합니다. 대략적인 추정:
CUDA 컨텍스트와 오버헤드를 위해 1-2 GB의 VRAM 여유를 두세요.
배치 크기 튜닝
두 개의 플래그가 prefill 단계에서 llama.cpp가 한 번에 처리하는 토큰 수를 제어합니다:상호 작용 방식
-b는 외부 제한을 설정합니다. 프롬프트가-b보다 많은 토큰을 가지면 llama.cpp가 여러 배치로 분할합니다.-ub는 내부 청크 크기를 설정합니다. llama.cpp는 배치를 최대-ub토큰의 마이크로 배치로 처리합니다.-ub는-b보다 작거나 같아야 합니다.
트레이드오프
KV 캐시 정밀도
KV 캐시는 모든 활성 시퀀스의 모든 토큰에 대한 키와 값 텐서를 저장합니다. 기본적으로 llama.cpp는 키와 값 모두에 f16(16비트 부동 소수점)을 사용합니다. 양자화된 정밀도로 전환하여 약간의 품질 비용으로 메모리 사용량을 줄일 수 있습니다.
키와 값을 독립적으로 설정할 수 있습니다. 일반적인 패턴은 양쪽 모두에
q8_0을 사용하는 것으로, 대부분의 벤치마크에서 1% 미만의 품질 차이로 KV 캐시 메모리를 절반으로 줄입니다.
MoE 최적화
Qwen3.5-35B-A3B나 Mixtral 같은 Mixture-of-experts 모델은 각 레이어에 많은 수의 전문가 서브네트워크를 저장하지만 토큰당 몇 개만 활성화합니다. 전문가 가중치는 비활성 상태일 때도 메모리에 존재하므로 MoE 모델은 활성 매개변수 수에 비해 불균형하게 큽니다. 다중 GPU 시스템에서 GPU 메모리가 부족할 때 전문가 레이어를 CPU에 배치할 수 있습니다:--n-cpu-moe <num>는 지정된 수의 전문가 서브레이어를 CPU에 유지하고 모델의 나머지는 GPU에서 실행합니다. 이것은 약간의 지연 시간 증가와 VRAM에 더 큰 모델을 맞추는 것을 트레이드오프합니다.
예제 구성
Apple Silicon — M-series Mac에 최적화
-ngl 999)가 작동합니다.
llama.cpp는 Apple Silicon에서 잘 실행되지만, Mac에서만 배포하는 경우 MLX가 Apple의 Metal 백엔드에 최적화되어 있어 같은 모델에 대해 더 빠른 추론을 제공할 수 있습니다. 크로스 플랫폼 이식성이나 OpenAI 호환 서버가 필요할 때 llama.cpp를 사용하세요.
GPU 오프로드 — NVIDIA 또는 AMD 외장 GPU
-ngl을 줄이세요 — 전체 레이어 수로 시작하여 5씩 줄여가며 로드되는지 확인하세요.
CPU 전용 — GPU 없음
다음 단계
llama.cpp remote access
Tokios를 통해 포트 없이 llama.cpp 서버를 팀원과 에이전트에게 노출하세요.
Speculative decoding
드래프트 모델, n-grams, EAGLE로 디코드를 가속 — llama.cpp 백엔드와 작동합니다.
Test your deployment
튜닝 후 지연 시간과 처리량을 측정하여 개선을 확인하세요.
KV cache and context
모델 아키텍처와 런타임 전반에서 KV 캐시가 작동하는 방식에 대한 자세한 설명.