Doomformerは、整数ニューラルネットワークをZDoomマップにコンパイルし、ゲームエンジンにニューラルネットワークの計算を実行させるプロジェクトです。このシステムでは、ゲームの内部メカニズムが計算基盤として再利用されています。ゲームによって生成される追加のプレイヤーエンティティである「voodoo dolls」が算術演算を実行し、セクターのライトレベルやプレーンの高さが結果の値を保存するために使用されます。このプロジェクトでは、実行中のゲームから読み取られるすべての値を、許容誤差ゼロでNumPyの整数リファレンスと比較することで正確性を保証しています。

DOOMのマップに統合されたニューラルネットワークを示すDoomformerプロジェクトのプロモーショングラフィック。
Doomformerプロジェクトは、整数ニューラルネットワークをDOOMゲームエンジンにコンパイルする様子を実証しています。github.com

この画像は、ニューラルネットワークの計算がDOOMの内部メカニズムにマッピングされるDoomformerプロジェクトの核となる概念を表しています。

この仕組みは、スクリプトやエンティティの相互作用を通じて複雑なロジックを処理するゲームの能力に依存しています。dollsはすべての乗算加算、活性化、および比較操作を実行します。dollsがコアとなる算術を処理する一方で、ACS(Automated Control Script)レベルのスクリプトはデータの流れを管理し、入力ゲートの移動、dollsのリワインド、およびネットワークからの結果のコピーを制御します。このアプローチにより、ゲームの世界はニューラルネットワークのアーキテクチャの物理的な表現へと変貌し、「重み」や「バイアス」はマップのジオメトリやエンティティのプロパティにエンコードされます。

技術的には印象的ですが、この手法は標準的な計算ライブラリよりも大幅に低速です。小さな多層パーセプトロン(MLP)の場合、エンジンの実行時間はNumPyよりも約23,000倍遅く、呼び出し前後の完全なタイマーでは最大65,000倍遅くなることがあります。例えば、手書きの数字を処理するのに、デフォルトのスケジュールでは実時間のDOOMで163秒かかることがありますが、特定の最適化フラグを使用することでこれを8秒に短縮できます。また、このプロジェクトには「museum」マップも含まれており、ユーザーはネットワークと対話することができ、接続を再配線してそれがリアルタイムで出力にどのように影響するかを確認することも可能です。