AI 연구EN

하이브리드 Mamba-Transformer 실측 — Qwen3.5-9B, 같은 A100에서 캐시 4.4배 절약·동시 처리 3.6배

A100 한 장에서 Qwen3.5-9B(24 linear + 8 attention)와 Qwen3-8B의 캐시를 2K~64K 컨텍스트로 실측. 64K에서 4.4배 작고 4.6배로 수렴 — 산수로 정확히 분해됩니다. HF eager 속도 수치가 왜 아키텍처를 말해주지 않는지도 설명합니다.

하이브리드 Mamba-Transformer 실측 — Qwen3.5-9B, 같은 A100에서 캐시 4.4배 절약·동시 처리 3.6배

하이브리드 Mamba-Transformer 실측 -- Qwen3.5-9B, 같은 A100에서 캐시 4.4배 절약·동시 처리 3.6배

첫 글에서 논문 세 편을 근거로 이렇게 썼습니다. linear 레이어 4분의 3에 어텐션 4분의 1이라는 2026년의 하이브리드 배합은 추론 캐시를 크게 줄이고 장문 디코딩을 빠르게 한다. 인용한 숫자는 "full KV 캐시의 ~25%"와 "추론 속도 2~3배"였습니다. 이번 글은 그 주장을 제 GPU에서 직접 확인한 결과입니다. 결론부터: 캐시 주장은 실측 22%로 사실이고, 속도 이득도 실재합니다. 다만 2~3배는 아니었고, 측정 도구를 잘못 고르면 정반대 결론이 나올 뻔했습니다.

비교 대상은 Qwen3.5-9B(32 레이어 중 Gated DeltaNet 24 + full attention 8)와 Qwen3-8B(36 레이어 전부 어텐션). 둘 다 bf16, A100 80GB 한 장, 컨텍스트 2K~64K입니다.

1. 캐시: 64K에서 4.4배, 산수가 끝까지 맞아떨어진다

캐시 크기는 GPU 메모리 사용량으로 재지 않았습니다. 그 값에는 로짓이 섞여 들어가거든요. 대신 캐시 객체 안의 텐서를 전부 합산했습니다. 어텐션 레이어의 K/V 텐서, linear 레이어의 순환·컨볼루션 상태까지.

컨텍스트 길이별 캐시 메모리
컨텍스트Qwen3-8B (트랜스포머)Qwen3.5-9B (하이브리드)비율
2K0.26 GB0.11 GB2.4배
8K1.06 GB0.28 GB3.8배
16K2.12 GB0.52 GB4.1배
32K4.24 GB0.99 GB4.3배
64K8.49 GB1.94 GB4.4배

이 숫자들은 검산이 됩니다. 트랜스포머는 36 레이어 × KV 헤드 8 × 헤드 차원 128 × (K+V) × 2바이트, 토큰당 147KB. 하이브리드는 어텐션 레이어 8개만 컨텍스트에 비례해 자라고(토큰당 32KB), Gated DeltaNet 24개는 컨텍스트와 무관한 고정 상태 약 25MB가 전부입니다. 61,839 토큰을 넣으면 각각 8.49GB와 1.94GB. 표의 값과 일치합니다.

검산에서 하나 더 나옵니다. 점근 비율은 147/32, 즉 4.6배입니다. 레이어 비율 8/32만 보면 4배가 나와야 하는데 그보다 큰 이유는 Qwen3.5가 KV 헤드도 절반(4개)만 쓰기 때문입니다. 첫 글은 절약의 근원을 "75% linear 레이어"라고 설명했지만, 절반은 GQA 폭에서 옵니다. 틀렸다기보다 해상도가 낮은 설명이었습니다.

서빙 관점으로 번역하면 이렇습니다. 64K 컨텍스트 기준, Qwen3-8B 시퀀스 7개가 들어가는 메모리에 Qwen3.5-9B는 약 30개가 들어갑니다. 하이브리드가 파는 물건이 바로 이겁니다.

2. HF에서 재면 하이브리드가 지는 것처럼 보인다

예상과 달랐던 지점이 여기입니다. 처음에 HuggingFace eager 모드로 속도를 쟀는데 표가 이렇게 나왔습니다.

컨텍스트프리필 (트랜스포머)프리필 (하이브리드)디코드 (트랜스포머)디코드 (하이브리드)
8K9,87774625.625.7
32K7,4312,36327.224.9
64K5,4003,51924.524.7

프리필은 하이브리드가 크게 밀리고 디코드는 비깁니다. 논문의 "2~3배"와 정반대라, 저는 처음에 하이브리드 쪽 설정을 의심했습니다. 뜯어보니 설정이 아니라 측정 도구가 문제였습니다.

디코드 25 tok/s는 모델 속도가 아닙니다. A100은 llama.cpp나 vLLM에서 8B를 130~150 tok/s로 디코드합니다. HF eager는 스텝마다 드는 파이썬 오버헤드가 병목이고, 이 병목은 두 모델에 똑같이 걸립니다. KV 대역폭 차이가 보일 해상도가 애초에 없는 겁니다. 프리필은 커널 문제였습니다. 트랜스포머 어텐션은 몇 년을 다듬은 SDPA 커널로 돌고, Gated DeltaNet은 flash-linear-attention의 Triton 커널로 도는데 이 서버에서는 causal-conv1d 빌드마저 실패해 느린 경로로 떨어졌습니다. 첫 실행이 42초 걸렸는데 거의 전부 Triton 컴파일이었고요.

그래도 곡선의 형태는 이론대로였습니다. 컨텍스트가 8K에서 64K로 갈 때 하이브리드 프리필은 746에서 3,519로 오르고, 트랜스포머는 9,877에서 5,400으로 내려갑니다. 선형과 이차가 교차하러 가는 중입니다. 연구용 프레임워크에서 새 아키텍처를 재면 아키텍처가 아니라 커널 성숙도를 재게 된다는 것. 이 글에서 하나만 가져간다면 이 문장입니다.

덧붙여 최대 메모리도 처음엔 의아했습니다. 64K 프리필의 최대 할당량이 하이브리드 쪽이 더 높게 나왔거든요(47.7GB vs 41.7GB). 이것도 아키텍처 탓이 아닙니다. Qwen3.5의 어휘는 248K 토큰이고 HF는 프리필 중 전체 위치의 로짓을 만듭니다. 61,839 × 248,320 × 2바이트면 약 30GB. 서빙 엔진은 이렇게 동작하지 않습니다.

3. vLLM에서 다시 재면 전 항목에서 이긴다

같은 질문을 프로덕션 커널로 다시 물었습니다. vLLM 0.28, 같은 GPU, 같은 프롬프트.

지표Qwen3-8BQwen3.5-9B차이
프리필 32K (tok/s)8,27411,372+37%
TTFT @32K3.73초2.72초−27%
디코드 @32K, 배치 171.382.4+16%
배치 처리량 (16 × 8K)257312+21%
A100 한 장의 KV 용량40만 토큰145만 토큰3.6배
40K 요청 동시 처리9.8개35.5개3.6배

이번엔 하이브리드가 다 이깁니다. 우위가 컨텍스트에 비례해 커지는 것도 이론과 맞습니다. 디코드는 4K에서 +11%, 32K에서 +16%. 프리필은 HF에서 −51%였다가 여기선 +37%.

다만 이 표에도 "2~3배"는 없습니다. 8B급, 32K 컨텍스트에서 속도 이득은 16~37%입니다. 극적인 배수는 속도가 아니라 용량 줄에 있습니다. GPU 한 장에 장문 요청이 3.6배 들어가고, 이것이 처리량으로 바뀌는 조건은 워크로드가 메모리에 묶여 있을 때입니다. 하이브리드를 팔 때 정직한 문장은 "3배 빠르다"가 아니라 "같은 GPU로 3.6배 서빙한다"입니다.

4. 첫 글 채점표

첫 글의 주장실측
하이브리드 캐시 ≈ full의 25%64K에서 22%, 4.6배로 수렴. 맞음
추론 속도 2~3배이득은 실재(+16~37%). 이 구간에선 2~3배 아님. 배수는 용량(3.6배)에 있음
linear 레이어의 고정 크기 상태컨텍스트 무관 25MB. 맞음

한 줄 요약: 하이브리드의 상품은 속도가 아니라 밀도입니다. 같은 A100에 컨텍스트는 4.4배, 동시 요청은 3.6배 더 들어갑니다.

이 글에서 다룬 attention과 KV cache 구조를 밑바닥부터 직접 구현해보고 싶다면 Attention and Transformers from Scratch 강의에 28강 분량으로 정리해뒀습니다. 3강까지는 무료입니다.

하네스: bench-hybrid-hf.py, bench-hybrid.py(첨부). 캐시 크기는 past_key_values에서 닿는 모든 텐서의 numel × element_size 합산.

하드웨어: A100 80GB × 1, 드라이버 535. 소프트웨어: transformers 5.16 + flash-linear-attention 0.5.2 / vLLM 0.28.0, 두 모델 모두 bf16.

총 소요: HF 측정 약 40분, vLLM 측정 약 25분. 원본 결과: 번들의 hybrid-hf.json, hybrid.json.

확인 일자: 2026-08-31.

참고 자료

더 많은 콘텐츠를 받아보세요

SNS에서 새로운 글과 튜토리얼 소식을 가장 먼저 받아보세요

이메일로 받아보기

관련 포스트