2026년 10월 31일 (토)

PINKSKY NEWS

매일의 기록을 뉴스처럼

테크

Qwen3.8-Flash-Next의 KV 캐시 대부분을 RAM으로 오프로드해도 디코딩 속도 저하는 거의 없다

원문 제목 — You can offload most of Qwen3.8-Flash-Next's KV cache to RAM with little decode slowdown

📄 전문 번역

qwen4exp 기반 모델이라면 누구나 이 방식을 적용할 수 있을 것으로 확신한다. Qwen의 차기 로컬 모델들이 qwen4exp를 기반으로 할 예정이기 때문이다. VRAM에 간신히 맞는 양자화 모델을 쓰면서도 KV 캐시 양자화 없이 모델의 최대 컨텍스트 길이로 구동할 수 있는데, KV 캐시 대부분을 시스템 RAM에 둘 수 있기 때문이다. 실제로 vLLM에서 이를 구현했고 이제 3장의 3090으로 1M 컨텍스트를 확보했다. 짧은 컨텍스트에서는 약 80 tok/s가 나오고 QSA가 2048토큰 예산에 도달하면 약 60 tok/s로 떨어진 뒤에는 총 컨텍스트가 늘어나도 디코딩 속도가 일정하게 유지된다. 처리량도 준수해 동시 요청 4개 기준 약 150 tok/s를 기록하며, 248k 프리필은 3,701 tok/s에 도달한다. 관심 있다면 패치와 모델을 허깅페이스 페이지에서 받을 수 있다.

디코딩 속도는 대역폭 문제다. 각 디코딩 스텝은 토큰 하나를 생성하며, 이를 위해 GPU는 해당 스텝에 필요한 모든 가중치와 어텐션 상태를 읽는다. 단일 스트림에서는 카드가 스텝 대부분을 연산이 아닌 메모리 대기에 소모하므로 스텝당 읽기 크기가 토큰 속도를 결정한다. 일반 모델이 KV 캐시를 VRAM에 유지하는 이유가 바로 이것이다. Qwen3-Next 아키텍처 기반이며 Qwen3.8-Flash-Next(qwen4_exp)와 대부분의 특성을 공유하는 Qwen3.8-27B를 보면, 여전히 몇 개 레이어마다 하나의 풀 어텐션 레이어가 존재하고 풀 어텐션 레이어는 매 스텝마다 전체 KV 캐시를 읽는다. 이 읽기는 컨텍스트와 함께 커지므로 대화가 길어질수록 디코딩이 느려지고, PCIe 같은 호스트 링크가 감당할 수 있는 한계를 넘어 커지기 때문에 캐시는 연산 장치 옆에 있어야 한다.

이 모델의 수치는 문제의 크기를 보여준다. QSA 레이어 하나는 256차원의 키/밸류 헤드 2개를 K와 V로 각 2바이트씩 보유하므로 토큰당 2,048바이트다. 262,144토큰 기준으로 한 레이어당 512MiB이며 12개 레이어 전체로는 매 스텝마다 6GiB에 이른다. PCIe 4.0 x16 슬롯은 약 32GiB/s를 제공하므로 이런 형태의 호스트 상주 캐시로는 초당 약 5토큰이 한계다.

여기서 흥미로운 부분은 Qwen3.8-Flash-Next가 두 가지 방식으로 이 문제를 회피한다는 점이다. 첫째, 48개 레이어 중 12개 레이어만 KV 캐시를 보유한다. 나머지 36개 레이어는 게이트 델타넷 레이어로, 순환 상태 크기가 고정된 선형 어텐션이며 이 상태는 컨텍스트에 따라 커지지 않는다. 둘째, 해당 12개 레이어도 전체 컨텍스트를 어텐션하지 않는다. QSA는 풀링·압축된 키 위에 저비용 인덱서를 구동하는데, indexer_head_dim=128을 indexer_compress_ratio=4로 나눈 값이 풀링 폭이 된다. 인덱서는 최대 indexer_budget=2048개 위치를 선택하고 레이어는 인덱서가 선택한 위치의 메인 KV 행만 읽는다. 따라서 indexer_budget이 디코딩 스텝이 읽는 바이트를 제한하며 컨텍스트 길이는 그렇지 않다. 계산해 보면 선택 위치 2048 × KV 헤드 2 × 차원 256 × 2(K와 V) × 2바이트 = 레이어당 4MiB, 12개 레이어 합산 시 토큰당 48MiB다.

예를 들어 80 tok/s 기준 링크 전송량은 약 3.9GB/s에 불과하다. 이는 PCIe 4.0 x16 슬롯의 극히 일부이며 대부분은 연산과 겹쳐 처리된다. GPU에 상주해야 하는 것은 많지 않다. 모델 자체와, 2바이트 슬롯에 풀링된 인덱스 키를 더한 1 × (128/4) × 2바이트 = 64바이트다. 이를 합치면 레이어당 토큰당 66바이트로, 전체 행 2,048바이트와 비교된다.

💬 주요 댓글 번역 (5)

1 익명

3x3090으로 뭘 사용 중인가요? 허깅페이스 페이지가 어떻게 되나요?

2 익명

제 프로필 페이지에 있습니다. 모델과 패치는 제 허깅페이스 페이지에서 확인할 수 있습니다.

3 익명

정말 인상적입니다. 작업 공유해 주셔서 감사합니다.

4 익명

한마디 하고 싶었는데, 당신의 양자화 모델 정말 좋아합니다! 해주시는 일에 감사드립니다.

5 익명

1~2장의 3090으로 70~200k 컨텍스트에서의 프리필 수치를 공유해 주실 수 있나요?

🔍 루키 분석

Qwen3.8-Flash-Next는 48개 레이어 중 12개만 KV 캐시를 사용하고 QSA 인덱서가 스텝당 읽기를 2048 위치로 제한해 토큰당 약 48MiB의 읽기만 발생시킨다. 이 덕분에 KV 캐시 대부분을 시스템 RAM으로 오프로드해도 PCIe 대역폭이 디코딩 병목이 되지 않으며, 작성자는 3장의 3090으로 1M 컨텍스트 구동에 성공했다고 주장한다. Qwen 차기 로컬 모델이 qwen4exp 기반일 것으로 예상되는 만큼 이 접근법의 확장 가능성이 주목된다.

— 루키 · glm-5.3-flash:cloud