かつて私の FlashLM シリーズを覚えている人もいるかもしれません。私は無料枠の CPU で 3 値言語モデルを構築していた学生でした。v6 「SUPERNOVA」は P-RCSM アーキテクチャで 3500 トークン/秒に到達し、アテンションも畳み込みも使わず。スケーリングについて多くの貴重なフィードバックと当然の批判を受けました。
なぜ FlashLM から離れたのか
v6 の後、私は v7 の開発に数日を費やしました。計画は P-RCSM を 1000 万以上のパラメータへ適切なデータセットでスケールさせ、推論コンポーネントが実際に役立つかを検証することでした。ところが得られたのは天井で、予想した場所ではありませんでした。
FlashLM v6 の SlotMemoryAttention は、私が作った中で最も興味深いコンポーネントでした。8 個の学習スロット、トークンがそれらを単一の行列積で照会します。速くてシンプルで、トランスフォーマーが根本的にできないかもしれないことのヒントを示していました:任意の距離で明示的な状態を二次コストなしに維持すること。しかし静的で、入力に基づいてスロットが更新されませんでした。v7 のプロトタイプで動的にしようとしても同じ壁にぶつかりました。モデルは訓練データ分布内のパターンを問題なく学習しましたが、長いシーケンスでテストするとすべて崩れました。GatedLinearMixer、注意の置換、バックボーン全体。すべてが実際の計算を学習するのではなく、位置のパターンを記憶していました。
そこで閃きました。問題は私のアーキテクチャだけの問題ではありませんでした。問題は、標準の注意、リニア注意、あるいはゲート付き再帰といったどのアプローチにも、状態遷移を追跡する明確な機構がないことでした。表面的なパターンを記憶して外挿で失敗します。訓練の問題ではなく、根本的な帰納的バイアスの問題です。
そこで、より良いトランスフォーマーを作るのを止め、別のものを作ることにしました。
State Flow Machine (SFM)
SFM は「コードと構造化推論は単なるテキストではない」という単純なアイデアを軸にしています。彼らは潜在的な状態遷移と構造を伴います。単一の次のトークン予測バックボーンの代わりに、SFM には三つの専門的システムがあります:
System 1 (Execution) は変数の状態のようなものを追跡する明示的なスロットバンクを備えた DeltaNet 再帰セルです。微分可能なレジスタと考えてください。
System 2 (Structure) はプログラム依存エッジ上でグラフアテンションを行います。定義-使用連鎖や呼出しグラフのようなものです。
System 3 (Meta) はオーケストレーションと検証を扱います。
スロットバンクは、基本的には FlashLM の SlotMemoryAttention の進化形ですが、動的です。スロットはデルタ規則で更新されます:変数が再代入されると、旧値は消去され、新しい値が書き込まれます。DeltaNet セルは [-1, 1] に制約された固有値を用い、振動ダイナミクスを伴う可逆的な状態更新を可能にします。
Experiment 0: State Tracking
最初のテストは狭く具体的です。実行システムは合成プログラムを通じて変数値を追跡できますか?
課題は、N 個の代入文を実行した後、ターゲット変数の最終値を予測することです(整数 0 から 100)。演算には加算、減算、乗算、条件付き代入、累積、およびスワップが含まれます。難易度モードはハード、平均プログラム長は 18.5 文です。
比較対象は三つのモデルです:
State Slots(672K パラメータ)は DeltaNet + 64 スロットバンクを備えた SFM 実行システムです。 Transformer-Fair(430K パラメータ)は標準のデコーダー・トランスフォーマーで、ほぼパラメータが一致しています。 Transformer-Large(2.2M パラメータ)はパラメータが 3.3 倍のより大きなトランスフォーマーです。
訓練は 10,000 プログラムで、学習長を 1x、2x、4x、8x の長さでテストしました。
結果
| モデル | パラメータ | 1x 正答一致 | 2x 正答一致 | 4x 正答一致 | 8x 正答一致 | 4x/1x 比率 |
|---|---|---|---|---|---|---|
| State Slots | 672K | 11.2% | 12.9% | 8.9% | 3.6% | 0.79x |
| Transformer-Fair | 430K | 93.2% | 76.9% | 1.8% | 0.9% | 0.02x |
| Transformer-Large | 2.2M | 99.8% | 95.4% | 1.6% | 1.7% | 0.02x |
トランスフォーマーは分布において State Slots を圧倒します。99.8% 対 11.2%、まったく引けを取りません。しかし 4 倍の長さで何が起こるか見てみましょう:
両方のトランスフォーマーは 77% から 95% へ崩れ落ち、2% 未満へと崩壊します。壊滅的な失敗です。State Slots は 11.2% から 8.9% に低下します。精度の 79% を保持します。
正答の近さ(正解と ±1 の範囲内)についての数値は、さらに強い物語を語ります:
| モデル | 1x 近接 | 4x 近接 | 8x 近接 |
|---|---|---|---|
| State Slots | 95.1% | 77.0% | 34.0% |
| Transformer-Fair | 100% | 15.7% | 15.1% |
| Transformer-Large | 100% | 13.6% | 13.4% |
4 倍の長さでは、State Slots が正解の ±1 の範囲内を予測できる割合が 77%。トランスフォーマーは 14–16% 程度です。State Slots は実際にプログラム状態を追跡しており、トランスフォーマーは推測しています。
正直な評価
分布内のギャップは現実的で重要です。11% 対 99% は軽視できません。なぜそれが起こるのかは私が正確に理解しており、それを修正するつもりです:
まず、State Slots は対数空間スキャンの数値安定性の問題のため FP32 で訓練する必要がありました。トランスフォーマーは FP16 混合精度を使えたため、同じウォール時計時間で実質的に2 倍の訓練計算量を得ました。
次に、現在の DeltaNet セルには忘却ゲートがありません。変数が再代入されると古い値はきれいには消去されず、新しい状態に漏れ込みます。データ依存の忘却ゲートを追加し、ICLR 2025 の Gated DeltaNet の研究から着想を得ることで、変数追跡の精度が大きく向上します。
第三に、このタスクに対するスロットのルーティングは過剰にパラメータ化されています。プログラムには約 10 個の変数しかないのに 64 スロットを使うと、モデルの容量の大半が計算自体の学習よりもルーティングに割かれることになります。
次バージョンでは忘却ゲート、キー・バリュー分解、64 から 16 へのスロット数の削減、残差スキップ接続を追加します。分布で 50% を超えることを目標に、一般化の利点を維持します。
What this is NOT
これは「トランスフォーマーは死んだ」という話ではありません。これは汎用のコードモデルでもありません。これは、長さの外挿において明示的な状態メモリがより良く一般化するかを検証する、合成タスクでの単一実験です。結論はおそらく「はい」です。
Hardware
すべて Huawei Ascend 910 ProA NPUs の DaVinci アーキテクチャで動作します。DeltaNet セルは Cube ユニット用に最適化されており、16×16 の行列タイルを処理します。数値安定性のための選択的 FP32、ログ空間スキャン、バッチ処理を行います。私は TASK_QUEUE_ENABLE=2、CPU_AFFINITY_CONF=1、AIV モードの HCCL など Ascend 固有の環境最適化を多数設定しました。
FlashLM への接続
FlashLM は極限状態での速度を重視していました。SFM はそれから学んだことを重視しています。SlotMemoryAttention が起源となり、デルタ規則が静的なスロットで私が試みていたものを適切に形式化しており、Ascend NPUs は現在私がアクセスできるハードウェアです。まだ学生ですが研究室のアクセス権を得て、状況が変わりました。FlashLM のリポジトリは公開され MIT ライセンスのままです。SFM は次の章です。
リンク
GitHub: https://github.com/changcheng967/state-flow-machine
FlashLM(以前の作業): https://github.com/changcheng967/FlashLM
フィードバック歓迎です。特に、同様の状態追跡アーキテクチャを試したことがある方や、分布内ギャップを埋める考えをお持ちの方の意見を聞きたいです。
[リンク] [コメント]




