Monday, November 21, 2016

GoodAI Releases Arnold Simulator Alpha


In Brief

  • GoodAI is releasing an alpha version of its prototyping and simulation software called Arnold Simulator on GitHub
  • Arnold Simulator focuses on dynamic neural network topologies and provides transparent scalability to large computer clusters.
Today we are releasing an alpha version of Arnold Simulator. The purpose of this release is to let the community know what we are working on, get feedback and allow others to start experimenting with our platform. Note that while we intend Arnold Simulator to be used for rapid prototyping, the current version implements mostly only the core simulation concepts. It is very much work in progress, and we haven’t started using it in our research team yet.

What is Arnold Simulator?

Arnold Simulator is a software platform designed for development 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.

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.

A note on Brain Simulator: we are planning to release an update next month. Stay tuned. But let’s focus on Arnold Simulator release for now.

What is in this release?

We’re releasing the source code on GitHub, no binaries are being released. The readme file in the GitHub repository explains the programming model, and there are two example projects included in the sources. For quick introduction into how the UI works and how it is linked to the core, we’ve prepared a short demo video:

Technical Parameters

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 for MS Windows only. Both the core and the optional UI need to be compiled from the sources using the how-to instructions provided with the sources.

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 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.

Arnold Simulator is based on Charm++, a parallel computation library which 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. A preliminary check of a distributed simulation was successfully done on a cluster of 10 computers with a total of 40 CPU cores.

The design allows for a large number of synapses per neuron, so we’ve designed the synapses to be as small as possible. Instances of neurons in our testing models take over 3 kB of memory, while synapses fit into just under 200 bytes. That means we can fit a simulation of 1 million neurons and 5 million synapses into 4 GB of memory.


Arnold Simulator source code is licensed under Apache License version 2.0; however, it depends on the Charm++ library which has more restrictive license than Arnold Simulator itself. You are allowed to use Charm++ for research and for internal business purposes for free, but you need a special agreement with Charm++ authors for commercial distribution and use. The library is not distributed with Arnold Simulator, however you need to obtain it to build Arnold. Therefore, Charm++ license terms apply to Arnold Simulator binaries. See Charm++/Converse license or contact Charmworks for details.

We look forward to receiving your input! please don't hesitate to get in touch at
Read all about GoodAI's latest achievements, technology, and initiatives on our About page:
Marek Rosa
CEO, CTO of GoodAI
CEO of Keen Software House

No comments:

Post a Comment