llama.cpp는 대규모 언어 모델을 추론하는 오픈소스 소프트웨어 라이브러리로, Meta의 Llama 모델과 같은 다양한 모델을 지원한다. 이 라이브러리는 C 언어로 작성된 범용 텐서 라이브러리인 GGML 프로젝트와 함께 개발된다. 전용 GPU가 없는 컴퓨터에서도 효율적으로 실행되는 데 중점을 두어, 표준 하드웨어에서 머신러닝 모델을 사용할 수 있게 한다.
이 프로젝트는 명령줄 도구와 간단한 웹 인터페이스를 갖춘 서버를 포함한다. Ollama 및 LM Studio를 포함한 거의 모든 로컬 추론 도구의 핵심으로 사실상 표준이 되었으며, 사용자가 자체 기기에서 생성형 AI 모델을 실행할 수 있게 한다.
배경
2022년 후반, 조지아 출신 개발자 게오르기 게르가노프는 C 언어로 구현된 텐서 라이브러리인 GGML 작업을 시작했다. 게르가노프는 GGML을 설계할 때 엄격한 메모리 관리와 멀티스레딩을 주요 목표로 삼았다. 이 작업은 파브리스 벨라르가 만든 C 언어용 텐서 계산 라이브러리인 LibNC에서 영감을 받았다.
llama.cpp를 시작하기 전에 게르가노프는 whisper.cpp라는 유사한 라이브러리를 개발했는데, 이는 OpenAI가 만든 음성 인식 모델인 Whisper를 구현한 것이다. 이전 프로젝트를 통해 저수준 언어에서 효율적인 모델 추론을 구현하는 그의 접근 방식이 확립되었다.
개발
llama.cpp는 2023년 3월에 Llama 추론 코드를 순수 C/C++로 구현하면서 개발이 시작되었으며, 외부 의존성이 없다. 이 접근 방식은 GPU나 기타 전용 하드웨어가 없는 컴퓨터에서도 성능을 향상시켰으며, 이는 프로젝트의 주요 목표였다. 전용 하드웨어가 없는 사용자들 사이에서 빠르게 인기를 얻었으며, CPU만으로도 실행할 수 있었다.
처음에는 CPU만 지원했지만, 이후 GPU 및 신경처리장치(NPU) 백엔드 지원이 추가되었다. 2026년 5월 기준으로 이 프로젝트는 GitHub에서 109,000개 이상의 스타를 받으며 폭넓은 채택을 반영하고 있다.
주요 개발 이정표는 다음과 같다: 2024년 4월 30일에는 멀티헤드 어텐션 메커니즘의 효율성을 개선한 FlashAttention이 도입되었다. 2025년 4월 10일에는 이전에 정체되어 있던 멀티모달 모델 지원을 활성화하기 위해 libmtmd가 도입되었다. 2025년 12월 17일에는 Android 및 ChromeOS 기기에서의 완전한 가속을 위한 새 GUI 바인딩이 도입되어, 기존의 크로스 컴파일 및 adb 셸에서 명령줄 인터페이스를 실행하던 방식을 넘어 네이티브 앱 개발이 가능해졌다.
아키텍처
llama.cpp는 x86, ARM, Metal, BLAS, BLIS, zDNN, ZenDNN, SYCL, MUSA, CUDA, HIP, CANN, OpenCL, RPC, Vulkan 1.2 이상을 포함한 다양한 하드웨어 대상을 지원한다. 이러한 백엔드는 GGML 텐서 라이브러리의 일부이며, 모델별 프런트엔드 코드인 llama.cpp에서 사용된다.
이 라이브러리는 CPU 확장을 적극 활용한다. x86-64에서는 AVX, AVX2, AVX-512, AVX-VNNI, AMX 명령어 세트를 사용한다. AArch64(ARM64)에서는 NEON, i8MM, SVE, SVE2, SME, SME2를 사용한다. s390x에서는 벡터 확장 기능 2(VXE2)를 사용한다. Apple 실리콘은 이 프로젝트의 중요한 대상 플랫폼이다.
추론 성능을 높이기 위한 여러 기능이 있다. 여기에는 사전 양자화된 모델, 온디맨드 키-값(KV) 캐시 양자화, 추측 디코딩, 그리고 모델 레이어를 시스템 RAM으로 부분 오프로딩하는 기능이 포함된다. 후자를 통해 GPU VRAM에 전체 모델이 들어가지 않는 경우에도 더 큰 모델을 실행할 수 있다.
통신 측면에서 llama.cpp는 OpenAI 호환 엔드포인트(예: v1/chat/completions)를 제공하며, JSON 형식 출력을 위한 문법 기반 출력 형식을 지원한다. 이를 통해 클라우드 서비스가 라이브러리와 통합할 수 있다.
GGUF 파일 형식
GGUF(GGML Universal File) 형식은 텐서와 메타데이터를 단일 파일에 저장하는 이진 형식으로, 모델 데이터의 빠른 저장과 로드를 위해 설계되었다. 2023년 8월에 프로젝트 팀에 의해 도입되었으며, 다른 모델 아키텍처 지원이 추가되면서 이전 형식과의 호환성을 유지하기 위해 만들어졌다.
GGUF는 이전 GGML 형식을 대체했으며, 일반적으로 PyTorch와 같은 다른 머신러닝 라이브러리로 개발된 모델을 변환하여 생성된다. 이 형식은 양자화에 중점을 두는데, 이는 모델 가중치의 정밀도를 줄여 메모리 사용량을 낮추고 속도를 높이는 대신 모델 정확도가 다소 저하될 수 있다.
GGUF는 2비트에서 8비트까지의 양자화 정수 유형, float32, float16, bfloat16과 같은 일반적인 부동소수점 데이터 형식, 그리고 1.58비트 양자화를 지원한다. 또한 GPT 계열 언어 모델에 필요한 토크나이저 어휘, 컨텍스트 길이, 텐서 정보 및 기타 속성을 포함한다.
바이트 수준 구조는 리틀 엔디언 정렬을 사용하며, 메타데이터 블록과 텐서 정보 블록으로 나뉜다. 이 구조 덕분에 저장 및 로드 시 효율적인 직렬화가 가능하다.
모델
llama.cpp는 Llama, Mistral, Gemma, DeepSeek, gpt-oss, Phi, Qwen을 포함한 다양한 대규모 언어 모델을 지원한다. 이러한 다양한 모델 지원 덕분에 채팅 애플리케이션부터 보다 전문화된 작업에 이르기까지 다양한 인공지능 사용 사례에 유연하게 대처할 수 있다.
Ollama 및 LM Studio와 같은 커뮤니티 도구는 이 프로젝트를 기반으로 구축되었으며, 종종 Anthropic과 같은 독점 에코시스템을 로컬 인프라에서 사용할 수 있게 한다.