llama.cpp
무엇인가
llama.cpp는 C/C++로 작성된 LLM·VLM 추론 엔진이다. 모델을 학습시키는 도구가 아니라, 이미 학습된 가중치를 읽어 토큰을 생성하는 실행 계층에 속한다. ggml 텐서 라이브러리 위에 구축되며, libllama C API를 통해 다른 프로그램에 임베드된다.
어떻게 동작하나
모델은 GGUF 포맷으로 로드된다. 가중치는 1.5비트에서 8비트까지의 정수 양자화로 저장돼 메모리 사용량과 메모리 대역폭을 줄인다. 연산은 백엔드별로 분기된다. CPU에서는 ARM NEON, Accelerate, Metal, x86의 AVX·AVX2·AVX512·AMX, RISC-V의 RVV·ZVFH·ZFH·ZICBOP·ZIHINTPAUSE를 사용한다. GPU에서는 CUDA 커스텀 커널, HIP(AMD), MUSA(Moore Threads), Vulkan, SYCL 백엔드를 쓴다. VRAM 용량보다 큰 모델은 CPU+GPU 하이브리드 추론으로 레이어를 나눠 일부만 가속한다.
무엇과 다른가
파이썬 기반 추론 스택과 달리 외부 의존성이 없는 순수 C/C++ 구현이며, 배포 산출물이 단일 바이너리다. llama-server는 cpp-httplib 기반 HTTP 서버로 REST API와 내장 웹 UI를 제공하고, GBNF 문법으로 생성 출력의 형식을 제약한다. 멀티모달 입력은 stb로 이미지를, miniaudio로 오디오를 디코딩한다. JSON 처리는 nlohmann/json, 프로세스 실행은 subprocess.h를 쓴다.
어떻게 쓰나
설치는 llama.app 안내, Docker 이미지, 릴리스 페이지의 사전 빌드 바이너리, 저장소 클론 후 소스 빌드 중 하나로 한다. 설치 후 llama-cli로 대화형 세션을 열고, llama serve로 서버를 띄워 브라우저 UI나 REST API로 접근한다.
전제와 한계
모델은 GGUF 형식이어야 한다. 양자화는 정밀도를 낮추는 대가로 메모리를 줄이므로 비트 수가 낮을수록 출력 품질이 떨어진다. GPU 백엔드는 각 벤더의 툴체인이 설치돼 있어야 빌드된다. 하이브리드 추론은 모델 전체가 아니라 일부 레이어만 가속한다.
관련 논문 5
유사 도구
- llamafilellama.cpp와 Cosmopolitan Libc를 결합해 LLM 가중치와 추론 런타임을 단일 실행 파일로 묶는 로컬 실행기다. 설치 없이 여러 운영체제와 CPU 아키텍처에서 구동된다.
- gpt4all데스크톱과 노트북에서 LLM을 API 호출이나 GPU 없이 로컬로 실행하는 C++ 추론 클라이언트다. llama.cpp를 백엔드로 쓴다.
- PowerInfer활성화 지역성을 이용해 hot 뉴런은 GPU에, cold 뉴런은 CPU에 배치하는 CPU/GPU 하이브리드 LLM 추론 엔진이다. 단일 소비자용 GPU에서 대형 모델을 서빙한다.
- cactus모바일·웨어러블에서 LLM·VLM·음성 모델을 실행하는 C++ 추론 엔진이자 CLI다. 양자화 커널과 런타임을 함께 포함한다.
- mlx-serveApple Silicon에서 MLX와 GGUF 모델을 실행하는 Zig 네이티브 추론 서버다. OpenAI·Anthropic·Ollama API를 한 포트에서 동시에 제공한다.
- lmdeployLLM을 4bit로 압축해 GPU에서 서빙하는 파이썬 툴킷이다. TurboMind와 PyTorchEngine 두 추론 엔진, OpenAI 호환 API 서버를 포함한다.