
Mambaは、Attentionを使わずに長いsequenceを効率よく処理するためのarchitectureです。土台にはSSM(State Space Model、状態空間モデル)があり、過去を固定長のstateへ圧縮しながら、tokenを一つずつ更新します。
ただし、単にRNNへ戻ったわけではありません。Mambaの核心は、入力に応じて「何をstateへ書き込み、何を残し、何を読み出すか」を変えるSelection mechanismと、その計算をGPU上で並列化するSelective Scanにあります。
- 3行で分かるMamba
- SSM、S4、Selective SSM、Mambaは同じものではない
- なぜTransformer以外の道が必要なのか
- 状態空間モデルを一つの式から理解する
- 固定SSMには「再帰」と「畳み込み」の二つの顔がある
- 固定SSMは「内容を見て残す」が苦手
- Mambaの核心は入力依存のDelta、B、C
- Selective Scanは選択機構そのものではない
- Mamba blockのarchitecture
- training、prefill、decodeでは計算の姿が違う
- Transformer、RNN/LSTM、Mambaを比較する
- 「線形時間」と「長文を完全に覚える」は別
- 原論文の結果はどう読むべきか
- Mambaを選ぶときの確認事項
- まとめ
- 参考文献
3行で分かるMamba
- SSMは、過去のsequenceを固定長stateへ畳み込み、
現在の入力 + 前のstateから次のstateを作ります。 - Mambaは離散化step \(\Delta\)、入力写像 \(B\)、読み出し \(C\)をtokenごとに変え、重要な情報を選択的に残します。
- 計算量はsequence長 \(L\)に対して線形で、decode時のstateも固定長です。ただし、固定長stateへの圧縮には情報bottleneckがあります。
この記事では、Mamba原論文をもとに、SSMの式からMamba block、Selective Scan、Transformerとの違いまで順番に説明します。
SSM、S4、Selective SSM、Mambaは同じものではない
最初に用語の粒度をそろえます。

| 用語 | 粒度 | 役割 |
|---|---|---|
| SSM | 数学的なsystem | 入力、内部state、出力の時間発展を表す |
| S4 | neural sequence layer | 構造化したstate matrixにより長いsequenceを効率よく扱う |
| Selective SSM / S6 | 入力依存のSSM layer | tokenに応じて保持、忘却、読み出しを変える |
| Mamba | end-to-end architecture | Selective SSM、local convolution、gate、residualを組み合わせる |
SSMはMamba固有の発明ではなく、制御工学などで使われてきた数学的表現です。S4論文は、SSMを長いsequence向けのneural layerとして効率化しました。Mambaはその流れに入力依存の選択性とhardware-awareな計算方法を加え、言語などの離散dataへ適応させました。
なぜTransformer以外の道が必要なのか
TransformerのSelf-Attentionは、queryとkeyの類似度を使い、現在のtokenが過去のどのtokenを見るかを内容に応じて決めます。このcontent-based accessは強力ですが、Dense Attentionでは長さ \(L\)のsequenceに対して概ね \(L^2\)個のtoken pairを計算します。
autoregressive decodeでは、過去tokenのKeyとValueをKV Cacheへ保存します。そのため、生成が長くなるほどcacheも増えます。
一方、recurrent modelは過去を固定長stateへ要約します。

| 観点 | TransformerのDense Attention | MambaのSelective SSM |
|---|---|---|
| 過去の保持 | 過去tokenごとのKey/Value | layerごとの固定長state |
| sequence全体の計算量 | 概ね \(O(L^2)\) | 概ね \(O(L)\) |
| decode時の保持量 | 生成長に応じて増加 | sequence長には依存しない |
| 過去情報へのaccess | tokenごとに直接参照できる | 圧縮されたstateを経由する |
| 主な強み | 内容に基づく直接比較 | streamingと長いsequenceの効率 |
| 主な弱み | 長さに伴う計算・memory増加 | 固定長stateの情報bottleneck |
ここでの目標は、Attentionの機能を単に削ることではありません。内容に応じた選択を残しながら、sequence長に比例する計算へ変えることです。
状態空間モデルを一つの式から理解する
連続時間のSSMは、次の二つの式で表せます。
\(x(t)\)は入力、\(h(t)\)は内部state、\(y(t)\)は出力です。matrixの役割は次のように読めます。
- \(A\):前のstateを時間とともにどう変化させるか
- \(B\):入力をstateへどう書き込むか
- \(C\):stateから何を読み出すか
- \(D\):入力をstateを経由せず出力へ渡すskip connection

この式は連続時間なので、token列を扱うには離散化します。入力がstep間で一定だとみなすzero-order holdでは、step幅 \(\Delta\)を使って次のparameterを作れます。
離散化後の更新は、見慣れたrecurrent formになります。
つまり各stepで、前のstateを \(\bar A\)で運び、現在の入力を \(\bar B\)で書き込みます。
scalar例で「過去をstateへ畳み込む」を見る
最小の例として、\(A=-1\)、\(B=C=1\)、\(D=0\)、\(\Delta=0.5\)とします。すると次のようになります。
したがって更新式は次のとおりです。
式を過去へ展開すると、現在から1 step、2 step、3 step前の入力の係数は、およそ 0.393 → 0.239 → 0.145 → 0.088 と減衰します。

高次元のSSMでは、複数のstate成分が異なるtimescaleを担当できます。HiPPO論文は、過去のsignalを低次元stateへonlineで圧縮する理論を与え、S4へつながる長期memoryの土台になりました。
固定SSMには「再帰」と「畳み込み」の二つの顔がある
\(\bar A\)、\(\bar B\)、\(C\)が全stepで同じ、つまりtime-invariant(時不変)なら、recurrent formを展開して固定kernelを作れます。初期stateを0、簡単のため \(D=0\)とすると、長さ \(L\)のkernelは次のようになります。
出力sequence全体はconvolutionとして表せます。

この二面性が重要です。
- 生成時:前のstateだけを使うrecurrent formで、1 tokenずつ安く更新する
- 学習時:sequence全体をconvolutionとして並列に計算する
S4はstate matrix \(A\)を構造化し、このkernelを長いsequenceでも効率よく計算できるようにしました。しかし、固定parameterには別の問題があります。
固定SSMは「内容を見て残す」が苦手
言語では、すべてのtokenを同じtimescaleで扱えばよいわけではありません。電話番号を後で復唱するtaskなら数字を残し、間に入る説明文はstateを大きく変えない方が有利です。
Mamba論文は、この違いをSelective Copyという人工taskで明確にしました。入力位置と、覚えるべき記号の間隔が変わると、固定した状態遷移だけでは「どのtokenを残すか」を内容に応じて切り替えにくくなります。

Attentionならqueryとkeyの内容を比較し、必要な位置へ直接重みを置けます。Mambaは同じmatrixを作る代わりに、現在のtokenを見てstate updateそのものを変える方針を採ります。
Mambaの核心は入力依存のDelta、B、C
MambaのSelective SSMでは、主に \(\Delta\)、\(B\)、\(C\)を入力 \(x_t\)の関数にします。
それぞれの直感は次のとおりです。
| parameter | tokenごとに変える意味 | 直感 |
|---|---|---|
| \(\Delta_t\) | stateをどの程度進めるか | 過去を保持するか、更新・忘却するか |
| \(B_t\) | 現在の入力をstateへどう入れるか | 何を書き込むか |
| \(C_t\) | stateのどの成分を出力へ使うか | 何を読み出すか |
| \(A\) | stateの基本的な時間発展 | Mambaでは構造化され、tokenごとの入力依存にはしない |
\(\Delta_t\)はgateに近い役割を持ちます。安定なscalar systemとして \(A=-1\)を考えると、\(\bar A_t=e^{-\Delta_t}\)です。
- \(\Delta_t=0.1\)なら \(\bar A_t\approx0.905\):前のstateを約90.5%残す
- \(\Delta_t=2.0\)なら \(\bar A_t\approx0.135\):前のstateを約13.5%残し、大きく更新する

実際のMambaはvector-valuedで、\(B_t\)と\(C_t\)も同時に変わります。このscalar例は、\(\Delta_t\)が時間尺度を入力に応じて変える直感を示すものです。
選択性と引き換えに固定convolutionを失う
固定SSMでは、全位置で同じ \(\bar A\)、\(\bar B\)、\(C\)を使うため、一つのkernel \(\bar K\)を先に計算できました。Mambaではこれらがtokenごとに変わるため、位置 \(t\)の係数は入力sequence自体に依存します。
したがって、全sequenceへ同じ固定kernelを適用する単純なconvolutionにはできません。ここで必要になるのがSelective Scanです。
Selective Scanは選択機構そのものではない
名前が似ていますが、二つの役割を分けると理解しやすくなります。
| 要素 | 答える問い | 役割 |
|---|---|---|
| Selection mechanism | 何を残し、何を忘れるか | \(\Delta_t\)、\(B_t\)、\(C_t\)を入力依存にする |
| Selective Scan | 依存関係のある更新をどう速く計算するか | recurrent updateをparallel scanで処理する |
state updateは前のstateに依存しますが、affine transformationの合成として結合できます。二つのstepを (A_1, b_1)、(A_2, b_2) と書くと、合成は次の形です。
この演算は括弧の付け方を変えても結果が同じ結合則を持つため、tree状のparallel scanが使えます。全stepを完全に逐次処理する代わりに、部分区間の変換を並列に合成できます。
hardware-awareとはmemory trafficまで設計すること
理論上の演算回数だけではGPU上の速度は決まりません。Mambaでは、入力依存parameterで拡張された大きなstate tensorをHBM(GPUの大容量外部memory)へ何度も書き戻すと、memory trafficがbottleneckになります。

原論文のhardware-aware algorithmは、主に次を組み合わせます。
- parameter生成、離散化、scanを一つのkernelへfusionする
- scan中のstateを高速なon-chip SRAMへ置く
- 中間stateをHBMへmaterializeせず、backwardで必要な値を再計算する
recomputationは計算を少し増やしますが、HBMとの読み書きを減らせます。これはFlashAttentionと同様に、演算量だけでなくmemory hierarchyを意識する設計です。ただし、MambaはAttentionを正確に計算するalgorithmではなく、Selective SSMという別のoperatorを計算します。
Mamba blockのarchitecture
Selective SSMだけでは、完全なlanguage model blockにはなりません。original Mamba blockは、localなtoken mixing、選択的な長期state、gateを一つにまとめます。

概念的な処理は次の順序です。
- normalization後の入力を二つのbranchへprojectionする
- main branchで短いcausal Conv1Dにより近傍tokenを混ぜる
- SiLU activationの後、Selective SSMで長い方向へstateを伝える
- gate branchをSiLUへ通し、main branchの出力と要素積を取る
- output projectionを通し、block入力とのresidual connectionを加える
Conv1Dは近傍pattern、Selective SSMは圧縮stateを通じた長い依存、gateは内容に応じた出力制御を担います。原論文のMamba architectureは、独立したAttention blockやMLP blockを置かず、このMamba blockを積み重ねます。
training、prefill、decodeでは計算の姿が違う
同じmodelでも、sequenceをまとめて処理する段階と、1 tokenずつ生成する段階では最適な計算方法が異なります。

trainingとprefill
prompt全体のtokenは既知なので、Selective Scanにより複数位置の部分計算を並列に進めます。計算量はsequence長に対して線形ですが、並列scanの実効速度はkernel、hardware、shapeに依存します。
autoregressive decode
新しいtokenが1個来るたびに、各layerのSSM stateを1回更新します。過去token全体を再入力する必要はなく、Transformerのように生成長に比例してKey/Valueを増やし続ける必要もありません。
ただし、保持量がゼロになるわけではありません。各layerはSSM stateに加え、短いcausal Conv1D用のstateも持ちます。「KV Cacheがない」は、過去tokenごとのKey/Valueを保持しないという意味です。
Transformer、RNN/LSTM、Mambaを比較する
| 観点 | RNN / LSTM | Transformer | Mamba |
|---|---|---|---|
| 過去の表現 | 固定長hidden state | tokenごとのKV | 固定長の構造化SSM state |
| 内容に応じた制御 | gateで更新 | Attention weightで参照 | 入力依存の\(\Delta,B,C\)で更新・読出し |
| sequence全体の計算 | \(O(L)\) | Denseなら \(O(L^2)\) | \(O(L)\) |
| training並列性 | recurrenceが制約 | token方向へ高い | parallel scanで確保 |
| decode memoryの長さ依存 | なし | KV Cacheが増加 | なし |
| 過去の特定tokenへの直接access | できない | できる | できない |
MambaはRNNと同じくrecurrent stateを持ちますが、長期memoryを意識した構造化SSMとparallel scanを使う点が異なります。またTransformerと同じcontent-based reasoningを、token pairの比較ではなくstate updateの選択性で近似します。
「線形時間」と「長文を完全に覚える」は別
Mambaの利点を正しく捉えるには、計算効率と情報容量を分ける必要があります。
長さ \(L\)が増えてもstateの大きさを固定すれば、計算とdecode memoryは扱いやすくなります。しかし、1,000 tokenでも100万tokenでも同じ有限stateへ圧縮する以上、過去の細部をすべて損失なく保持することはできません。
Attentionは過去tokenごとの表現を残し、必要な位置へ直接戻れます。Mambaは「何を残すべきか」を学習し、stateへ要約します。この違いから、次のtrade-offが生まれます。
- streaming、音声、長いsignal:固定長stateと線形計算が生きやすい
- 過去の特定位置を正確に引用するtask:直接accessできるAttentionが有利になり得る
- 両方が必要なtask:AttentionとSSMを組み合わせるhybridも選択肢になる
前回のLong Context解説で扱った「最大context長」と「実効context長」の違いはMambaにも当てはまります。線形に計算できる長さと、その全域から情報を正確に使える長さは同じではありません。
原論文の結果はどう読むべきか
Mamba原論文は、language、audio、genomicsなどでMambaを評価しました。language modelingでは、Mamba-3Bが同規模のTransformerを上回り、2倍規模のTransformerに匹敵したと報告しています。また、論文条件ではTransformerより最大5倍高いinference throughputを報告しました。
これらは、Selective SSMが単なる長文向けの理論ではなく、汎用sequence backboneになり得ることを示す重要な結果です。一方で、次のように限定して読む必要があります。
- 2023年の論文で比較したmodel、data、hardware、実装条件での結果である
- 「すべてのTransformerより常に5倍速い」という意味ではない
- model規模、training recipe、kernel対応、batch sizeで相対性能は変わる
- benchmark上の平均性能と、特定の長文retrieval能力は分けて評価する必要がある
後続のMamba-2論文は、Structured State Space Dualityを通じてSSMとAttentionの関係を一般化し、Mamba coreを再設計しました。これは発展形であり、original Mambaと同一のarchitectureではありません。
Mambaを選ぶときの確認事項
Mamba系modelを実装やsystemへ採用するときは、次の順で確認すると判断しやすくなります。
- taskはstreamingか:入力が継続的に届くなら固定長stateが有利
- 正確な過去参照が必要か:文書中の特定箇所を直接引くtaskでは圧縮bottleneckを評価する
- sequence長は支配的か:短いsequenceではkernel overheadを含めた実測が必要
- optimized kernelを使えるか:理論上の \(O(L)\)だけでなくhardwareとsoftware stackを確認する
- trainingとservingを分けて測るか:prefill throughput、decode latency、memoryを別々に測る
- hybridが適切か:local/global AttentionとSSMを組み合わせる余地を検討する
著者の公式Mamba repositoryにはSelective ScanとMamba blockのreference implementationがあります。実装を読むときは、model定義だけでなく、optimized scan kernelとincremental inference用stateの経路も合わせて確認すると理解が深まります。
まとめ
Mambaは、SSMを入力依存にするSelection mechanismと、そのrecurrent computationをGPUで効率よく計算するSelective Scanを組み合わせたarchitectureです。
固定SSMはrecurrent formとconvolution formを使い分けられますが、全tokenを同じ規則で扱うため、離散dataの内容に応じた選択が弱いという課題があります。Mambaは \(\Delta\)、\(B\)、\(C\)をtokenごとに変え、「残す・書く・読む」を制御します。その代わり固定convolutionは使えなくなり、hardware-aware parallel scanが必要になります。
Transformerと比べた本質的なtrade-offは、過去tokenへの直接accessと固定長stateへの圧縮です。Mambaはsequence長に対して線形にscaleし、decode時の保持量も一定ですが、長い過去を有限stateへ圧縮するbottleneckは残ります。用途に応じてTransformer、Mamba、hybridを選ぶことが重要です。
参考文献
- Mamba: Linear-Time Sequence Modeling with Selective State Spaces
- Efficiently Modeling Long Sequences with Structured State Spaces
- HiPPO: Recurrent Memory with Optimal Polynomial Projections
- Transformers are SSMs: Generalized Models and Efficient Algorithms Through Structured State Space Duality
- state-spaces/mamba



コメント