로컬 추론 라이브러리 llama.cpp가 v1.0.0을 내놓았고, 기반 텐서 라이브러리 ggml도 함께 1.0으로 올라갔다. 프로젝트 팀은 Hugging Face 블로그에 올린 글에서 이번 버전이 llama.cpp에 의존하는 개발자에게 더 안정적인 토대를 주기 위한 것이라고 밝혔다. 앞으로 llama.cpp와 ggml에서 공개 API나 ABI에 호환되지 않는 변경이 생기면 모두 메이저 버전 번호의 변화로 드러난다.
지난 몇 년간 llama.cpp의 배포는 거의 전적으로 b로 시작하는 빌드 번호에 의존해 왔다. 코드가 메인 브랜치에 병합될 때마다 새 빌드가 나왔고, 지금은 b12000을 넘어섰다. 1.0 이후에도 이 빌드 번호는 멈추지 않고 프리릴리스 형태로 계속 나온다. 달라진 점은 약속이 따라붙는 정식 버전 라인이 하나 더 생겨, 사용자가 필요에 따라 고를 수 있게 됐다는 것이다.
버전 번호에 의미가 생기다
블로그가 제시한 규칙은 간단하다. MAJOR는 ./include 디렉터리 아래 공개 C 인터페이스의 파괴적 변경, MINOR는 하위 호환되는 새 기능이나 새 모델 지원, PATCH는 인터페이스를 건드리지 않는 버그 수정에 해당하며, ggml-org 산하 모든 프로젝트에 적용된다. 팀은 사용자가 늘어난 만큼 앞으로 이런 경계가 분명히 드러나도록 더 엄격하게 관리하겠다고 적었다.
깔끔하게 출발하기 위해 1.0에서는 먼저 정리 작업을 거쳤다. 오래전부터 지원 중단으로 표시돼 있던 공개 인터페이스 일부를 삭제했고, 일부 함수의 이름을 바꿨으며, 컨텍스트 파라미터 구조체에 새 필드를 추가했다. ggml 쪽에서도 지원 중단된 API와 오래된 DIAG_MASK 연산자를 제거했다. llama.cpp를 라이브러리로 자사 제품에 링크해 쓰는 개발자라면 이번 업그레이드 때 코드를 한 번 고쳐야 한다. 그 이후 마이너 버전을 따라가는 한, 특정 빌드에서 인터페이스가 갑자기 사라질 걱정은 하지 않아도 된다.
이번 버전에 담긴 것
버전 규칙 외에도 1.0 자체에 적지 않은 업데이트가 들어 있다.
- KV 캐시가 FP8을 지원하고, 호스트 메모리에 두는 MoE 전문가 캐시가 새로 추가됐다. CPU가 분담하는 비율도 설정할 수 있다.
- Kimi-K3.1-Pro 등 모델 지원이 추가됐고, Kimi-K3.1은 이미지 입력을 처리할 수 있다.
- llama-server에 /v1/audio/speech 음성 합성 인터페이스가 추가돼 drama-3 TTS 모델과 함께 쓸 수 있다.
- 서버 쪽에서 SSRF, CORS, DNS 리바인딩 문제를 수정했다. 인증 없는 도구 호출과 사설 URL 접근은 이제 명시적으로 켜야 하며, HF_TOKEN은 huggingface.co로만 전송된다.
마지막 항목은 서버를 직접 운영하는 사람에게 가장 실질적이다. llama-server는 로컬 OpenAI 호환 인터페이스로 사내망에 올려 두는 경우가 많고, 심지어 공용 인터넷에 그대로 노출되기도 한다. 도구 호출이 기본으로 열려 있으면 공격 가능한 범위도 함께 커진다. 명시적으로 켜도록 바꾼 것은 선택권을 배포하는 사람에게 돌려준 셈이다.
MoE 전문가 캐시는 요즘 모델의 구조를 겨냥한 것이다. 올해 나온 대형 모델은 대부분 혼합 전문가 구조이며, 전체 파라미터가 수천억에 이르는 경우도 흔하지만 한 단계마다 활성화되는 것은 그중 일부뿐이다. 비디오 메모리에 전문가를 전부 담을 수 없을 때, 당장 쓰이지 않는 부분을 호스트 메모리로 옮기고 일정 비율을 CPU에 맡겨 계산하는 것은 소비자용 그래픽카드에서 큰 MoE 모델을 돌릴 때 흔히 쓰는 절충안이다. 이번에 이것이 메인라인에 들어오면서 사용자가 서드파티 포크를 찾아 헤맬 필요가 없어졌다.
데이터센터 쪽과 비교하면
추론 프레임워크는 이제 두 갈래로 나뉜다. vLLM, SGLang 같은 프레임워크는 데이터센터 GPU를 겨냥해 배치 처리량과 동시성을 겨룬다. llama.cpp는 스마트폰, 노트북, 워크스테이션에서 모델이 돌아가게 하는 것이 목표이며, 양자화로 대형 모델을 한정된 메모리에 담고 CPU와 GPU를 섞어 쓴다.
이는 백엔드 목록에서도 드러난다. CUDA, Metal, Vulkan, WebGPU, AMD의 HIP, 인텔의 SYCL, 스냅드래곤 Hexagon, 그리고 Moore Threads의 MUSA가 모두 올라 있고, 각 백엔드는 동적 라이브러리로 빌드해 실행 시점에 필요한 만큼 불러올 수 있다. 블로그에 따르면 지원하는 모델 아키텍처 변형은 150종 이상이다. 데이터센터 프레임워크가 최신 하드웨어를 쫓는다면 llama.cpp가 쫓는 것은 롱테일 기기이며, 두 쪽의 사용자층은 별로 겹치지 않는다.
프로젝트는 GitHub에서 별 약 13만 5천 개, 포크 약 2만 5,600개를 확보했다. 팀은 현재 Hugging Face 소속이며, 블로그는 CI 컴퓨팅 자원을 제공한 HF에 감사를 전하는 한편 엔비디아, AMD, 퀄컴, Arm, IBM, 인텔이 지원한 하드웨어도 함께 나열했다. 버전 약속을 지켜낼 수 있을지는 앞으로 나올 몇 차례의 마이너 버전에서 인터페이스를 슬쩍 바꾸지 않는지에 달려 있다.
참고 출처: Hugging Face 블로그, llama.cpp GitHub 릴리스 페이지, CocoLoop, llama.cpp 저장소 README. 릴리스 페이지에서 1.0 신규 기능, 인터페이스 정리 범위, 백엔드 목록을 확인했다.