Arnold Simulator is a software platform designed for rapid prototyping of AI systems with highly dynamic neural network topologies. The software will provide tools for our research and development, but it is also designed for high performance and is transparently scalable to large computer clusters.
An alpha version of Arnold Simulator is available on GitHub: https://github.com/GoodAI/ArnoldSimulator
Arnold Simulator is the next generation of GoodAI in-house prototyping software. It follows in the steps of GoodAI’s Brain Simulator, which focuses more on the standard machine learning algorithms. We’re designing it for large, highly dynamic, heterogeneous and heterarchical networks of lightweight actors, and with a focus on concurrency, parallelism and low-latency messaging.
Arnold Simulator consists of a simulation core and a user interface (UI) client. The core is targeted to run on a network of computers with GNU/Linux or MS Windows operating systems. For now, the UI is targeted only for MS Windows. For concurrency, we’re using the actor model, where independent actors communicate via messages. The simulation runs in discrete time-steps, during which the individual actors are processed in parallel. In between simulation steps, the system can interact with any virtual or real environment via sensors and actuators. The design of Arnold Simulator will allow us to effectively implement the growing general AI architectures that we are focusing on.
Arnold Simulator is based on Charm++, a parallel computation library that implements the actor model and has built-in load balancing that migrates actors across processing units. We intend to try coupling this technology with the latest manycore processors which we hope will allow us to scale the simulation up to millions of actors and billions of connections per machine. It’s targeted to run on a network of MS Windows or GNU/Linux machines. We’re planning to release a pre-alpha version of our software for non-commercial use in the near future.
Arnold Simulator is designed with the following assumptions in mind: the network is composed of heterogeneous elements, it can be manipulated to the granularity of individual elements, it can be growing or shrinking all the time on the granularity of individual elements, and it can be so large that it will not fit the memory of a single machine. This set of assumptions naturally leads to dynamic load balancing of migratable actors communicating via asynchronous messages.