As a Web guy, I am of course super interested in this. Sign me up! - Jeff
On Sat, Dec 5, 2015 at 12:21 PM Marcus Lewis <[email protected]> wrote: > Very cool. > > I'm interested in HTTP GET, inspecting models. I think GET can be designed > independently of PUT. The important part is being able to query a model at > a particular timestep. Something like: > send: GET /{model-guid}/history > receive: [540, 541, 542, 543] > send: GET /{model-guid}/history/542/network-layout > receive: {'senses': {'power-consumption': {'dimensions': [200]}} > 'regions': {'rgn-0': {'layer-3': {'cellsPerColumn': 32 > 'dimensions': [1024]}}}} > send: GET /{model-guid}/history/542/rgn-0/layer-3/active-columns > receive: [13, 42, 73, 327, 767] > > You get the idea. This would of course be optional. HTM servers would > decide whether to keep history, and how much to keep. They might also offer > some sort of subscribe-to-updates functionality for tools, e.g. via > websockets, so that you can watch the HTM receiving input in realtime from > anywhere. > > So I don't have any commandments. I just figured it'd be useful for me to > hand-wave how we'd attach Sanity > <https://github.com/nupic-community/sanity/> to these servers. > > 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 >> >> >
