llama.cpp

Local AI RunnersCLIC++

★ 128,075주당 +808조회 5

무엇인가

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

유사 도구