ggml-org가 2026-10-28 llama.cpp v0.8.0을 공개했다. LiquidAI의 LFM3 계열(텍스트, 비전, 오디오, 옴니)을 지원하고, 서버가 오디오를 실시간으로 받고 내보내는 /v1/realtime과 /tts 엔드포인트를 새로 넣었다.1
멀티모달 라이브러리 mtmd에는 실험 단계의 스트리밍 오디오 API가 추가됐다. 새 아키텍처 여러 개와 UI의 모델 검색·다운로드 기능도 들어갔고, 내부 연산 라이브러리 ggml은 v0.27.0에서 v0.28.0으로 올랐다. v0.8.0 릴리스는 21:47에 게시됐다. 버전을 0.8.0으로 올린 커밋을 담은 nightly 빌드 b11960은 그보다 2분 앞선 21:45에 올라왔고, 릴리스 노트의 자산 항목이 이 빌드를 가리킨다. 빌드에는 macOS/iOS, Linux, Android, Windows용 바이너리가 있으며 openEuler 항목은 비활성 상태다.1,2
LFM3 지원과 실시간 오디오
LFM3 계열에서는 텍스트 모델 LFM3-1.7B와 비전 모델 LFM3-VL-2B가 먼저 들어왔다. 두 모델은 참조 구현인 Hugging Face 코드와 대조해 검증했다고 릴리스 노트에 적혀 있다.
LFM3-Audio-2B와 LFM3-Omni-2B는 모델 하나로 음성 인식, 음성 합성, 음성 대화를 처리하며 오디오 입력과 출력을 스트리밍으로 지원한다. 이후 커밋에서는 LFM3 계열의 비디오 입력 지원도 켰다.
서버의 /v1/realtime은 OpenAI 실시간 프로토콜을 구현한 엔드포인트로, 대화와 받아쓰기를 처리한다. 커밋 기록에는 이 엔드포인트에서 도구 호출을 지원하는 변경도 있다. 릴리스 노트에 따르면 서버는 커밋된 오디오가 모두 나간 뒤에 response.done을 보내며, 이 변경의 커밋 제목은 '완료 신호 전송(send complete)'이다. POST /tts는 음성 합성 모델용 엔드포인트다.
mtmd에 들어온 mtmd_audio_stream API는 도착하는 대로 입력한 PCM 오디오를 디코더가 바로 쓸 수 있는 임베딩 행으로 바꾼다. 이 API로 voxtral-realtime 모델도 지원하게 됐다. 오디오 생성 API는 상태를 갖는 방식으로 바뀌어, 기존의 state_data 버퍼 대신 mtmd_gen_state를 쓴다. mtmd_caps에는 gen_audio가 추가됐고 TTS 유형으로 SOPRANO와 LFM3A가 생겼다. mmproj 파일의 기능을 조회하는 mtmd_helper_get_capabilities()도 새로 나왔다.1
서버를 직접 운영하는 개발자라면 이번 버전의 /v1/realtime과 /tts로 별도 음성 서비스 없이 로컬 모델에 음성 입출력을 붙여 볼 수 있다. 다만 mtmd_audio_stream은 실험 API로 표시돼 있고 mtmd_gen_state가 기존 버퍼를 대체했으므로, 오디오 생성 API를 쓰는 코드는 갱신해야 한다.
새로 지원하는 모델
LFM3 외에 아키텍처 지원이 대거 추가됐다. 릴리스 노트의 신규 모델 목록은 다음과 같다.
- LiquidAI d1-2B, d1-omni-2B: 결정 모델
- Granite Switch Decision: 256갈래 결정 헤드 포함
- H2O-Lightning-4B: 결정 모델
- Nemotron-3(.5)-Embed: 임베딩 모델로, 표준과 다른 GQA와 BPE 토크나이저 지원이 함께 들어갔다
- DeepSeek V4.1 Flash, SenseNova U1, Beam(Reflection), Kolibri-1(Aleph-Alpha), Flint
- Muse Spark Open: 텍스트, 비전, 오디오
- MiniCPM-OCR 1.0, MiniCPM-OCR-Jev, Soprano TTS
이미지 전처리는 transformers·torchvision과 맞췄다. LFM2의 크기 조정, 타일, 레이아웃과 Qwen-VL 크기 조정이 해당하며, LFM2 타일링 매개변수는 GGUF 메타데이터에서 읽는다. lightonocr은 최장변을 1540으로 강제하던 방식을 버리고 원본 해상도를 기본값으로 쓴다.1
코어와 서버 변경
호스트 메모리에 두는 전문가 혼합 전문가용 캐시가 단순 LRU에서 50/50 SLRU 캐시로 바뀌었다. 희소 어텐션(QSA/DSA)은 결합된 마스크 연산을 쓰도록 고쳤고, kq_mask 없이 선택을 구성하며 레이어 간에 k-pool 뷰를 공유한다. 모든 메모리 캐시가 no_alloc을 따르도록 했고 불필요해진 n_pad는 없앴다. 텐서 병렬에서는 stepfun과 laguna 아키텍처가 4~10개 GPU를 쓸 수 있다. 다만 같은 릴리스에서 MoE amax 재조정을 쓰는 아키텍처는 -sm tensor 옵션이 거부되며, laguna에는 이 재조정이 켜졌다.
추측 디코딩에서는 동적 n-gram 캐시를 파일로 저장하고, DFlash2 초안에 확률적 샘플링을 확장했으며, DFlash의 FC 입력 스케일을 선택적으로 읽는다. 서버는 추측 디코딩과 logprobs를 함께 쓸 수 있게 됐다. 또 채팅 템플릿의 추론 강도 단계를 API로 노출해 고를 수 있고, 지연된 도구(deferred tools)와 tool_reference 콘텐츠 부분을 Chat API가 받는다.
라우터는 모델을 동적으로 내릴 때 쓰는 장치 메모리 여유분을 설정할 수 있다. 클라이언트 연결이 끊기면 자식 작업에 전달하고, 절전에서 복귀할 때 mmproj 여유분을 다시 더하던 오류를 고쳤다. 재순위 엔드포인트는 유형이 있는 콘텐츠 입력을 받는다. Anthropic /v1/messages 호환 경로는 llama.cpp 샘플링 매개변수를 전달하고 id_slot도 변환 과정에서 넘긴다. n이 1보다 클 때 usage.completion_tokens가 적게 집계되던 오류와 Responses API SSE 이벤트의 output_index 누락도 고쳤다. 새 --connect 플래그는 LAN 밖에서 서버에 p2p로 접근하게 한다.
CLI에서는 이제 --model 또는 -hf 지정이 필수다. DRY 샘플러에는 서로 다른 시퀀스 구분자 수를 64개로 제한하는 LLAMA_DRY_MAX_SEQ_BREAKERS가 생겼다. 구분자마다 초기화에 어휘 크기에 비례하는 비용이 들기 때문이며, 커밋 기록에는 이 구분자로 CPU와 메모리가 고갈되던 문제를 고쳤다고 적혀 있다.
문법 처리에는 재귀 깊이 제한이 들어가 스택 오버플로를 막고, 깊게 중첩된 JSON은 순회하기 전에 거부한다. 커밋 기록상 중첩 128단계 초과가 기준이다. GGUF 도구의 split, export-lora, merge는 잘린 텐서 데이터를 거부한다. 공통 코드는 HTTP_PROXY, HTTPS_PROXY 환경변수를 따르고 프로세스 간 동시 다운로드를 허용한다.
토크나이저는 clean_spaces와 metaspace 앞붙임 방식을 위한 GGUF 키가 새로 생겼고, Pixtral에는 Tekken 사전 토크나이저를 쓴다. 변환 도구와 LoRA 쪽에서는 Qwen 텐서를 변환 시 병합하고, Qwen3의 양방향 어텐션과 dense_2 출력 투영을 지원하며, prism.hadamard로 접힌 가중치를 처리한다.1
UI와 ggml 갱신
웹 UI에서는 Hugging Face Hub의 모델을 바로 찾아 내려받을 수 있고, 조직 이름이 없는 모델이 먼저 나온다. 대화와 메시지를 검색하는 창이 생겼고, 긴 대화를 컨텍스트 안에 유지하도록 대화 압축을 지원한다. 모델 관리자는 별도 경로로 분리됐으며 모델 상세는 페이지를 떠나지 않고 서랍 창으로 열린다.
추론 메뉴는 채팅 템플릿의 강도 단계로 구성되고, OGG 오디오 첨부는 WAV로 변환해 처리한다. '진행 중인 도구 호출 표시' 설정이 새로 생겼고, 저장·초기화 버튼은 저장하지 않은 변경이 있을 때만 나타난다. 시스템 메시지를 추가한 뒤 초안이 사라지던 문제, WebKit에서 시스템 행이 늘어나던 문제, 첨부 텍스트 미리보기가 잘리던 문제, 휴대폰에서 마크다운 표와 목록이 잘리던 문제도 수정됐다.
ggml v0.28.0 갱신으로 GGML_OP_TOP_K_MASK 연산이 들어왔다. MUL_MAT_ID와 ADD_ID에서는 -1이 유효한 전문가 인덱스가 되어, 해당 슬롯은 건너뛰고 출력 행을 0으로 채운다.
백엔드 성능 작업도 많다. CUDA는 그래프를 덩어리로 나눠 실행 비용을 분산하는 방식을 택했고, SYCL은 그래프 기록·재생을, OpenCL은 Q2_K·Q3_K 가중치와 라이트닝 인덱서를 지원한다. Vulkan에는 서브그룹 감소 연산과 src1 정밀도 지원이 들어갔다. Hexagon HTP 백엔드는 구조를 다시 짰고, ZDNN에는 플래시 어텐션이, WebGPU에는 Q2_0이, KleidiAI에는 SVE GEMV·GEMM 커널이 추가됐다.1
출처
- ggml-org/llama.cpp v0.8.0 github.com
- ggml-org/llama.cpp b11960 github.com