長らく取り組んでいる進化的アルゴリズムによる人工ニューラル ネットワークの進化シミュレーションですが、私が FlexNeuroAI と名付けた独自のアルゴリズムの Unreal Engine 5 実装のパフォーマンスを調整しました。
疎行列について Eigen ライブラリーの使用をやめて独自の CSR 疎行列処理を実装し、完全に非同期並列処理のマルチスレッディング化しました。
遺伝子情報を server プロセスとの間で遣り取りする ZeroMQ 通信は Hub 化して大量の送受信に対応。
FlexNeuroAI 実装の四脚 Ant ロボット個体同士の交配と遺伝子の交叉、遺伝子の突然変異処理も完全マルチスレッド化。
文字列比較を行っていた箇所を列挙型に置き換えました。
そして FlexNeuroAI という命名の元となる特徴であるリアルタイムの神経可塑性の処理も高速化する為、独自の疎行列実装に対して直接メモリーに連続アクセスをし易い形で対応させました。
尚、完全非同期化に伴い、目標の白色 UFO を個々の Ant ロボットに紐付けて 64 機とし、三つ葉結び目軌道で徐々に移動するように変更しました。
それらのチューニングの結果、ニューロンが 300 個弱、シナプスが 6,000 弱の状態の Ant ロボットを 64 体同時に処理し、全て物理シミュレーションで動作しつつ、Intel Core i7-13700 CPU, Nvidia GeForce RTX 4070 SUPER, 64GiB DDR5 DRAM のミドルタワー型デスクトップ PC で、上記の動画の通り、CPU 使用率全コア平均 30 % 程度で 120 fps 超えを達成しています。

因みに線虫の一種は 302 個のニューロンと 7,000 個強のシナプスを持つそうですので、FlexNeuroAI が線虫を超えるまであと僅かです。
まだ計算能力に余裕が有るようなので、ネットワークや個体数などでもっと規模を増大させる事が出来そうです。

Python, Networkx, Datashader で描画しています。
netgraph ライブラリーでのネットワーク グラフの描画はノードやエッジが増えるとどうも処理が重いようなので、Python, Networkx, Datashader による描画にしてみました。
こちらはかなり高速な描画が出来ますね。
見ての通り、datashader.bundling.hammer_bundle() でエッジを束線(bundle)にしてあります。
もし私の取り組みに関してビジネスや研究の話をしたい方がいらっしゃいましたら、是非ともご連絡下さい。
Bluesky: https://bsky.app/profile/hypersphere.bsky.social
X: https://x.com/SuperNeuronAI
コメント