Thank Matt. It is great to have a quick view of the overall state of the project like this. Very useful!
- Jeff On Sat, Apr 11, 2015 at 12:48 PM Ralf Seliger <[email protected]> wrote: > Thanks Matt. This is the overview I have been trying to piece together > by myself over the last couple of weeks. > > RS > > > Am 11.04.2015 um 19:43 schrieb Matthew Taylor: > > Hello NuPIC, > > > > I've seen a lot of new names on the mailing lists lately, so I thought > > this might be helpful. > > > > When NuPIC went open-source in 2013, it was a Python program with a > > C++ core. Almost immediately after we open-sourced, the community > > wanted to extract all the C++ out of the project and make it > > independent of the Python code. Makes sense right? So we did it. But. > > not. quite. all. the. way. (that will be important later...) > > > > Almost all the algorithms are written in both Python and C++. We > > implement new algorithms in Python and port them to C++ once they are > > vetted and optimization is required. So the newest algorithms are > > still not ported to C++. > > > > The nupic.core Extraction Plan [1] is outdated, but it contains some > > diagrams that outline the basic architecture of NuPIC and nupic.core. > > You can see how there is both a C++ interface and a Python API that > > can be installed with pip (requires python development headers). > > Either one gives you the same algorithmic capacity. The Python API is > > easier to use, and contains a basic framework for running experiments > > called the OPF [2]. I use the OPF for my experiments, but those with > > bigger plans use the Network API [3]. The Network API offers the > > building blocks for hierarchy. The OPF is hard-coded to set up a > > Network with only one layer, so no hierarchy. The Network API is > > basically the same whether you are using the Python or C++ interface. > > They each give you ability to build out flexible hierarchies. > > > > But there's a catch. The hierarchy has limited utility without > > temporal pooling, and there are still ideas to implement in that field > > [4]. We (Numenta) aren't even working on it right now. We think there > > are still things to improve within one layer for cells before moving > > on to a hierarchy. But the hierarchy will come. (FYI we've implemented > > hierarchy in the past in a closed-source project, so we have proven to > > ourselves that it works.) > > > > All the recent research [5] has been about sensorimotor integration. > > In fact, due to Numenta's open research policy, you can see exactly > > what Subutai, Chetan, and other NuPIC research engineers have been > > working on [6]. > > > > This is basically what NuPIC looks like today [7]. We are in the > > process of Step #2 of the "extraction" plan [8]. Richard Crowder [9], > > a NuPIC contributor, is working on moving the Temporal Memory > > algorithm from Python into C++ right now. Subutai and Scott just had a > > video chat with him about the work [10]. This is important because > > without the TM algorithm ported to C++, the nupic.core project is not > > very useful. The idea has always been to have the C++ nupic.core > > project completely independent and feature complete. This will allow > > anyone in the community with a language preference to create bindings > > to the C++ interface and create an API in their favorite language, > > thus exposing the core HTM functionality to many runtime environments > > besides Python. > > > > We are also working on a platform-independent serialization technique > > using Capn Proto [11], which will allow anyone running NuPIC to save > > their Network states completely and re-instantiate them with complete > > memory on different platforms. Once all this work is complete, users > > of any NuPIC runtime should be able to transfer models across > > networks, sharing all the knowledge they've learned about the data > > they have seen so far. This should prove to be really useful as NuPIC > > evolves and more people are running it in different environments. > > > > So there's a bunch of stuff to digest! I'm trying to get more people > > involved, but we are pretty strict with PR reviews. Always nice, but > > strict. Anyone in the community is welcome to sign our contributor > > license [12] and start working on newbie or "help wanted" [13] tasks. > > We are especially interested in getting people more versed in the > > algorithms themselves. Several community members have worked on their > > own implementations of HTM [14], which seems to be an excellent way to > > really understand them. We have bi-weekly planning meetings that are > > open to the public [15] and we occasionally have Numenta Office Hours > > [16] where Jeff and Subutai address community questions and comments. > > > > [1] https://github.com/numenta/nupic/wiki/nupic.core-Extraction-Plan > > [2] https://github.com/numenta/nupic/wiki/Online-Prediction-Framework > > [3] https://github.com/numenta/nupic/wiki/NuPIC-Core-Network-API > > [4] > https://github.com/numenta/nupic/wiki/New-Ideas-About-Temporal-Pooling > > [5] https://github.com/numenta/nupic.research > > [6] > https://github.com/numenta/nupic.research/wiki/Current-Research-Tasks > > [7] > https://github.com/numenta/nupic/wiki/images/nupic-core-extraction-step3.jpg > > [8] > https://github.com/numenta/nupic/wiki/nupic.core-Extraction-Plan#2-consolidate-all-cla-algorithms-in-nupiccore > > [9] https://github.com/rcrowder > > [10] https://www.youtube.com/watch?v=OKiO7WTRMm4 > > [11] https://github.com/numenta/nupic/issues/1450 > > [12] http://numenta.org/licenses/cl > > [13] https://github.com/numenta/nupic/labels/newbie > > [14] https://github.com/nupic-community > > [15] > https://www.youtube.com/watch?v=qdB--kl1TLU&index=34&list=PL3yXMgtrZmDrtAuw9jJCNbaJmW3nSD3hC > > [16] > https://www.youtube.com/watch?v=4V9J4tE_cL4&index=10&list=PL3yXMgtrZmDqsqo6hytKjhrkfFNEYDqfn > > > > Questions and comments welcome :). > > > > --------- > > Matt Taylor > > OS Community Flag-Bearer > > Numenta > > > > >
