[기획: AI 트렌드] 같은 날 머지된 Kimi K3.1 지원, 기록상 llama.cpp는 글 생성까지, vLLM은 코드 불러오기까지
열린 날 바로 닫힌 지원 요청
11월 6일, AI 모델 실행 프로그램 llama.cpp에 Kimi K3.1 Pro(이하 K3.1) 텍스트 모델 지원이 합쳐졌습니다. 이런 프로그램을 이 글에서는 엔진이라 부릅니다. 코드 변경 요청을 PR이라 하고, 관리자가 그 변경을 본 코드에 합치는 일을 머지라 합니다.
PR을 낸 개발자 usrlocalben은 같은 날 이 모델의 지원을 요청하는 이슈도 열었습니다. 이슈는 기능 요청이나 오류 보고를 올리는 게시글입니다. 관리자 ngxson은 그날 PR을 머지하고, 이 이슈를 PR로 「완료」 처리해 닫았습니다. 이슈에는 댓글이 하나도 달리지 않았습니다. 이 변경은 릴리스 b12180에 들어갔습니다.
이 모델은 Moonshot AI가 10월 23일 발표했습니다. 가중치는 학습으로 정해진 모델 내부의 수치 전체입니다. 회사는 가중치를 11월 4일까지 공개하겠다고 밝혔고, 우리는 이를 OpenAI가 토큰 단가를 반으로 내린 GPT-6.1 Terra, 같은 날 매긴 사이버 등급은 「Critical」이었다에서 전했습니다.
93층 가운데 24층에 붙은 인덱서
모델은 글을 토큰이라는 조각으로 잘라 읽습니다. 다음 토큰을 정할 때는 앞 토큰들 가운데 무엇을 얼마나 참고할지 계산합니다. 이 계산을 어텐션이라 합니다.
앞 내용 전부를 참고하면 풀 어텐션, 골라낸 일부만 참고하면 희소 어텐션입니다. 일부를 고르는 모듈은 인덱서라 부르며, 둘 다 「아직 지원하지 않는다」던 검사 4줄, vLLM에서 GLM-5.3에 CUDA 그래프가 허용되자 한 구성의 출력 처리량이 약 2.6배에서 다룬 개념입니다.
모델은 같은 구조의 계산을 여러 겹 쌓아 만들고, 그 한 겹을 층이라 합니다. PR 설명에 따르면 새 모델은 앞선 모델 K3의 구조 대부분을 그대로 씁니다. MLA는 K3의 풀 어텐션 층이 쓰던 방식으로, 앞 내용을 압축해 저장합니다(우리 설명). 새 모델에서는 이 MLA 층에 DSA가 들어갔습니다. 압축해 저장하는 방식은 그대로 두고, 인덱서로 고른 일부만 참고하게 바꾼 것입니다.
체크포인트는 학습된 가중치를 저장해 둔 파일입니다. 릴리스 설명에는 「이 체크포인트에서는 93층 가운데 24층에 인덱서가 있다」는 문장이 있습니다. 넷 중 하나를 조금 넘는 비율입니다.
어텐션 층이 앞 토큰마다 계산해 둔 결과를 저장했다가 다시 쓰는 저장소를 KV 캐시라 합니다. llama.cpp는 인덱서가 있는 층에 MLA 방식의 캐시를 둡니다.
KDA라는 다른 종류의 층에는 순환 상태를 둡니다. 순환 상태는 앞 내용을 토큰마다 쌓지 않고, 새 토큰을 읽을 때마다 고쳐 쓰는 상태 하나입니다. KV 캐시가 영수증을 모두 모아 두는 방식이라면, 순환 상태는 가계부 잔액 한 줄만 고쳐 적는 방식입니다(우리 비유). llama.cpp는 두 저장 방식을 한 모델 안에서 함께 다루는 하이브리드 메모리를 넣었습니다.
지원 요청 이슈 본문에서 이 변화는 K3와 「조금」 다른 정도로 적혀 있었고, 구현 제안도 「s/MLA/DSA」 한 줄이었습니다. MLA라는 글자를 모두 DSA로 바꾸라는 치환 명령 표기입니다.
같은 이슈에는 변환기가 새 모델 식별자와 인덱서의 수치 묶음(텐서)을 알아보도록 고쳐야 한다는 문장도 있었습니다. 변환기는 원래 체크포인트를 llama.cpp용 파일 형식(GGUF)으로 바꾸는 프로그램입니다. 작성자는 인덱서가 매긴 점수가 높은 상위 k개 토큰만 남기는 top-k 마스크 구현도 기존 어텐션 함수에서 떼어 내 따로 쓸 수 있게 했습니다. 이름 치환만으로 끝난 일은 아니었던 셈입니다(우리 판단).
vLLM은 같은 날, 다섯으로 나눈 PR 가운데 첫 번째를 머지했다
같은 날 서버용 엔진 vLLM에도 이 모델의 PR 하나가 머지됐습니다. 서버용 엔진은 모델을 서버에 올려 여러 사용자의 요청에 답을 돌려주는 프로그램이고, 이 일을 서빙이라 합니다.
vLLM PR의 작성자는 지원 작업을 PR 다섯 개로 나눠 넣기로 하고, 이 PR에 「분할 1/5」를 달아 직접 머지했습니다. 첫 PR에는 모델 파일과 엔비디아 GPU에 맞춘 생성(decode) 계산 코드, KDA 층과 DSA 층을 함께 담는 하이브리드 캐시가 들어갔습니다.
그런데 PR 설명에는 세 번째 PR이 들어오기 전까지 「불러올 수는 있지만 서빙은 하지 않는다」고 적혀 있었습니다. 여기서 불러오기(import)는 프로그램이 이 모델의 코드를 읽어 들이는 단계입니다.
첫 PR에도 계산 코드와 캐시 틀은 들어갔지만, 분할표는 KV 캐시·어텐션 변경을 세 번째 PR 항목으로 적었습니다. 첫 PR에 적힌 검증은 코드를 불러오는 시험과 코드 형식·타입 검사 통과까지였습니다. 모델 시험과 여러 GPU에 나눠 돌리는 서빙 시험은 세 번째 PR로 미뤘습니다. 우리가 본 PR 페이지에서는 성능 측정 언급을 찾지 못했습니다.
AMD GPU용 작업을 담은 네 번째 PR은 11월 4일에 열렸고, 우리가 열람한 시점에는 아직 머지 전이었습니다. 이 PR의 AMD GPU 검증 항목은 「TODO(할 일)」로 남아 있었습니다.
같은 「지원」, 서로 다른 단계
릴리스 설명에 따르면 llama.cpp 지원은 「지금은 텍스트만」이고, 이미지 입력을 처리하는 부분은 건너뛰었습니다. 양자화는 수치의 정밀도를 낮춰 메모리를 아끼는 방법입니다. 입력마다 일부만 골라 쓰는 전문가 부분은 정밀도를 되돌리지 않고, MXFP4라는 양자화 형식 그대로(배열만 K3처럼 다시 짜서) 씁니다.
llama.cpp PR 작성자 usrlocalben은 체크포인트 변환과 몇 가지 양자화를 「문제없이」 시험했다고 적었습니다. 우리가 본 PR 페이지에서는 그 시험의 속도나 품질 수치를 찾지 못했습니다. PR의 자동 점검 30개가 통과했습니다.
그는 PR의 AI 사용 공시란에 「예」라고 답하고, 작업 대부분을 다른 AI 모델(DsV41F-1017)로 했다고 밝혔습니다. 구현이 동작한 뒤에는 코드 검토도 이 K3.1 구현으로 했다고 적었습니다.
같은 PR에 댓글을 단 sanmai는 tiny-random이라는 시험용 체크포인트로 변환을 시험했다고 적었습니다. 글 생성 도구가 CPU와 엔비디아 GPU(CUDA)에서 「같은 토큰을 낸다」는 내용이었습니다.
tiny-random은 시험용 체크포인트로, 학습된 실제 가중치가 아닙니다. 이 확인으로 알 수 있는 것은 새 코드가 두 하드웨어에서 끝까지 돌고 같은 토큰을 낸다는 점이지, 원래 모델과 똑같이 계산하는지나 실제 글 품질이 아닙니다(우리 판단). 실제 가중치가 일반에 공개됐는지도 우리는 확인하지 못했습니다.
우리는 엔진이 새 모델을 지원하는 과정을 네 단계로 나눠 봅니다(우리 구분 · 엔진마다 경계가 다르고 순서가 엄격하지는 않습니다). 코드를 불러온다 → 글을 생성한다 → 서버로 요청을 받는다 → 실제 가중치로 속도와 품질을 잰다.
같은 날 머지된 vLLM 첫 PR은 설명에 적힌 그대로 첫 단계에 있습니다. llama.cpp에서 기록으로 확인되는 것은 둘째 단계까지이고, 셋째 단계 기록은 이번에 보지 못했습니다(우리 판단). usrlocalben은 동작하는 구현을 코드 검토에 썼다고 적었고, sanmai는 시험용 체크포인트로 생성 경로가 돈다는 것을 확인했습니다. 마지막 단계의 숫자는 우리가 본 두 엔진의 PR 페이지에서 찾지 못했습니다.
「두 엔진 모두에서 K3.1을 돌릴 수 있게 됐다」는 읽기는 기록과 맞지 않습니다. 정확한 읽기는 「두 엔진의 K3.1 지원이 서로 다른 단계까지 들어왔다」입니다(우리 판단 · 확신도 비교적 높음).
유의
"캐스케이드 ①(Kimi K3.1 Pro DSA 하이브리드 — llama.cpp PR출처
- 기준일 = 2026년 11월 7일 오전(한국 시간).
- 이번에 원문을 직접 연 것은 GitHub 페이지뿐입니다. vLLM PR #65685는 한 번 열람했고, 나머지는 다시 열어 핵심 문장을 짧은 인용으로 대조했습니다. 요약 모델을 거쳐 내용을 돌려주는 웹 열람 도구(WebFetch)로 읽어 문단 전문을 한 줄씩 맞춰 보지는 못했습니다. 모델 배포 사이트 Hugging Face는 열리지 않았고, GitHub 시각은 시간대 표기가 없는 경우가 많아 날짜만 적었습니다.
- 이해관계: Refract는 Anthropic의 Claude로 글을 분석하고 씁니다. 이 글이 다룬 llama.cpp PR의 작성자는 작업 대부분을 다른 AI 모델(DsV41F-1017)로 했다고 공시했습니다.
- 지원 요청 이슈(2026-11-06 개설·종결)·구조 변경 설명·변환기 수정 필요·「s/MLA/DSA」 제안 — 1차, 직접 열람 ggml-org/llama.cpp 이슈 #31778
- 텍스트 모델 지원 PR(2026-11-06 개설·머지)·구조 변경 범위·작성자 시험(자기보고)·리뷰 댓글·AI 사용 공시 — 1차, 직접 열람 ggml-org/llama.cpp PR #31779
- 릴리스 b12180 설명(층 구성·하이브리드 메모리·텍스트 한정·MXFP4 유지) — 1차, 직접 열람 llama.cpp b12180
- vLLM 분할 1/5(2026-11-06 머지)·분할 계획·서빙 미지원 문구·검증 범위 — 1차, 직접 열람 vllm-project/vllm PR #66030
- vLLM 분할 4/5(2026-11-04 개설 · 열람 시점 미머지)·AMD GPU 검증 TODO — 1차, 1회 열람 vllm-project/vllm PR #65685
- Kimi K3.1 Pro 발표(2026-10-23)·가중치 공개 예정 일정(회사 자기보고) — 우리 이전 글 OpenAI가 토큰 단가를 반으로 내린 GPT-6.1 Terra, 같은 날 매긴 사이버 등급은 「Critical」이었다에서 인용(원출처 Moonshot AI 블로그 · 검색 요약 경유)
- 희소 어텐션·인덱서 정의 — 우리 이전 글 「아직 지원하지 않는다」던 검사 4줄, vLLM에서 GLM-5.3에 CUDA 그래프가 허용되자 한 구성의 출력 처리량이 약 2.6배에서 인용(원출처 DeepSeek-V3.2-Exp 문서)