GGML은 C로 작성된 범용 텐서 라이브러리로, 소비자 하드웨어에서의 효율적인 실행에 중점을 둔 머신러닝 애플리케이션을 위해 설계되었다. Georgi Gerganov가 만들었으며, Meta의 Llama와 같은 다양한 대규모 언어 모델에서 추론을 수행하는 오픈소스 소프트웨어 라이브러리인 llama.cpp와 공동 개발되고 있다. GGML은 llama.cpp가 CPU, GPU 및 기타 가속기에서 모델을 실행할 수 있게 하는 기본 텐서 연산과 하드웨어 백엔드를 제공하여, 로컬 AI 추론을 폭넓은 사용자층이 접근할 수 있게 한다.
이 라이브러리는 엄격한 메모리 관리와 멀티스레딩을 강조하여, 전용 그래픽 카드가 없는 시스템에서도 높은 성능을 달성할 수 있다. GGML은 로컬 AI 생태계의 기초 구성 요소가 되었으며, llama.cpp는 Ollama 및 LM Studio와 같은 인기 애플리케이션을 포함한 로컬 추론 도구의 사실상 표준으로 간주된다.
배경
Georgi Gerganov는 2022년 9월 말에 GGML 라이브러리 작업을 시작했으며, Fabrice Bellard의 LibNC 작업에서 영감을 얻었다. GGML 이전에 Gerganov는 OpenAI의 Whisper 음성-텍스트 모델을 구현한 유사한 라이브러리인 whisper.cpp를 개발했다. 이 초기 프로젝트는 나중에 GGML과 llama.cpp에 적용된 설계 원칙과 기술적 접근 방식의 기반을 마련했다.
개발
llama.cpp는 2023년 3월에 외부 종속성이 없는 순수 C/C++ 구현의 Llama 추론 코드로 개발을 시작했다. 이 프로젝트는 GPU나 기타 전용 하드웨어가 없는 컴퓨터에서의 성능 향상을 목표로 했으며, 하드웨어 성능이 제한된 사용자들 사이에서 빠르게 주목을 받았다. 처음에는 CPU용으로 설계되었지만, 나중에 GPU와 NPU 지원이 추가되었다. 2026년 5월 기준으로 이 프로젝트는 GitHub에서 109,000개 이상의 스타를 보유하고 있다.
주요 이정표로는 2024년 4월 30일에 도입된 FlashAttention이 있으며, 이는 어텐션 계산 효율성을 크게 개선했다. 2025년 4월 10일에는 libmtmd가 도입되어 멀티모달 모델 지원이 활성화되었다. 2025년 12월 17일에는 새로운 GUI 바인딩을 통해 Android 및 ChromeOS 기기에서의 완전한 가속이 가능해져, 기존의 크로스 컴파일 및 CLI 방식 외에도 네이티브 앱 개발이 가능해졌다.
아키텍처
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용 Neon, i8MM, SVE, SVE2, SME 및 SME2; S390x용 VXE2. Apple 실리콘은 이 프로젝트의 중요한 대상이다.
GGML은 에지 추론을 위한 기능을 지원하며, 여기에는 사전 모델 양자화, 실시간 KV-캐시 양자화, 추측 디코딩, 모델 레이어의 시스템 RAM 부분 오프로딩이 포함되어 GPU VRAM 용량을 초과하는 모델을 기기가 로드할 수 있게 한다. 프론트엔드 통신을 위해 llama.cpp는 v1/chat/completions와 같은 OpenAI 호환 엔드포인트와 JSON 형식의 문법 기반 출력 형식을 제공한다.
GGUF 파일 형식
GGUF(GGML Universal File) 형식은 텐서와 메타데이터를 단일 파일에 저장하는 이진 형식으로, 모델 데이터의 빠른 저장 및 로딩을 위해 설계되었다. 2023년 8월 llama.cpp 프로젝트에서 도입된 GGUF는 추가 모델 아키텍처 지원이 추가됨에 따라 이전 버전과의 호환성을 유지하기 위해 만들어졌다. 이는 GGML과 같은 이전 형식을 대체했으며, 일반적으로 PyTorch와 같은 다른 머신러닝 라이브러리의 모델을 변환하여 생성된다.
설계
GGUF는 양자화에 중점을 두어 모델 가중치의 정밀도를 낮춰 메모리 사용량을 줄이고 속도를 높이며, 일부 정확도를 희생한다. 2비트에서 8비트 양자화 정수 유형, float32, float16 및 bfloat16과 같은 일반적인 부동소수점 형식, 1.58비트 양자화를 지원한다. 이 형식에는 토크나이저 어휘, 컨텍스트 길이, 텐서 정보 및 기타 속성과 같은 GPT 계열 언어 모델 실행에 필요한 필수 정보가 포함된다.
모델
llama.cpp는 Llama, Mistral, Gemma, DeepSeek, gpt-oss, Phi 및 Qwen을 포함한 광범위한 대규모 언어 모델을 지원한다. 이러한 광범위한 호환성 덕분에 GGML과 llama.cpp는 로컬 하드웨어에서 대규모 언어 모델을 작업하는 개발자와 연구자에게 필수 도구가 되었다.