광고
~ / posts / developer

Mamba·하이브리드 모델 언제 쓰나, 트랜스포머와 메모리·GPU 비용 비교

128K 토큰 요청 하나에 Qwen3-8B는 19.3GB, 하이브리드 Nemotron-Nano-9B-v2는 2.2GB를 써요. 공개 config로 계산한 요청당 메모리·H100 동시 요청 수·토큰당 비용과, 복사·검색 품질 손실까지 따져 Mamba 계열을 고르는 기준을 정리했어요.

긴 문서를 넣는 서비스를 만들다 보면 GPU 메모리가 가중치보다 KV 캐시에서 먼저 바닥나죠. 그때 후보로 오르는 게 Mamba 계열이에요. 결론부터 말하면 요청 문맥이 수만 토큰이고 동시 요청이 많은 서비스라면 "어텐션 몇 층 + Mamba 다수" 하이브리드가 같은 GPU에서 8배 안팎의 요청을 받아요. 반대로 문맥이 짧거나, 문서 속 문장을 정확히 옮겨야 하는 일이 핵심이면 트랜스포머가 여전히 안전해요. 순수 Mamba는 메모리가 가장 적지만 복사·검색 품질이 떨어져 쓸 곳이 좁아요.

이 글은 원리 설명 대신 고를 때 필요한 숫자만 다뤄요. Hugging Face에 공개된 6개 모델의 config.json으로 요청당 메모리를 직접 계산했고, GPU 요금은 2026-10-26에 공식 가격표에서 확인했어요. 품질은 논문과 모델 카드에 적힌 값만 옮겼어요.

광고

Mamba 계열 모델, 무엇이 다르고 무엇을 비교하나

트랜스포머는 지나간 토큰마다 Key·Value를 쌓아 두고, Mamba 층은 크기가 정해진 상태 하나만 고쳐 써요. 그래서 서빙 비용을 비교할 땐 세 가지 숫자만 보면 돼요.

  1. 요청당 메모리 — 어텐션 층 수 × KV 헤드 × 헤드 차원이 정하는 "토큰당 KV"와, Mamba 층이 정하는 "고정 상태". 동시 요청 수를 정해요.
  2. 긴 입력 처리 계산량 — 어텐션은 길이의 제곱, Mamba는 길이에 비례해요. 첫 토큰 지연을 정해요.
  3. 품질 — 특히 문맥 속 내용을 그대로 꺼내 쓰는 능력이에요.

후보는 모든 층이 어텐션인 트랜스포머, 모든 층이 Mamba인 순수 Mamba, 어텐션 몇 층에 Mamba-2를 섞은 하이브리드 셋이에요. 하이브리드도 층을 번갈아 쌓는 방식(Nemotron-H·Granite-4.0-H)과 한 층 안에 둘을 나란히 두는 방식(Falcon-H1)으로 갈려요.

트랜스포머·하이브리드·순수 Mamba 세 종류의 토큰당 KV, 고정 상태, 128K 요청 하나의 메모리를 비교한 카드
같은 128K 요청이라도 구조에 따라 메모리가 1,000배 가까이 차이 나요

요청당 메모리 계산 — 공개 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.4GB144KiB00.60GB4.83GB19.33GB
Falcon-Mamba-7BMamba-1 64층14.5GB019.9MB0.02GB0.02GB0.02GB
Nemotron-Nano-9B-v2어텐션 4 + Mamba-2 2717.8GB16KiB72.8MB0.14GB0.61GB2.22GB
Falcon-H1-7B44층 병렬15.2GB44KiB70.2MB0.26GB1.55GB5.98GB
Granite-4.0-H-Tiny어텐션 4 + Mamba-2 36, MoE13.9GB8KiB29.0MB0.06GB0.30GB1.10GB
Granite-4.0-H-Small어텐션 4 + Mamba-2 36, MoE64.4GB16KiB77.3MB0.14GB0.61GB2.23GB
요청 하나가 차지하는 메모리 (BF16, 문맥 길이별)
Qwen3-8BFalcon-H1-7BNemotron-Nano-9B-v2Granite-4.0-H-Tiny
051015204K 토큰 · Qwen3-8B 0.6GB4K 토큰 · Falcon-H1-7B 0.26GB4K 토큰 · Nemotron-Nano-9B-v2 0.14GB4K 토큰 · Granite-4.0-H-Tiny 0.06GB4K 토큰32K 토큰 · Qwen3-8B 4.8GB32K 토큰 · Falcon-H1-7B 1.6GB32K 토큰 · Nemotron-Nano-9B-v2 0.61GB32K 토큰 · Granite-4.0-H-Tiny 0.3GB32K 토큰128K 토큰 · Qwen3-8B 19.3GB128K 토큰 · Falcon-H1-7B 6GB128K 토큰 · Nemotron-Nano-9B-v2 2.2GB128K 토큰 · Granite-4.0-H-Tiny 1.1GB128K 토큰

Falcon-Mamba-7B는 길이와 상관없이 0.02GB라 차트에서 뺐어요.

단위: GB · 자료: 각 모델 Hugging Face config.json과 vLLM 상태 모양 계산식으로 직접 계산 (2026-10-26)
표로 보기
구분Qwen3-8BFalcon-H1-7BNemotron-Nano-9B-v2Granite-4.0-H-Tiny
4K 토큰0.60.260.140.06
32K 토큰4.81.60.610.3
128K 토큰19.362.21.1

표에서 읽을 점은 이래요.

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-8B11.4개2.9개약 $274약 $1,096
Falcon-H1-7B36.5개9.4개약 $86약 $332
Nemotron-Nano-9B-v288.3개24.2개약 $35약 $129
Granite-4.0-H-Tiny194개52.3개약 $24 (128개 상한)약 $60
Granite-4.0-H-Small11.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-8B1120.8ms약 530약 $2.25
Falcon-H1-7B3621.2ms약 1,700약 $0.70
Nemotron-Nano-9B-v28821.3ms약 4,130약 $0.29
Falcon-Mamba-7B1285.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이면 세 모델 모두 가중치 읽기가 대부분이라 차이가 작아요. 실측은 커널·스케줄링 때문에 이 상한보다 낮아요.

이 계산은 공개된 측정·예측과 방향이 같아요.

긴 입력을 넣을 때 — 첫 토큰까지의 계산량

RAG나 문서 요약은 생성보다 입력 처리(프리필)가 길어요. 프리필 계산량을 2 × 파라미터 × 토큰 수(선형 층)와 2 × 길이² × 어텐션 폭 × 어텐션 층 수(인과 마스크 어텐션)로 나눠 계산했어요. Mamba 스캔 자체의 연산은 길이에 비례하는 작은 항이라 뺐어요.

128K 토큰 입력 한 건의 프리필 계산량
선형 층어텐션
02,0004,0006,0008,000Qwen3-8B · 선형 층 2,147TFLOPQwen3-8B · 어텐션 5,067TFLOPQwen3-8BFalcon-H1-7B · 선형 층 1,990TFLOPFalcon-H1-7B · 어텐션 2,322TFLOPFalcon-H1-7BNemotron-Nano-9B-v2 · 선형 층 2,330TFLOPNemotron-Nano-9B-v2 · 어텐션 704TFLOPNemotron-Nano-9B-v2Falcon-Mamba-7B · 선형 층 1,906TFLOPFalcon-Mamba-7B · 어텐션 0TFLOPFalcon-Mamba-7B

8K 입력에서는 어텐션 몫이 Qwen3-8B도 13%뿐이라 Nemotron-Nano와의 차이가 4%예요.

단위: TFLOP · 자료: config.json의 층 수·헤드 수·파라미터 수로 직접 계산 (근사)
표로 보기
구분선형 층어텐션
Qwen3-8B2,1475,067
Falcon-H1-7B1,9902,322
Nemotron-Nano-9B-v22,330704
Falcon-Mamba-7B1,9060

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에 어렵다고 적었어요.

8B 모델 5-shot MMLU (같은 데이터로 학습)
트랜스포머Mamba-2
01020304050601.1T 토큰 학습 · 트랜스포머 46.3점1.1T 토큰 학습 · Mamba-2 29.2점1.1T 토큰 학습3.5T 토큰 학습 · 트랜스포머 50.1점3.5T 토큰 학습 · Mamba-2 48.7점3.5T 토큰 학습

같은 논문에서 어텐션 7%를 섞은 하이브리드는 12개 표준 과제 모두에서 트랜스포머를 넘었어요(평균 +2.65점).

단위: 점 · 자료: Waleffe 외, An Empirical Study of Mamba-based Language Models (arXiv 2406.07887) 표 2·3
표로 보기
구분트랜스포머Mamba-2
1.1T 토큰 학습46.329.2
3.5T 토큰 학습50.148.7

Repeat After Me 논문도 같은 결론이에요. 고정 크기 상태를 쓰는 모델은 문맥 복사 능력이 상태 크기에 묶인다고 증명했고, 사전학습된 모델에서도 문맥에서 정보를 꺼내는 과제는 트랜스포머가 크게 앞섰어요.

하이브리드는 이 약점을 대부분 메워요. Nemotron-Nano-9B-v2 모델 카드의 Qwen3-8B 비교표에서 일부만 옮기면 이래요.

평가Qwen3-8BNemotron-Nano-9B-v2
RULER (128K)74.1%78.9%
GPQA59.6%64.0%
LiveCodeBench59.5%71.1%

만든 쪽이 잰 값이라 출발점으로만 쓰세요. 어텐션 몇 층만 남겨도 긴 문맥 검색 점수가 무너지지 않는다는 방향은 여러 자료가 같아요.

상황별 추천 — 트랜스포머·하이브리드·순수 Mamba

문맥 길이, 문맥 복사 필요 여부, 엔진 지원, 자체 평가 결과를 차례로 물어 트랜스포머·하이브리드·순수 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 캐시 용량 계산에서 더 자세히 다뤘어요.

도입 체크리스트

  1. 실제 요청 길이 분포부터 뽑아요. 중앙값이 수백 토큰이면 하이브리드로 바꿔도 메모리가 줄지 않아요. 앞 표의 손익분기(모델별 135~685토큰)와 비교해요.
  2. 엔진 지원과 버전을 확인해요. vLLM V1 안내는 Mamba·Mamba-2와 Jamba·Nemotron-H·Falcon-H1·Granite 하이브리드를 지원 모델로 적어요.
  3. 프리픽스 캐싱 동작을 따로 봐요. 같은 안내 문서는 이 모델들에 프리픽스 캐싱이 "아직 지원되지 않는다"고 적었는데, 최신 vLLM CacheConfig에는 mamba_cache_mode="align"이 생겼어요. 블록 경계의 상태만 저장하니, 긴 시스템 프롬프트를 쓰면 적중률을 직접 재 보세요.
  4. 상태 정밀도를 정해요. mamba_ssm_cache_dtype을 FP32로 두면 상태 메모리가 두 배예요. 모델 카드 권장값을 따라요.
  5. CUDA 커널이 깔렸는지 봐요. Hugging Face Mamba 문서는 mamba-ssm·causal-conv1d를 설치하라고 하고, 없으면 느린 구현으로 돌아요. 커널 없이 잰 속도로 결론 내리지 마세요.
  6. 배치 생성은 왼쪽 패딩으로 해요. 같은 문서가 배치 생성에 왼쪽 패딩을 쓰라고 적어 두었어요.
  7. 평가 세트에 복사·검색 문제를 꼭 넣어요. 숫자 찾기, 표 옮기기, 코드 일부 수정처럼 한 글자만 틀려도 실패인 문제 30~50개를 트랜스포머와 나란히 돌려요.
  8. 양자화 지원을 확인해요. 하이브리드는 어텐션 층과 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%보다 높았어요. 다만 만든 쪽이 잰 값이라, 복사·검색 문제가 들어간 자기 평가 세트로 꼭 다시 확인하세요.

정리

더 깊이 읽기

이 글은 실무에서 판단할 때 필요한 것 위주로 정리했어요. 같은 주제의 내부 동작 원리는 devboi 기술 블로그의 Mamba 원리 — 상태 공간 모델(SSM)과 선택적 스캔에서 도식과 코드로 단계별로 풀었어요.

참고한 자료

#Mamba 모델 선택#하이브리드 Mamba 트랜스포머#SSM 서빙 비용#Nemotron-Nano#Granite 4.0 H#Falcon-Mamba#KV 캐시 메모리 계산#긴 문맥 LLM 비용
← 이전 글LoRA 파인튜닝 언제 쓰나, QLoRA·전체 학습 메모리와 비용 계산다음 글 →연산자 우선순위 헷갈리는 조합, 언어별 함정표와 괄호·린터 규칙
광고

더 둘러보기

💻 개발자 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →