DeepSeek V4.1 Flash는 V4-Flash보다 파라미터가 두 배 가까이 늘었는데, 토큰 하나마다 들고 있어야 하는 KV cache는 4분의 1로 줄었다. post-training 쪽은 조용하다. SFT, 강화학습(RL), on-policy distillation(OPD) 순서의 V4 레시피에서 알고리즘은 하나도 고치지 않았다 [1]. 크게 손댄 곳은 구조, inference 비용, pre-training 데이터 세 군데이고, post-training은 방법을 고정한 채 데이터와 환경의 양만 늘렸다 [1]. 보고서 표현으로는 널리 쓰이는 관행 이상의 수정이 없었고 “실질적인 변화는 모두 데이터 파이프라인에 있다” [1].
예전에 object detection·segmentation 모델을 줄여서 compute 예산이 빠듯한 하드웨어에 올리는 일을 했다. 그런 작업에서 병목은 연산량보다 메모리인 경우가 많다. FLOPs는 남는데 모델이 안 들어가거나, 데이터를 옮기는 대역에서 시간이 다 샜다. 그래서 KV cache 압축을 전면에 내건 이 보고서 제목을 보고 바로 열었다. 생성형 모델에서 같은 싸움이 datacenter 규모로 다시 벌어지고 있었다.
읽은 대상은 Hugging Face에 올라온 기술 보고서 원문 51쪽이다. 2026년 10월에 본문과 표, 그림에 나온 숫자를 서로 맞춰 보며 적은 메모다 [1]. 그림은 MIT 라이선스라 보고서 것을 그대로 썼다. 직접 모델을 돌려 결과를 재현한 건 아니고, DeepSeek과 이해관계도 없다. 이 글의 벤치마크 점수는 전부 DeepSeek이 스스로 낸 값이다.
모델은 커졌는데 쓰는 양은 줄었다
총 크기와 실제 사용량이 반대 방향으로 움직였다 [1]. 보고서 표 1을 보면 V4.1 Flash 본체는 552B로, 284B였던 V4-Flash의 거의 두 배다. 그런데 토큰 하나가 지나갈 때 켜지는 파라미터는 prefill(입력 처리)에서 8B, decode(생성)에서 16B에 그친다 [1]. 같은 값이 V4-Flash는 13B, 덩치가 더 큰 V4-Pro는 49B였다 [1].
| 구분 | V4-Flash | V4-Pro | V4.1-Flash |
|---|---|---|---|
| 총 파라미터 | 284B | 1.6T | 552B |
| 토큰마다 켜지는 파라미터 | 13B | 49B | prefill 8B / decode 16B |
| 토큰마다 쌓이는 global KV cache | 3,514바이트 | 보고서에 없음 | 890바이트 |
| modality | 텍스트만 | 텍스트만 | 처음부터 텍스트·이미지 공동 학습 |
표 1. 수치 출처는 보고서 표 1과 그림 1(b)다 [1]. 표에는 넣지 않았지만 V4.1 Flash에는 196B짜리 Engram memory 파라미터가 별도로 있다.
KV cache란 이미 읽은 토큰을 매번 다시 계산하지 않도록 층별로 보관해 두는 중간 결과다. agent가 tool을 수십 차례 호출하며 대화가 길어지면, 모델이 새로 써 내는 분량보다 다시 읽어 들이는 입력이 훨씬 커진다 [1]. 이런 workload에서 비용 상한을 정하는 건 연산이 아니라 KV cache를 담아 둘 공간과 옮기는 대역이라는 게 보고서의 진단이고, 모델 전체를 이 병목 기준으로 새로 짰다 [1]. 작은 하드웨어에서 내가 부딪히던 벽이 여기서는 설계의 출발점이 되어 있다.
세대를 거슬러 올라가면 감소 폭이 더 눈에 띈다. 토큰당 global KV cache 크기는 2023년 11월 V1에서 389,120바이트, 2025년 12월 V3.2에서 48,068바이트, 2026년 4월 V4-Flash에서 3,514바이트였고, 2026년 9월 V4.1-Flash는 890바이트다 [1]. V1과 비교하면 437분의 1 수준이다 [1].

그림 1. V4-Flash에서 3,514바이트였던 토큰당 global KV cache가 V4.1-Flash에서 890바이트가 됐다 [1].
KV cache를 줄인 네 가지 장치
기법 하나로 줄인 게 아니라 네 개를 포갰다. 각각 KV를 만드는 층의 수, 층끼리 나눠 쓰는 정도, 저장 비트 수, 다시 계산해야 하는 범위를 겨냥한다 [1].
Causal encoder-decoder(CED). 40층을 반으로 갈라 아래 20층은 encoder, 위 20층은 decoder로 쓴다. decoder 층은 global KV를 자기 은닉 상태로 만들지 않고, encoder 마지막 층의 은닉 상태를 곧바로 투영해 얻는다 [1]. 보고서는 이 설계가 YOCO의 발상을 확장한 것이라고 적었다 [1][2].
\[C_l = H_{L/2}\,W^{KV}_l,\qquad Z_l = H_{L/2}\,W^{Z}_l,\qquad l > L/2\]$L$은 전체 층 수 40이고, $H_{L/2}$는 encoder의 마지막인 20번째 층의 은닉 상태다. $C_l$과 $Z_l$은 decoder의 $l$번째 층이 가져다 쓰는 KV와 압축 가중치다. 그래서 prefill에서는 encoder 20층까지만 계산을 끝내면 decoder가 쓸 KV가 모두 준비되고, prefill 연산량이 대략 반으로 준다 [1]. 활성 파라미터가 prefill 8B, decode 16B로 두 배 차이 나는 것도 이 구조 때문이다 [1].
CSA2와 세 가지 층 모드. V4에는 compressed sparse attention(CSA)과 heavily compressed attention(HCA) 두 종류가 섞여 있었고, V4.1은 이를 CSA2로 통일했다 [1]. 층마다 모드가 Full, Reindex, Reuse 가운데 하나로 정해진다. Full 층은 KV를 직접 만들고 어느 위치를 읽을지도 스스로 정한다. Reindex 층은 KV를 앞 층에서 빌리되 읽을 위치만 새로 뽑는다. Reuse 층은 KV와 선택된 위치를 모두 앞 층에서 가져온다 [1]. 배치는 encoder가 6층 단위로 Full 1개와 Reuse 5개, decoder가 4층 단위로 Full이나 Reindex 1개와 Reuse 3개다. KV를 따로 들고 있는 층이 소수인 이유다 [1]. decoder에서는 맨 앞 Full 층이 후보 위치를 많게는 16,384개까지 먼저 걸러 두고, 이후 Reindex 층들은 이 후보 안에서만 고른다. 덕분에 위치 선택 비용이 context length를 따라 늘지 않는다. 다만 맨 앞 Full 층의 채점 범위는 여전히 문맥 전체다 [1].
FP4 KV cache. 주 KV를 4비트로 저장한다. 형식은 E2M1이고, 16채널에 E4M3 스케일 하나가 붙는다. V4가 8비트로 저장하던 것에 비하면 필요한 공간이 대략 반이다 [1]. 양자화 효과는 post-training에서 미리 학습에 반영했고, 정밀도를 많이 타는 로컬 창 KV만 8비트를 유지했다 [1].
SWA Bounded Replay. 층마다 직전 128토큰만 참조하는 sliding-window attention(SWA)이 같이 붙어 있다 [1]. V4는 이 로컬 KV도 SSD에 보관했는데, 그게 저장 용량의 거의 절반이었다 [1]. V4.1은 로컬 KV를 SSD 영구 캐시 대상에서 뺐다. 서버마다 호스트 메모리의 10%를 떼어 풀을 만들고 거기에 몇 분만 둔다. 풀에 없을 때만 최근 128토큰을 다시 계산해 근사적으로 되살린다 [1]. 원래 상태를 정확히 되살리려면 층 수 × 128토큰만큼 재계산이 필요하다. 그러나 실제로 영향이 미치는 범위가 그보다 훨씬 좁다는 이전 관찰이 있어서 범위를 잘랐고, 보고서는 품질 손실이 무시할 정도였다고 말한다 [1]. 로컬 KV를 빼서 생긴 절반과 global KV의 4분의 1 축소가 곱해지면서, 장기 저장 KV는 V4-Flash의 8분의 1로 내려갔다 [1].

그림 2. decoder KV는 encoder 20층의 출력에서 나오고, 층 대부분은 앞 층의 KV를 다시 쓴다 [1].
네 장치가 겹친 결과, decode에서 토큰 하나를 만드는 연산량이 context length와 거의 무관해졌다. context를 4K에서 1M까지 256배 늘렸을 때 연산량은 4분의 1만큼 늘어나는 데 그쳤다 [1]. 이 보고서에서 내가 가장 오래 들여다본 숫자다. decode 비용이 입력 길이에 묶이지 않으면, 긴 문맥을 다루는 agent 작업은 비용 곡선 자체가 달라진다.
구조에서 더 바뀐 것
KV 말고도 구조 변경이 셋 더 있다 [1]. Engram은 기억과 계산을 분리하려는 조건부 memory 모듈이다. 2개, 3개, 4개짜리 토큰 묶음을 해시 키로 조회하는 196B 규모 embedding 표이고, 0부터 셌을 때 1번과 14번 층에 연결돼 있다 [1]. 조회 주소가 입력 토큰만 보고 결정되므로, 계산이 도는 동안 호스트 메모리에서 미리 가져다 둘 수 있다 [1]. DSpark는 speculative decoding 모듈이다. 한 번에 5개 위치 분량의 초안을 만든 뒤 확신도를 보고 검증 길이를 정한다. V3의 multi-token prediction(MTP)은 본체와 함께 학습했지만, DSpark는 pre-training이 끝난 뒤 별도로 붙였다 [1]. Single-Pass mHC는 V4에 들어온 다중 residual stream의 계수를 블록 하나만큼 늦춰 적용한다. 이렇게 하면 배포용 커널 하나로 처리되고 메모리 왕복이 절반이 된다 [1].
학습 쪽 변경도 있다. 어텐션 head별로 전처리를 따로 하는 head-wise Muon을 도입했고, Engram과 embedding 표는 Adam 대신 Sinkhorn 정규화 갱신으로 바꿔 optimizer가 차지하는 메모리를 줄였다 [1]. pre-training 데이터는 이미지와 텍스트가 섞인 45T 토큰이다. sparse attention은 처음부터 64K 길이로 학습하다가 34T 토큰 지점에서 100만 토큰 길이로 확장했다 [1].
post-training은 바뀌지 않았다
post-training 방법은 그대로다 [1]. 보고서 5.1절에 따르면 이번 버전에 새로 들인 post-training 알고리즘은 없다. supervised fine-tuning(SFT) 다음 강화학습(RL), 그 다음 on-policy distillation(OPD)으로 가는 표준 순서를 V4 때 방식 그대로 따랐고, 잘 알려진 관행을 벗어나는 수정은 하지 않았다 [1]. 노력은 거의 전부 최적화 방법보다 학습 재료에 들어갔다. 평범한 최적화 절차를 고정해 두고 합성 데이터와 환경을 더 크고, 더 다양하고, 더 검증 가능하게 만들었으며, post-training에서 본 향상은 거의 이것으로 설명된다는 게 보고서의 설명이다 [1]. pre-training은 사정이 다르다. 45T 토큰 멀티모달 코퍼스와 Engram, head-wise Muon이 새로 들어갔고, 보고서는 기반 모델이 좋아진 이유로 데이터 정제 개선을 든다 [1].
on-policy distillation에서는 학생 모델이 스스로 생성한 답을 교사 모델이 토큰마다 채점하고, 학생은 그 분포에 맞춰 간다 [3][4]. 학습이 학생이 실제로 밟을 경로 위에서 일어나므로, 교사가 써 둔 답을 보고 베끼는 보통의 distillation보다 실사용 분포와의 어긋남이 적다 [4]. V4.1에서는 이 단계가 post-training 맨 끝에 있다. 도메인별로 성적이 가장 좋은 교사 모델을 40개 넘게 썼고, 교사들의 구조가 서로 달라도 그대로 연결했다 [1].
| 영역 | 변경 |
|---|---|
| 과제 생성 | 모델이 (문제, 환경, 검증 시스템) 세트를 직접 만들고, 난이도와 정확성을 보상 삼아 이 생성 능력을 학습 |
| 일반 agent 환경 | 내부·외부 사용 기록을 보고 실제 tool 인터페이스를 흉내 낸 모의 tool을 대량으로 만들고, 실패했던 사례를 재현해 학습 |
| 코딩 agent 환경 | 여러 agent가 공개 저장소를 컨테이너 과제로 바꾸고, 검수·수리를 맡은 별도 agent가 확인 |
| 추론 노력 조절 | 시스템 프롬프트에 1–100 범위의 노력 값을 주고, 그 값에 따라 길이 벌점을 달리해 학습 |
| 학습 인프라 | rollout과 학습을 비동기로 분리, 오래된 샘플의 토큰은 loss 계산에서 제외 |
| 최종 distillation | 모든 도메인 데이터에 교사 40개 이상을 붙인 full-vocabulary on-policy distillation |
표 2. post-training에서 달라진 항목은 하나같이 데이터, 환경, 인프라에 속한다 [1]. 보고서 5.1–5.2절 내용을 내가 항목별로 묶었다.
agent 작업에서 성능이 크게 뛰었다. 표 3의 최대 노력 설정으로 V4-Flash와 V4.1-Flash를 비교하면 DeepSWE v1.1이 54.4에서 74.2, Terminal-Bench 2.1이 82.7에서 90.6, Automation-Bench가 37.7에서 54.8이 됐다 [1]. 이 상승분에는 284B에서 552B로 늘어난 파라미터와 pre-training 변경의 효과가 섞여 있다. 보고서가 못 박는 건 post-training 알고리즘이 그대로라는 점이다 [1]. 새 레시피 없이 데이터와 환경을 키워서 여기까지 왔다고 스스로 밝힌 대목이, 모델을 직접 학습시키지 않는 나에게는 가장 쓸모 있는 신호였다.

그림 3. post-training 레시피는 V4와 동일한데 agent 벤치마크 점수는 크게 뛰었다(DeepSeek 자체 보고, 일부 항목만) [1].
추론 노력 값은 그대로 비용 조절 손잡이가 된다. 공개 API의 low, high, max가 각각 노력 값 50, 75, 100이다. 노력 값을 25에서 100으로 올리면 출력 토큰은 2.5배 정도 늘고, DeepSWE 점수는 66.0에서 74.2가 된다 [1]. 보고서에 따르면 60에서 80 사이 설정이 토큰을 절반도 안 쓰면서 최대 설정 정확도의 대부분을 낸다 [1].
이 보고서의 한계
저자들이 직접 든 한계는 두 가지다. 하나는 CSA2의 위치 선택이 빗나가거나 SWA 상태를 근사로 복원하는 과정이, 시험해 보지 않은 극단 조건에서 성능을 깎을 수 있다는 점이다 [1]. 다른 하나는 벤치마크가 포화돼 점수가 비슷해 보여도, 가장 어려운 과제에서는 최상위 폐쇄형 모델과 아직 차이가 있다는 점이다 [1].
내가 덧붙이는 한계도 있다. 점수는 하나같이 DeepSeek이 자체 측정한 것이고, 구조 변경과 데이터 변경의 기여를 갈라 본 실험이 없다. 외부에서 실제로 써 본 측정 두 건은 둘 다 토큰 사용량이나 속도 면에서 불리하게 나왔다. 10월 17일 업데이트 버전으로 직접 비교한 한 실사용 테스트는 화면 구현 점수는 올랐지만 토큰 소모가 40% 늘었다고 했고, DeepSeek 쪽 주장은 그 반대라고 덧붙였다 [5]. PR 리뷰 벤치마크에서는 V4.1 Flash의 PR 하나당 비용이 0.42달러로 싼 편이었지만, 걸린 시간은 6분 32초로 GPT-6 Sol의 2분 17초보다 길었다 [6]. 이 벤치마크를 낸 회사가 모델 라우팅 서비스를 판매한다는 점도 감안해야 한다. 두 측정 모두 표본과 과제 범위가 좁아서 경향 정도로만 받아들인다.
내가 이 보고서에서 가져가는 것
이 절은 보고서가 아니라 내 해석이다. 나는 모델을 학습시키기보다 모델 위에 제품을 얹는 일을 하고, 그 전에는 모델을 작은 하드웨어에 맞게 줄이는 일을 했다. 두 입장에서 읽고 남은 것이 세 가지다.
첫째, 벤치마크 표에는 드러나지 않는 분해다. 보고서는 비용이 싸진 이유를 구조 변경에서, 성능이 오른 이유를 pre-training 데이터 정제와 post-training 데이터·환경에서 찾는다. 파라미터가 두 배 가까이 커진 효과는 별도로 떼어 내지 않았다 [1]. “V4.1이 더 낫다”는 총점 하나로는 무엇을 바꿔야 점수가 움직이는지 끝내 알 수 없다. 모델을 고르는 입장에서는 총점보다 이 분해가 판단을 바꾼다.
둘째, 비용의 출처다. 입력이 긴 agent 작업에서 돈이 새는 곳은 생성이 아니라 prefill과 KV 저장이다 [1]. on-device에서 FLOPs보다 메모리에 막히던 구조와 같고, 규모만 다르다. 그래서 모델 교체를 따지기 전에 입력 길이와 KV 전략을 먼저 들여다본다.
셋째, effort 값 하나로 비용과 정확도가 함께 움직인다 [1]. 60에서 80 구간이 토큰을 절반 이하로 쓰고도 최대 설정 정확도 대부분을 얻는다는 수치는, 노력 값을 한 자리에 묶어 두지 말고 작업 난이도에 맞춰 조절하라는 뜻으로 읽힌다 [1].
폐쇄형 모델에서는 층 배치나 캐시 크기, 학습 단계가 이만큼 자세히 나오는 일이 드물다. 구조와 가중치를 같이 공개하는 DeepSeek 보고서를 매번 열어 보는 이유가 여기 있다. 모델을 직접 만들지 않는 내 입장에서는 모델 쪽 변화를 가장 가까이서 볼 수 있는 경로다. KV cache 압축이 이 정도까지 진행됐다는 건, 내가 작은 하드웨어에서 다루던 메모리와 연산 사이의 트레이드오프가 frontier 모델 설계의 한가운데로 옮겨 왔다는 뜻이기도 하다.
DeepSeek-AI, “DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression”, Technical Report, Hugging Face (2026, MIT license).
References
- DeepSeek-AI, “DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression”, Technical Report, 2026 (MIT license)
- Yutao Sun et al., “You Only Cache Once: Decoder-Decoder Architectures for Language Models”, 2024
- Yuxian Gu et al., “MiniLLM: On-Policy Distillation of Large Language Models”, ICLR 2024
- Kevin Lu, Thinking Machines Lab, “On-Policy Distillation”, 2025
- Peter Petruš, “New DeepSeek V4.1 Flash (1017). Better results, but at what cost?”, LinkedIn, 2026-10
- Patrick Collins (Dam Secure), PR review benchmark post, LinkedIn, 2026-09-28



