Just to give you all an update on this...

Jonathan Mackenzie got NuPIC deployed on Heroku in a sample app, and I
was able to deploy it and test it with hotgym data. He also started
working on an API [1] to create models and push data, but it still
needs to be adjusted to match the spec [2][3].

I've defined the spec here (see subtasks):
https://github.com/nupic-community/htm-over-http/issues/10

Jonathan and Jeff Fohl have expressed interest in working on the REST
interface. I am prepared to test it on Heroku once [2] and [3] are
complete,

Great job, Jonathan!

As this project progresses, I'll be continuing to update the spec via
Github Issues. You folks have some great ideas for future features,
but I'm a stickler for getting something simple and easy working
first, then iterating on it. The spec will evolve over time. :)

[1] 
https://github.com/nupic-community/htm-over-http/blob/master/htm-over-http/htmoverhttp/views_api.py
[2] https://github.com/nupic-community/htm-over-http/issues/5
[3] https://github.com/nupic-community/htm-over-http/issues/9

Regards,
---------
Matt Taylor
OS Community Flag-Bearer
Numenta


On Sat, Dec 5, 2015 at 10:32 AM, Matthew Taylor <[email protected]> wrote:
> Hello NuPIC,
>
> # HTM over HTTP
>
> This is a project that really should exist, but does not today. It
> would be a great opportunity to make HTM experimentation really easy,
> and something that I would be using today if it existed. Here is a
> brief spec...
>
> ## Spec
>
> - RESTful HTTP interface for creating a small number of models
>   - create model: allows POST of full model params, returns model guid
>     - if no model params given, use anomaly detection params as default
>   - PUT data: given model guid, runs a row of data, returns model results
>   - DELETE model: given model guid, delete and clear from memory
> - EASY to deploy to cloud service like Heroku or Google App Engine
>
> Initially, this doesn't need to be robust, secure, or scale-able. I
> just want something I can stand up quietly in a corner of the internet
> and run experiments on live data. If it proves useful, I'll make
> tutorials so others can use it. Once there are users, we can discuss
> making it robust, secure, or scale-able.
>
> ## Sidenotes
>
> - This project MUST be AGPL [1]. I am happy to discuss why in another
> thread if you want to talk about licenses.
> - This project does not include swarming. It is assumed that model
> parameter investigation will be done offline.
> - Easy deployment is a big priority. Should be something a junior
> programmer could deploy with the right credentials. Docker is probably
> a good idea, but include detailed instructions for deployment.
> - You could use either NuPIC or HTM.Java for this, it doesn't really
> matter. (I'm only excluding Comportex because Felix has mentioned
> several times that he does not want to consider it stable.)
>
> ## Ideas
>
> 1. You could use HTM Engine and the HTTP interface provided by the
> skeleton app to get started [2]. This might be really easy, and
> provide some scalability right off the bat. The work would mostly just
> be figuring out the Docker configuration for deployment. However, it
> would not allow users to provide model params, and adding this
> functionality would need to be done in the HTM Engine itself (others
> want this too [3]).
> 2. You could use the simple HTTP wrapper around NuPIC provided by
> Jared Weiss [4]. It is just a SimpleHttpServer but it would be a fast
> prototype. Again, the work would be deployment configuration.
> 3. You could use HTM-Moclu [5] and HTM.Java. I haven't been able to
> get this running without multiple servers (because Akka), but someone
> with the know-how could take it on.
> 4. You could wrap a Java HTTP server over HTM.Java.
>
> ## What's the Point?
>
> Two things, actually...
>
> 1. Internet of Things
>
> I installed SmartThings [6] IoT devices all over our office. They are
> constantly streaming live data about things like energy consumption,
> door state, temperature, and motion. I have created a SmartApp that
> can live-stream all this data anywhere over HTTP. I just need an HTM
> to push the data to, and I should be able to build an app that
> displays live charts of this data and the live anomaly scores for all
> of them. This could potentially be re-used by anyone with other
> SmartThings setups.
>
> 2. Big Public Streaming Temporal Data (BPSTD)
>
> Over the break, I started a project to scan the entire Socrata
> platform for temporal data streams [7] with the intention of creating
> HTM models for as many as possible. I'm going to end up with hundreds
> or thousands of data streams by the time I'm through with this, and I
> need a place to run all those models. Standing up Heroku or GAE
> instances is easy and cheap, so it is a way I can analyze lots of
> streaming data with lots of models and watch how well they do over
> months of time. We have not had this capability before.
>
>
> So, if anyone is interesting in helping design an implement HTM over
> HTTP, let's discuss here?
>
> [1] http://www.gnu.org/licenses/agpl-3.0.en.html
> [2] https://github.com/nupic-community/skeleton-htmengine-app
> [3] https://github.com/numenta/numenta-apps/issues/503
> [4] https://github.com/numenta/nupic/tree/master/examples/opf/simple_server
> [5] https://github.com/antidata/htm-moclu
> [6] http://www.smartthings.com/
> [7] https://github.com/rhyolight/soda-tap
>
> ---------
> Matt Taylor
> OS Community Flag-Bearer
> Numenta

Reply via email to