FlexNeuroAI のパフォーマンスを向上させました。

Unreal Engine 5 エディター上で動く大量の Ant ロボット。 FlexNeuroAI の人工ニューラル ネットワークを実装し、画面奥の白色の UFO の群れを目標に歩いて行く。

長らく取り組んでいる進化的アルゴリズムによる人工ニューラル ネットワーク進化シミュレーションですが、私が 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 超えを達成しています。

FlexNeuroAI のネットワークのグラフをプロットした画像。 様々な色の円形で示されるニューロン同士が多数の曲線で複雑に結ばれている。中央上部に明るい青緑色の円形のニューロンのクラスターが有り、下方にやや散開して様々な色の円形のニューロンが相互に結ばれている。
300 個弱の神経細胞と 6,000 個弱のシナプスから成る FlexNeuroAI の人工ニューラル ネットワーク グラフ。

因みに線虫の一種は 302 個のニューロン7,000 個強のシナプスを持つそうですので、FlexNeuroAI が線虫を超えるまであと僅かです。

まだ計算能力に余裕が有るようなので、ネットワークや個体数などでもっと規模を増大させる事が出来そうです。

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

コメント

タイトルとURLをコピーしました