긴 문서를 넣는 서비스를 만들다 보면 GPU 메모리가 가중치보다 KV 캐시에서 먼저 바닥나죠. 그때 후보로 오르는 게 Mamba 계열이에요. 결론부터 말하면 요청 문맥이 수만 토큰이고 동시 요청이 많은 서비스라면 "어텐션 몇 층 + Mamba 다수" 하이브리드가 같은 GPU에서 8배 안팎의 요청을 받아요. 반대로 문맥이 짧거나, 문서 속 문장을 정확히 옮겨야 하는 일이 핵심이면 트랜스포머가 여전히 안전해요. 순수 Mamba는 메모리가 가장 적지만 복사·검색 품질이 떨어져 쓸 곳이 좁아요.
이 글은 원리 설명 대신 고를 때 필요한 숫자만 다뤄요. Hugging Face에 공개된 6개 모델의 config.json으로 요청당 메모리를 직접 계산했고, GPU 요금은 2026-10-26에 공식 가격표에서 확인했어요. 품질은 논문과 모델 카드에 적힌 값만 옮겼어요.
Mamba 계열 모델, 무엇이 다르고 무엇을 비교하나
트랜스포머는 지나간 토큰마다 Key·Value를 쌓아 두고, Mamba 층은 크기가 정해진 상태 하나만 고쳐 써요. 그래서 서빙 비용을 비교할 땐 세 가지 숫자만 보면 돼요.
- 요청당 메모리 — 어텐션 층 수 × KV 헤드 × 헤드 차원이 정하는 "토큰당 KV"와, Mamba 층이 정하는 "고정 상태". 동시 요청 수를 정해요.
- 긴 입력 처리 계산량 — 어텐션은 길이의 제곱, Mamba는 길이에 비례해요. 첫 토큰 지연을 정해요.
- 품질 — 특히 문맥 속 내용을 그대로 꺼내 쓰는 능력이에요.
후보는 모든 층이 어텐션인 트랜스포머, 모든 층이 Mamba인 순수 Mamba, 어텐션 몇 층에 Mamba-2를 섞은 하이브리드 셋이에요. 하이브리드도 층을 번갈아 쌓는 방식(Nemotron-H·Granite-4.0-H)과 한 층 안에 둘을 나란히 두는 방식(Falcon-H1)으로 갈려요.
요청당 메모리 계산 — 공개 config로 직접 세기
토큰당 KV는 2(K·V) × 어텐션 층 수 × KV 헤드 수 × 헤드 차원 × 2바이트(BF16)예요. Mamba 상태는 vLLM이 잡는 모양을 그대로 따랐어요. vLLM mamba_utils.py의 MambaStateShapeCalculator를 보면 층마다 Mamba-1은 (내부 폭, 상태 크기), Mamba-2는 (헤드 수, 헤드 차원, 상태 크기) 상태에 합성곱 상태 (채널 수, 커널 폭 − 1)이 붙어요.
예를 들어 Nemotron-Nano-9B-v2의 hybrid_override_pattern을 세면 Mamba-2 27층, 어텐션 4층, 나머지는 MLP예요. Mamba-2 한 층의 상태는 128헤드 × 80 × 128 = 약 131만 개 값이고, 합성곱 상태가 (10,240 + 2×8×128) × 3 = 약 3.7만 개예요. 27층을 BF16으로 합치면 72.8MB예요. 어텐션은 4층뿐이라 토큰당 KV가 2 × 4 × 8 × 128 × 2 = 16KiB예요.
같은 방식으로 6개 모델을 계산했어요(1GB = 10⁹바이트, 가중치는 Hugging Face가 표시한 파라미터 수 × 2바이트).
| 모델 | 구조 | 가중치 | 토큰당 KV | 고정 상태 | 4K 요청 | 32K 요청 | 128K 요청 |
|---|---|---|---|---|---|---|---|
| Qwen3-8B | 트랜스포머 36층 | 16.4GB | 144KiB | 0 | 0.60GB | 4.83GB | 19.33GB |
| Falcon-Mamba-7B | Mamba-1 64층 | 14.5GB | 0 | 19.9MB | 0.02GB | 0.02GB | 0.02GB |
| Nemotron-Nano-9B-v2 | 어텐션 4 + Mamba-2 27 | 17.8GB | 16KiB | 72.8MB | 0.14GB | 0.61GB | 2.22GB |
| Falcon-H1-7B | 44층 병렬 | 15.2GB | 44KiB | 70.2MB | 0.26GB | 1.55GB | 5.98GB |
| Granite-4.0-H-Tiny | 어텐션 4 + Mamba-2 36, MoE | 13.9GB | 8KiB | 29.0MB | 0.06GB | 0.30GB | 1.10GB |
| Granite-4.0-H-Small | 어텐션 4 + Mamba-2 36, MoE | 64.4GB | 16KiB | 77.3MB | 0.14GB | 0.61GB | 2.23GB |
표에서 읽을 점은 이래요.
- 하이브리드 이득은 "어텐션 층을 몇 개 남겼나"가 정해요. Falcon-H1은 44층 모두 어텐션이 있어서(KV 헤드는 2개로 줄였지만) 128K에서 Qwen3-8B의 31%예요. 4층만 남긴 Nemotron-Nano는 11%, Granite-H-Tiny는 6%예요.
- 짧은 요청에서는 고정 상태가 더 커요. Qwen3-8B의 토큰당 KV와 비교하면 Falcon-Mamba는 약 135토큰, Granite-H-Tiny는 약 208토큰, Nemotron-Nano는 약 555토큰, Falcon-H1은 약 685토큰보다 짧은 요청에서 메모리를 더 써요. 한두 문장짜리 분류 API라면 이득이 없어요.
- SSM 상태를 FP32로 두면 상태 몫이 두 배예요. 모델 카드가 FP32를 권하면 고정 상태 값을 두 배로 잡으세요.
GB와 GiB가 섞이면 숫자가 7%씩 어긋나 보이니, 계산할 땐 데이터 용량 변환기로 단위를 먼저 맞추세요.
H100 한 장에 몇 명 — 동시 요청 수와 월 비용
남는 메모리는 GPU 메모리의 92%(vLLM gpu_memory_utilization 기본값)에서 가중치와 활성값 몫 2GB(가정값)를 뺐어요. GPU 요금은 Lambda 가격표의 H100 SXM 80GB 1장 인스턴스 시간당 $4.29(세금 별도), 한 달 730시간으로 약 $3,132예요.
| 모델 | 32K 요청 동시 수 | 128K 요청 동시 수 | 32K 자리당 월 비용 | 128K 자리당 월 비용 |
|---|---|---|---|---|
| Qwen3-8B | 11.4개 | 2.9개 | 약 $274 | 약 $1,096 |
| Falcon-H1-7B | 36.5개 | 9.4개 | 약 $86 | 약 $332 |
| Nemotron-Nano-9B-v2 | 88.3개 | 24.2개 | 약 $35 | 약 $129 |
| Granite-4.0-H-Tiny | 194개 | 52.3개 | 약 $24 (128개 상한) | 약 $60 |
| Granite-4.0-H-Small | 11.7개 | 3.2개 | 약 $268 | 약 $970 |
| Falcon-Mamba-7B | 메모리로는 2,800개 넘음 | 〃 | 약 $24 (128개 상한) | 약 $24 (128개 상한) |
메모리만 보면 수천 명도 들어가지만 실제로는 다른 상한이 먼저 걸려요. vLLM 스케줄러 설정의 max_num_seqs 기본값이 128이라, 표의 "128개 상한"은 그 값으로 나눴어요. 값을 올릴 순 있지만 그때부터는 계산량이 병목이에요.
Granite-4.0-H-Small은 MoE라도 전체 32B를 올려야 해서 가중치만 64.4GB예요. FP8 판이나 GPU 두 장이 현실적이에요. 전체 파라미터로 메모리를 잡는 이유는 MoE 모델 VRAM·비용 계산에 정리해 두었어요.
생성 속도와 100만 토큰당 비용 — 대역폭으로 본 상한
생성 단계는 한 스텝마다 가중치와 모든 요청의 KV·상태를 메모리에서 읽어요. 그래서 스텝 시간 하한은 (가중치 + 동시 요청 수 × 요청당 메모리) ÷ 메모리 대역폭이에요. H100 SXM 대역폭 3.35TB/s(NVIDIA H100 사양)로, 메모리에 들어가는 만큼(최대 128개) 요청을 채웠을 때의 초당 토큰 상한을 계산했어요.
| 모델 (32K 문맥) | 동시 요청 | 스텝 시간 하한 | 초당 토큰 상한 | 100만 토큰당 비용 하한 |
|---|---|---|---|---|
| Qwen3-8B | 11 | 20.8ms | 약 530 | 약 $2.25 |
| Falcon-H1-7B | 36 | 21.2ms | 약 1,700 | 약 $0.70 |
| Nemotron-Nano-9B-v2 | 88 | 21.3ms | 약 4,130 | 약 $0.29 |
| Falcon-Mamba-7B | 128 | 5.1ms | 약 25,000 | 약 $0.05 |
128K에서는 차이가 더 벌어져요. 동시 요청이 2·9·24개로 줄어 초당 토큰 상한이 약 122·437·1,131이고, 100만 토큰당 비용 하한이 Qwen3-8B 약 $9.79, Falcon-H1 약 $2.73, Nemotron-Nano 약 $1.05예요. 핵심은 한 사람의 속도가 아니라 "한 번에 몇 명을 태우나"가 비용을 정한다는 점이에요. 배치 1이면 세 모델 모두 가중치 읽기가 대부분이라 차이가 작아요. 실측은 커널·스케줄링 때문에 이 상한보다 낮아요.
이 계산은 공개된 측정·예측과 방향이 같아요.
- Nemotron-Nano-9B-v2 논문은 입력 8K·출력 16K 추론 설정에서 Qwen3-8B보다 처리량이 최대 6배라고 적었어요.
- Nemotron-H 논문은 비슷한 크기의 트랜스포머보다 추론이 최대 3배 빠르다고 보고했어요.
- NVIDIA의 8B 비교 연구는 Mamba-2 하이브리드가 생성에서 최대 8배 빠를 것으로 예측했어요(실측이 아닌 예측이에요).
긴 입력을 넣을 때 — 첫 토큰까지의 계산량
RAG나 문서 요약은 생성보다 입력 처리(프리필)가 길어요. 프리필 계산량을 2 × 파라미터 × 토큰 수(선형 층)와 2 × 길이² × 어텐션 폭 × 어텐션 층 수(인과 마스크 어텐션)로 나눠 계산했어요. Mamba 스캔 자체의 연산은 길이에 비례하는 작은 항이라 뺐어요.
8K 입력에서는 어텐션 몫이 Qwen3-8B도 13%뿐이라 Nemotron-Nano와의 차이가 4%예요.
표로 보기
| 구분 | 선형 층 | 어텐션 |
|---|---|---|
| Qwen3-8B | 2,147 | 5,067 |
| Falcon-H1-7B | 1,990 | 2,322 |
| Nemotron-Nano-9B-v2 | 2,330 | 704 |
| Falcon-Mamba-7B | 1,906 | 0 |
128K 입력이면 Qwen3-8B는 계산의 70%가 어텐션이고, Nemotron-Nano는 전체 계산이 Qwen3-8B의 42%예요. 문맥이 32K면 그 비율이 74%(627 ÷ 853 TFLOP)로 줄고, 8K면 거의 같아요. 첫 토큰 지연의 이득은 입력이 수만 토큰을 넘어야 눈에 띄어요.
트랜스포머로 문맥을 늘리는 쪽을 택한다면 YaRN·rope_scaling 설정별 비용과 품질을 같이 보세요. Qwen3-8B의 기본 문맥은 32K라 128K를 쓰려면 그 설정이 필요해요.
품질 — Mamba 계열이 약한 일과 괜찮은 일
메모리를 아끼는 대가는 "문맥을 통째로 들고 있지 않다"는 점이에요. 얼마나 손해인지는 과제마다 달라요.
NVIDIA의 8B 통제 비교는 같은 데이터로 학습한 8B 모델끼리 비교했어요. 1.1T 토큰 학습 뒤 5-shot MMLU가 트랜스포머 46.28점, Mamba 28.00점, Mamba-2 29.19점이었어요. 3.5T 토큰까지 학습하면 트랜스포머 50.07점, Mamba-2 48.70점으로 1.37점 차이까지 좁혀졌어요. 다만 논문은 전화번호부 찾기(Phonebook)와 긴 문맥 과제는 학습량과 상관없이 순수 SSM에 어렵다고 적었어요.
Repeat After Me 논문도 같은 결론이에요. 고정 크기 상태를 쓰는 모델은 문맥 복사 능력이 상태 크기에 묶인다고 증명했고, 사전학습된 모델에서도 문맥에서 정보를 꺼내는 과제는 트랜스포머가 크게 앞섰어요.
하이브리드는 이 약점을 대부분 메워요. Nemotron-Nano-9B-v2 모델 카드의 Qwen3-8B 비교표에서 일부만 옮기면 이래요.
| 평가 | Qwen3-8B | Nemotron-Nano-9B-v2 |
|---|---|---|
| RULER (128K) | 74.1% | 78.9% |
| GPQA | 59.6% | 64.0% |
| LiveCodeBench | 59.5% | 71.1% |
만든 쪽이 잰 값이라 출발점으로만 쓰세요. 어텐션 몇 층만 남겨도 긴 문맥 검색 점수가 무너지지 않는다는 방향은 여러 자료가 같아요.
상황별 추천 — 트랜스포머·하이브리드·순수 Mamba
| 상황 | 추천 | 이유 |
|---|---|---|
| 짧은 챗봇·분류 (요청 2K 토큰 이하) | 트랜스포머 | 고정 상태 때문에 메모리 이득이 거의 없고, 도구·양자화 생태계가 넓어요 |
| 긴 문서 RAG·요약, 동시 사용자 많음 | 어텐션 4층 안팎의 하이브리드 | 128K 자리당 월 비용이 트랜스포머의 약 12% |
| 긴 추론(사고 과정) 생성이 많은 에이전트 | 하이브리드 | 출력이 길수록 KV가 쌓이지 않는 이득이 커져요 |
| 코드 수정·인용처럼 문맥을 정확히 옮기기 | 트랜스포머 또는 어텐션 비중이 큰 하이브리드 | 복사 과제는 고정 상태의 약점이 그대로 드러나요 |
| 아주 긴 스트림 분류, 메모리가 극도로 빠듯함 | 순수 Mamba (평가 후) | 요청당 20MB 고정이지만 품질 검증이 필수예요 |
| 자체 GPU 없이 긴 문맥 하이브리드를 써 보기 | API (예: Jamba) | AI21 가격표 기준 Jamba Mini 입력 100만 토큰 $0.2·출력 $0.4 |
API로 시험해 보면 비용 감이 빨리 와요. Jamba Mini에 10만 토큰 문서를 넣고 1천 토큰을 받으면 한 건에 약 $0.0204예요. 하루 1천 건이면 약 $20예요. 그 규모 이상이 꾸준하면 위 자체 서빙 표와 비교해 보세요. KV 캐시 쪽 설정은 vLLM KV 캐시 용량 계산에서 더 자세히 다뤘어요.
도입 체크리스트
- 실제 요청 길이 분포부터 뽑아요. 중앙값이 수백 토큰이면 하이브리드로 바꿔도 메모리가 줄지 않아요. 앞 표의 손익분기(모델별 135~685토큰)와 비교해요.
- 엔진 지원과 버전을 확인해요. vLLM V1 안내는 Mamba·Mamba-2와 Jamba·Nemotron-H·Falcon-H1·Granite 하이브리드를 지원 모델로 적어요.
- 프리픽스 캐싱 동작을 따로 봐요. 같은 안내 문서는 이 모델들에 프리픽스 캐싱이 "아직 지원되지 않는다"고 적었는데, 최신 vLLM CacheConfig에는
mamba_cache_mode="align"이 생겼어요. 블록 경계의 상태만 저장하니, 긴 시스템 프롬프트를 쓰면 적중률을 직접 재 보세요. - 상태 정밀도를 정해요.
mamba_ssm_cache_dtype을 FP32로 두면 상태 메모리가 두 배예요. 모델 카드 권장값을 따라요. - CUDA 커널이 깔렸는지 봐요. Hugging Face Mamba 문서는
mamba-ssm·causal-conv1d를 설치하라고 하고, 없으면 느린 구현으로 돌아요. 커널 없이 잰 속도로 결론 내리지 마세요. - 배치 생성은 왼쪽 패딩으로 해요. 같은 문서가 배치 생성에 왼쪽 패딩을 쓰라고 적어 두었어요.
- 평가 세트에 복사·검색 문제를 꼭 넣어요. 숫자 찾기, 표 옮기기, 코드 일부 수정처럼 한 글자만 틀려도 실패인 문제 30~50개를 트랜스포머와 나란히 돌려요.
- 양자화 지원을 확인해요. 하이브리드는 어텐션 층과 Mamba 층의 양자화 지원이 다를 수 있어요. 형식 고르는 법은 LLM 양자화 형식 비교에 있어요.
자주 묻는 질문
Mamba 모델은 문맥이 아무리 길어도 메모리가 그대로인가요?
순수 Mamba는 그래요. Falcon-Mamba-7B는 요청 하나가 길이와 상관없이 약 19.9MB예요. 대신 기억도 그 크기에 눌러 담겨 정확한 검색은 약해요. 하이브리드는 어텐션 층 몫만큼 길이에 비례해 늘어요.
하이브리드로 바꾸면 짧은 챗봇도 싸지나요?
거의 아니에요. 고정 상태가 있어서 Nemotron-Nano-9B-v2는 약 555토큰, Falcon-H1-7B는 약 685토큰보다 짧은 요청에서 Qwen3-8B보다 메모리를 더 써요. 8K 입력에서는 프리필 계산량도 Qwen3-8B와 4%밖에 차이 나지 않아요. 이득은 요청이 수만 토큰일 때 커요.
순수 Mamba와 하이브리드 중 무엇을 골라야 하나요?
대부분 하이브리드예요. NVIDIA의 8B 통제 비교에서 순수 SSM은 5-shot MMLU와 전화번호부 찾기에서 약했고, 어텐션 7%를 섞은 하이브리드는 12개 과제 모두에서 트랜스포머를 넘었어요. 순수 Mamba는 정확한 복사가 필요 없는 긴 스트림 처리처럼 좁은 용도에서 평가 후 고려해요.
Mamba 계열도 vLLM에서 프리픽스 캐싱이 되나요?
버전에 따라 달라요. V1 안내 문서는 미지원이라 적었고, 최신 CacheConfig에는 블록 경계 상태만 저장하는 align 모드가 있어요. 쓰는 버전에서 적중률을 직접 확인하세요.
하이브리드 모델 품질은 같은 크기 트랜스포머와 비슷한가요?
공개 자료로는 비슷하거나 나은 경우가 많아요. Nemotron-Nano-9B-v2 모델 카드에서 RULER 128K는 78.9%로 Qwen3-8B 74.1%보다 높았어요. 다만 만든 쪽이 잰 값이라, 복사·검색 문제가 들어간 자기 평가 세트로 꼭 다시 확인하세요.
정리
- 요청 하나의 메모리는 "토큰당 KV × 길이 + 고정 상태"예요. 어텐션 층을 4개만 남긴 하이브리드는 128K 요청이 트랜스포머의 6~11%예요.
- H100 한 장에서 128K 요청 자리당 월 비용은 Qwen3-8B 약 $1,096, Nemotron-Nano-9B-v2 약 $129, Granite-4.0-H-Tiny 약 $60이에요. 대신 수백 토큰짜리 짧은 요청에서는 이득이 없어요.
- 첫 토큰 지연 이득은 입력이 수만 토큰을 넘을 때 나요. 128K 입력이면 하이브리드의 프리필 계산이 트랜스포머의 약 42%예요.
- 순수 Mamba는 복사·검색에 약해서, 실무 후보는 어텐션을 조금 남긴 하이브리드예요. 엔진 지원·프리픽스 캐싱·커널·패딩을 확인하고 자기 평가 세트로 결정하세요.
더 깊이 읽기
이 글은 실무에서 판단할 때 필요한 것 위주로 정리했어요. 같은 주제의 내부 동작 원리는 devboi 기술 블로그의 Mamba 원리 — 상태 공간 모델(SSM)과 선택적 스캔에서 도식과 코드로 단계별로 풀었어요.