ハクソク

世界を動かす技術を、日本語で。

Show HN: 24B LLMで3層を複製、論理的推論 .22→.76。トレーニングなし

概要

  • Transformerモデル内部に「推論回路」が存在し、特定の層を複製するだけで推論能力が大幅に向上
  • 重みや学習は一切変更せず、推論時に同じ層を2回通すだけで効果発現
  • Devstral-24BやQwen2.5-32Bなど複数モデルで大幅な性能向上を確認
  • circuit探索・適用ツール一式を公開、標準ベンチマークで効果検証済み
  • 同一モデル・同一重みで複数の「認知モード」を作り分け可能

Transformerモデルにおける「推論回路」複製による性能向上

  • David NgのRYS手法を再現し、**AMD製GPU(RX 7900 XT + RX 6950 XT)**で独自検証を実施
  • Transformer内部には**3~4層連続の「推論回路」**が存在し、ここを複製することでモデルの推論能力が飛躍的に向上
  • 重み・学習不要、推論時に「同じ層を2回通す」だけのアーキテクチャ変更
  • Devstral-24B(40層)では12~14層複製で論理推論が0.22→0.76(+245%)、GSM8KやMBPPでも向上
  • Qwen2.5-32B(64層)では7~9層複製で推論精度が76.5%→94.1%(+17%)
  • 複製する層の選択が極めて重要で、1層ずれただけで効果が消失・逆転する場合も

「認知モード」の多様性と回路境界の鋭さ

  • 複製パターンの違いで「数学特化」「EQ特化」など異なる認知モードを同一モデル・重みで実現
    • 例:13~16層ダブルパスは数学↑↑、トリプルパスはEQ↑↑、インタリーブなら純粋数学特化
  • 回路の境界は非常にシャープで、複製ブロックを1層ずらすと効果が消える/逆転
  • 小型モデルほど回路がコンパクト(24Bで3層、72Bで7層など)

circuit探索・適用ツールキットの使い方

  • sweep.py:最適な複製層パターンを自動探索
  • layer_path.py:任意の複製パターンでGGUFモデルを生成
  • gguf_surgery.py:低レベルな層複製処理
  • math_probe.py/eq_probe.py/reasoning_probe.py:各種プローブによる性能評価
  • compare_eval.py/visualize.py:評価結果の比較・可視化
  • lm-evaluation-harnessで標準ベンチマーク(BBH, GSM8K, MBPP等)を自動検証

実行例

  • Devstral-24Bで12~14層複製
    • python layer_path.py model.gguf improved.gguf -p "0..14,12,13,14,15..39" -v
  • Qwen2.5-32Bで7~9層複製
    • python layer_path.py model.gguf improved.gguf -p "0..9,7,8,9,10..63" -v
  • カスタム複製(例:13,14,15,16のトリプルパス)
    • python layer_path.py model.gguf experiment.gguf -p "0..16,13,14,15,16,13,14,15,16,17..39" -v

ベンチマーク検証

  • llama-serverで推論サーバー起動
  • lm-evaluation-harnessで各種タスク自動評価
  • compare_eval.pyでベースモデルと複製モデルを比較

技術的注意点・FAQ

  • VRAM消費:24Bモデルで3層複製時+約1.5GiB増加
  • 推論速度:複製層数に比例し遅延(例:40層中3層複製で約7.5%遅くなる)
  • 適用可能性:Mistral系(Devstral)、Qwen2系で実証済み。理論上全Transformerで応用可能
  • ファインチューニングとの関係:本手法はアーキテクチャ変更。ファインチューニング(重み調整)と組み合わせ可能

まとめと今後の展望

  • Transformerモデルは訓練過程で「機能回路」を自己組織化し、適切な層複製で特定能力を強化可能
  • 層複製のみで大幅な性能向上が得られるため、従来のファインチューニングや蒸留と併用することで更なるブレイクスルーが期待
  • ツールキット・手法はMITライセンスで公開中、誰でも自分のモデルで回路探索・適用が可能

参考

  • David Ng RYS手法: https://dnhkng.github.io/posts/rys/
  • 本手法・ツールキットGitHubリポジトリ(詳細・コード等)

Hackerたちの意見

なんかSolar 10.7Bを思い出すな。あれは2年前にしてはサイズの割にかなり良いモデルだったし、その背後にある「Depth Up-Scaling」技術も面白かった。ただ、層を繰り返した後に継続的にトレーニングする必要があったけどね。 https://arxiv.org/abs/2312.15166
うわ、元の投稿やREADME.mdの言葉の一つ一つが純粋なLLMだね。悲しいな。とにかく、これはMetaがLlamaの最初の公開リリースからずっと行われてることだよ…画像モデルにも使えるしね。リアルタイムで層を複製できるComfyUIのノードもいくつかあって、すごく早くいろんなテストができるよ。
書き方についての指摘は正しいね。このプロジェクトではClaudeをかなり使ったから、ドラフトも含めて。でも、実験やアイデアは僕のものだよ。先行研究については、層の複製が以前から探求されているのはその通りだね。ここで新しいと思うのは、体系的なスイープツールキットと標準ベンチマーク(lm-eval BBH、GSM8K、MBPP)で、どの3層がどのモデルに重要かを示していることだよ。Devstralの論理推論の結果(0.22→0.76)は僕にとって驚きだった。もし画像モデル用にこれを行うComfyUIのノードがあれば、リンクを教えてほしいな。「認知モード」の発見(同じ重みから異なる能力プロファイルを導く異なる複製パターン)は、拡散モデルにとってさらに面白いかもしれない。
明らかに示唆されることがあるね。初期モデルはループなしでトレーニングされてたから、連続したN層のスタックが安全にループできる単一の回路を表す可能性は極めて低い。ループ可能な回路は複数の層に重なっていて、異なる効果的な深さを持つ可能性が高い。例えば、3層のスタックをループできるのは、部分的に重なるミステリー回路Xの3/4をループすることでパフォーマンスが落ちるのを、ちょうどそのスタックに合うミステリー回路Yの3/3をループすることで得られるパフォーマンス向上が上回る、という幸運な偶然かもしれない。だから、もし最初からトレーニングするつもりなら、トレーニング中にループを組み込んで、各回路がさまざまな深さのスタックの中で自分の位置を見つけられるようにすればいいんだ。トランスフォーマーの真ん中はこんな感じだよ:(X₁)ᴹ ⊕ (Y₁∘Y₂)ᴺ ⊕ (Z₁∘Z₂∘Z₃)ᴾ ⊕ … 記法について:Xᵢは深さ1..i..Dの回路の層(幅は非常に小さい)、⊕は並列合成(幅を合計してトランスフォーマーの残りに加算)、∘は直列合成(スタッキング)、そしてᴹはループ。ᴹの値は1より大きければ問題ないけど、トレーニング後にそれを上げるのがポイント。これらの個々の回路を消去すれば、そもそも必要だったのか、または何のためだったのかがわかるから、すごく面白いと思うよ。
それに、これらはトランスフォーマーの初期と最終部分でも役立つと思うよ。構文解析や括弧のアンパース、プログラミング言語のASTなどは非常に再帰的だからね。今のモデルは、関連する再帰回路の「アンロール」バージョンを痛いほど学んでいるに違いない。固定された深さにアンロールされて、他の回路と層を競わなきゃいけないから、予算は60とかだしね。信じられないほど重複していて、定義上、任意の深さに一般化できないんだよ!
面白いことに、素数の深さの回路だけあればいいんだけど、幅は何か原則に基づいて調整した方がいいかもね。たぶんオイラーのトーシェント関数とか。
もう一つのアイデアかもしれないけど、これが実際にあるかはわからない。層のブロックサイズ(例えば…6)を選んで、トレーニング中にランダムにその位置を入れ替えるってのはどうかな。そうすれば、ブロック間の共通APIを強制したり、ブロックの専門化を促したりできるかもしれない。そして、トレーニング後に各ブロックが何をしているのかを分析する(ベンチマークを実行している間にそれを削除することで)ってのも面白いかも。
ベンチマークが信頼できると仮定すると(フルークを捉えているのではなく)、提供された説明はまだ納得できないな。僕が見る限り、これらのモデルのトレーニングプロセスには、層nの入力として(n-1)以外の出力を意味のあるものにするような要素はないと思う。もしかしたら、これらの層がアイデンティティとして初期化されて、トレーニングプロセスであまり変更されなかった場合を除いてね。(中間層にとってはあり得る?)これを考慮すると、(再度、ベンチマークが信頼できると仮定して)観察結果の最も妥当な説明は、(1) 複製される層がほとんどの入力に対してアイデンティティ関数に近いこと;(2) トレーニング中にモデルに何かが起こった(RLHF?)ことで、その推論性能が強制的に劣化したこと;(3) 劣化を引き起こすメカニズムが複製された層に関与していて、その複製が推論を劣化させるメカニズムを壊す効果を持つこと(例えば、トレーニング後に現れた「拒否」回路を潰すこと)。もっと簡潔に言うと、これは物事を壊すだけのアプローチだと思っていて、推論を向上させるのではなく、推論に悪影響を与えるものを選択的に壊しているんじゃないかな。
基本的に、みんな残差接続を使ってるから、正直驚くことじゃないよね。
実証的な発見は全く違う話を語っているよ:すべてのLLMレイヤーはおおよそ互換性のある内部表現を使っている。そして特に中間レイヤーはほぼ互換性があるかもしれない。彼らが「同じ表現の反復的な洗練」をしているように見えるのが多いんだ。様々なプローブや消去実験で証明されているけど、一番明白なのは古典的なロジットレンズだろう。これは、結びついた埋め込みとスキップの影響を受けている可能性が高いし、トレーニングの圧力も関係しているかもしれない。FFスタックの一番上と一番下は、同じトークン埋め込みを反映していて、これがモデル全体に伝播して、共有されたアイデンティティ空間を作り出している。スキップ接続がそれをレイヤーを通じて伝播させる。明示的な共有アイデンティティは課せられていないけど、アーキテクチャによって暗黙のものが設定されている。かなり確立されたことだよ。(今は:非常に推測的!過去のトークンに対する注意が暗黙の「ロバスト性/収束」圧力を生む?モデルは、特定のレイヤーで正しい表現にアクセスできるかどうかを「確信」できない。なぜなら、表現は過去のレイヤーだけでなく、注意を通じて渡された前のトークンの非常に不確実な内容にも依存するから。これがさらに変動を増やす。だから、トレーニングは「各レイヤーが自分がアクセスできるものに確信を持てないので、現在アクセスできるものを収束的に洗練するように発展する。なぜなら、それが注意による不確実性の圧力の下で役立つから」になるんだ。)LLMは非脆弱で、摂動に対して強いことで知られている。モデル手術の後にSFT/蒸留で焼き入れを行うと、さらに強くなるけど、ここではそれは行われていない。たくさんの奇妙なフランケンLLM実験が実証的にそれを証明しているから、誰かが中間レイヤーを複製することでいくつかの狭いタスクのベンチマークパフォーマンスを改善したのを見つけても驚かないよ。「収束的な反復洗練を行っているいくつかのレイヤーを複製することで、収束的な反復洗練が不足していたいくつかのタスクに利益をもたらす」というのは、私にとってはかなり妥当な仮説だよ。複製が「どこかで何かを壊す」可能性は高いし、未焼き入れのフランケンLLMの能力プロファイルには、元のモデルと比較していくつかのギャップがあるだろうと思う。でも「フランケンLLMのレイヤー複製が実際にいくつかのことを改善できる」というのは、私たちが知っていることから見ても、先に否定するにはあまりにも妥当すぎる。
> 私が知る限りでは、これらのモデルのトレーニングプロセスには、層nの入力として(n-1)以外の層の出力を意味のあるものにするような要素はないと思う。 "パススルー"のアイデンティティ接続がまさにその効果を持つんじゃない?これはトランスフォーマーモデルでは結構一般的だよね。
> 私が知る限りでは、これらのモデルのトレーニングプロセスには、層nの入力として(n-1)以外の層の出力を意味のあるものにするような要素はないと思う。 そうだよね、私も同じことを考えてた。出力が同じ「フォーマット」だったとしても、LLMは出力がどの順番で行くかを知る手段があるのかな?ノードの順序はネットワークの表現の一部であって、根本的なものじゃない。PNGファイルのバイトをシャッフルして、プログラムがまだそれをPNGファイルとして理解することを期待するようなものだよね。考えれば考えるほど、全然理解できなくなってきた。
> トレーニング中にモデルに何かが起こった(RLHF?)せいで、その推論性能が強制的に低下した。最近、こういう推測をする人が増えてきてるけど、なんでだろう?推論のような重要な指標でRLHFが性能を低下させる証拠は何かあるの?モデル開発者がそれを許容する理由は?「おっと、RLHFが推論能力を強制的に低下させるけど、仕方ないね」と言っているAI研究者の例を誰か挙げてくれない?それはまるで「水で動く車があるけど、石油の利益を壊すから売らない」みたいな陰謀論に思える。
一部のトランスフォーマーにはブロック再帰構造があるよ。最近、似たような観察をした論文がこちらにあるよ: https://www.alphaxiv.org/abs/2512.19941
へへ、ここ数日、Qwen2.5/Qwen3でまさにこの「神経解剖学」みたいなことやってたんだ。面白いよね。ネットワークをいじりやすくするために、フレームワークの魔法を排除した小さな推論エンジンを作ったんだ。生の行列計算だけで、メインの推論ループはたった50行のコードなんだよ!例えば、レイヤーを削除するのは簡単で、コードの中で「if」を使ってスキップするだけ。いくつかのレイヤーを削除しても、見た感じでは何も変わらないことがわかった。後のレイヤーを削除すると、モデルがEOSトークンを挿入するのを忘れて、ずっとおしゃべりし続ける(でもちゃんとした会話はできてる)。最初のレイヤーを削除すると、モデルがランダムなゴミを生成するんだ。どうやら、消去するのは簡単で、10個の例で拒否ベクトルを見つけて大半の拒否をキャンセルできたよ。面白いことに、拒否は中間のレイヤーでも起こるみたい(たぶん、26のうちの12レイヤー)。私が理解している限り、トランスフォーマーは残差接続のおかげでネットワークの破損に強い(完全に崩壊しない限り)。いくつかのレイヤーを再現しようとしたけど、ゴミのような結果しか得られなかった。推論レイヤーを見つけるのも自動化しないとダメだな、ただの推測じゃなくて。
自動研究に接続するの?
すごく興味深い内容だね。
ここでデビッド・ンが使った方法は、数日前に話題になってたよ。https://news.ycombinator.com/item?id=47322887
> デビッド・ンのRYSメソッドを再現したら、予想外のことが見つかった。 > トランスフォーマーには離散的な「推論回路」があるようで、3~4レイヤーの連続ブロックが不可分な認知ユニットとして機能している。正しいブロックを複製すると、モデルは推論パイプラインを2回実行する。重みは変わらないし、トレーニングもなし。モデルはただ考える時間が長くなるだけ。彼の投稿を読んでそれを予想しなかったのはどういうこと?それは彼が2年前に発見したことそのものだよ。興味がある人は、先週の投稿やコメントにもっと詳しい情報があるよ。https://news.ycombinator.com/item?id=47322887
それは明らかに予想外の部分じゃないよ。投稿の残りを読んでみて。
その変な部分は、実は私が期待していたことなんだ。これは数日前にスレッドに投稿したことに関連してる。https://news.ycombinator.com/item?id=47327132 必要なのは、正しいループパターンを選ぶメカニズムだね。そうすると、確かに異なるレベルの専門家の混合のように見える。モデルを入力パス、思考、出力パスに分けて、思考フェーズを多くの専門家の単一のループレイヤーにするんだ。そうすれば、ルーターが13,13,14,14,15,15,16を決めることになる。ルーターのトレーニングは読者への課題として残しておくよ。
もし「ルーティング」をするモデルを追加するなら、基本的に学習した逆接続を入れることになるから、最終的にはRNNになるよ。
昨年、いくつかのモデルで特定の層に局在した「推論」回路の証拠を見つけたよ!進行中の論文がこちらにあるよ: https://openreview.net/forum?id=mTjGBrkdtz