| 訓練ではなく、プログラムを「コンパイル」して変換器(transformer)の重みとして作れるのかどうかに興味を持ちました。ここ数か月取り組んできたのですが、最終的にいったんやめてまとめて書くことにしたので、少し長い投稿になっていますが、もしかしたくさんの方にとって面白いかもしれません。 基本的に、残差ストリームを一連の「レジスタ」として定義し、RPNインタプリタを実行するための注意(attention)重みとMLP関数を生成します(たとえば 今のところ、非線形ロジックはトレーニングによってMLPへ蒸留(distill)することにしましたが、注意重みはコンパイラによって完全に計算されています。最終的にはMLPの重みも計算できる可能性はあると思いますが、おそらくそのためには裏にもう少しASTが必要になります。 ある意味では、わりと役に立たない試みです(本当に、1.1GBものサイズになるRPNインタプリタが必要でしょうか)ですが、この取り組みがどんな用途に応用できるかについての考えを最後の方に書いたので見てください。この作業を通して、transformerやattentionのことを少し別のやり方で考えるようになったので、どこかの誰かにとって面白いと嬉しいです。 [リンク] [コメント] |
私の電卓はトランスフォーマー
Reddit r/LocalLLaMA / 2026/4/30
💬 オピニオンDeveloper Stack & InfrastructureModels & Research
要点
- この投稿では、学習ではなく「コンパイル」によってRPN電卓のインタプリタをトランスフォーマーの重みに実装する実験が説明されています。
- トランスフォーマーの残差ストリームを一連の「レジスタ」として捉え、RPNのロジックを実行するための注意(attention)重みをコンパイラが生成すると述べています。
- 非線形な計算部分については、MLP(中間層)に対して学習で蒸留(distill)しており、注意部分はコンパイラによって直接計算される設計です。
- ただし実用性は低い(電卓が1.1GB規模になるなど)としつつ、トランスフォーマーや注意の考え方に学びがあったとしています。
- MLPの重みも将来的にはコンパイルできる可能性があるものの、そのためにはASTのような追加の構造が必要だろうと推測しています。



