Montyll stands for Monty low-level, as it is inspired by N. Leadholm, V. Clay et al.'s implementation named Monty (code, paper), but integrates elements of low-level neocortical processing e.g. accurate neuron models 12 and grid cells to represent location 34. Montyll was explicitly designed to be aligned with the long term goals of the Thousand Brains Project (website, paper). It is written in C for performance and to be amenable to architectural studies.
Our goal with Montyll was to study the consequences of scaling Thousand Brains Systems on computing systems. As such, Montyll is not designed to be useful or solve a specific problem. It is rather designed to be a good representation of Thousand Brains Systems computations, especially as they integrate more low-level elements of neocortical processing.
To compile the code
git clone git@github.com:Xavier0301/cmontyll.git cmontyll
cd cmontyll
make
To run Montyll for 100 steps:
./main 100
To enable printing the states and other useful informations, use PRINT=0 (none), PRINT=1 (standard) or PRINT=2 (verbose) at compile time:
PRINT=2 make main
./main 10
For many learning modules:
NUM_NEIGHBORS=20 make scale-out
compiles the code and assumes each LM is connected to 20 other LMs. To run the code for 100 steps, across 50 learning modules:
OMP_NUM_THREADS=50 ./scale-out 100
On macos on an m2 pro 12-core chip, libopenmp somehow limits the number of threads to 248. To escape this limitation, compiles with gcc
brew install gcc
GCC_BIN=/path/to/gcc
OMP_NUM_THREADS=50 ./scale-out-gcc 100
although the performance is not great since sys time explodes around 250 learning modules.
Footnotes
-
J. Hawkins and S. Ahmad, “Why neurons have thousands of synapses, a theory of sequence memory in neocortex,” Frontiers in neural circuits, vol. 10, p. 23, 2016 ↩
-
S. Ahmad, A. Lavin, S. Purdy, and Z. Agha, “Unsupervised real-time anomaly detection for streaming data,” Neurocomputing, vol. 262, pp. 134–147, 2017 ↩
-
M. Lewis, S. Purdy, S. Ahmad, and J. Hawkins, “Locations in the neocortex: A theory of sensorimotor object recognition using cortical grid cells,” Frontiers in neural circuits, vol. 13, p. 22, 2019 ↩
-
N. Leadholm, M. Lewis, and S. Ahmad, “Grid cell path integration for movement-based visual object recognition,” arXiv preprint arXiv:2102.09076, 2021 ↩
