> EulerStack > 튜토리얼 > 믹서 > 2. Mamba 상세

2. Mamba 상세

한 줄 요약

"각 토큰마다 동적으로 변하는 '상태(state)'를 유지하며, 왼쪽에서 오른쪽으로 한 번에 흘려서 정보를 섞는 O(N) 연산."

어떻게 동작하나요?

Attention 이 "모든 과거 토큰을 한꺼번에 다시 보는" 방식이라면, Mamba 는 "작은 메모리(state) 하나를 들고 왼쪽에서 오른쪽으로 읽어가면서 계속 업데이트" 하는 방식입니다. 마치 RNN 처럼요. 하지만 Mamba 는 입력에 따라 이 state 업데이트 규칙이 동적으로 바뀝니다 (selective SSM) — 이 점이 고전 RNN/LSTM 보다 훨씬 강력합니다.

핵심 아이디어: 1. State Space Model (SSM): 연속 시간 미분방정식 h'(t) = A·h(t) + B·x(t) 를 이산화해서 h[k] = Ā·h[k-1] + B̄·x[k] 로 만든다. 2. Selective: A, B 가 고정이 아니라 입력 x 에 따라 달라진다 (selective scan). 3. Parallel scan: 왼쪽-오른쪽 의존성이 있지만 GPU 에서 병렬 scan 알고리즘으로 빠르게 계산. 4. Hardware-aware: SRAM 에 최적화된 CUDA 커널로 실제 속도도 Attention 못지 않게 빠름.

결과: 시퀀스 길이에 대해 O(N) 선형, state 는 고정 크기(d_state), 추론 시 KV 캐시 대신 작은 state 만 유지하면 됨.

장점

단점

Mamba1 vs Mamba2

실제 적용 예

어떤 상황에 유리한가?

상황 Mamba 가 좋은가?
긴 문서 요약 (≥ 32K) ★★★★★ 선형 비용으로 완주
실시간 스트리밍 추론 ★★★★★ 작은 state 만 유지
시계열 / DNA 시퀀스 ★★★★★ 매우 긴 sequential 입력 최적
코딩 (정확한 심볼 매칭) ★★★ (Attention 하이브리드 권장)
짧은 대화 (≤ 4K) ★★★ (이점 덜 뚜렷)

EulerStack YAML 예시

layer_templates:
  mamba_layer:
    mixer:
      type: mamba
      mamba:
        variant: mamba2      # mamba1 | mamba2
        d_state: 128         # state 크기 (64/128/256 이 일반적)
        d_conv: 4            # 1D 컨볼루션 커널 크기
        expand: 2            # 내부 확장 비율
    ffn:
      type: gated_mlp
      activation: swiglu
    state:
      ssm_state: true        # 추론 시 SSM state 유지

하이브리드 스케줄 예시 (Jamba 스타일 3 mamba : 1 attention):

layer_schedule:
  - template: mamba_layer
    repeat: 3
  - template: attn_layer
    repeat: 1
  # ... 반복

논문 출처