/boggl

Experiments with generating tensorflow graphs for artificial general intelligence

Apache License 2.0Apache-2.0

boggl 0.0.1

Build Status Coveralls Status Dependency Status

Brain Organization Graph Generation Language - composition, generation, distribution and monitoring of machine intelligence models.

backgound brain art

NOT READY FOR PRIME TIME

When an alpha release is available I'll remove this message. For the next year or so this project is closed to external developers.

Please stand by...

boggl provides a toolset for automating the composition of MI components into a local or cloud deployed distributed application. It supports applications that model biological central nervous systems at a fairly specific level of abstraction, well above the level of individual neurons.

Boggl is for building larger machine intelligence models from a variety of other components. The components themselves are are feature vector based, continous operation, unsupervised learning and discrimination processes specialized for use with boggl. These can be implemened with existing tools such as torch, theano, Lasagne, pybrain, pylearn2, keras, biopython, blocks, fann, convnetjs, deep_q_rl, or GroundHog,

It is relatively language neutral so python, lua, go, js and even C are acceptable for module implementation, although the best support is currently for python.

boggl is not abstraction neutral as it follows a fairly rigid model for how it expects modules to process inputs and provide results. It is designed for implementing component networks that can be used to mimic biological systems so 'off the shelf' neural networks for MNIST are not going to be much use with it. You write boggl scripts to specify how to find modules in external processes, and how to provision and interconnect these processes into a graph. Deployments are generated for specific network and server environments from single machines to public clouds. This simplifies experimentation since components are more easily added, edited and removed without extensive recoding. Automatic generation of 'stub' modules simplifies testing and aids in incremental development.

A BI (boggl Instance) is a composed, generated, provisioned, deployed, or running instance of a set of components that runs concurrently and on the same data. Input components connecting external processes can be as simple as isolated training sets, or as complete as vision and hearing and a full range of other senses. Output components provide results in the form of motor activations, numeric arrays, or text. Communication between processes is via ZeroMQ queues which uses various forms of IPC including TCP/IP. Network effects are often critical in performance and even function of components so channels between processes include latency specifications and activity monitors.

Specification and Composition Features

  • Neurobiological terminology based module and channel descriptions
  • Labeled lines for organization of pathways
  • Explicit required/desired channel latencies
  • Named bundles with aliases and long names
  • Explicit directional channel inteconnections between modules
  • Module adjacency definitions for implicit crosstalk channels
  • Neural layer specification for interconnection

General Features

Packaging Features

  • Packaging into a local machine process set
  • Packaging into Docker components

Deployment Features

  • Distribution of components to AWS cloud servers
  • Cluster orderly startup, checkpointing and shutdown

Monitoring Features

  • Process, channel, and module level activity and performance metrics
  • Generated per instance web portal for command, control and monitoring
  • Generated Raphaël based graphs for model visualization
    • Process and server instance graphs
    • Model module and channel graphs with hierarchical expansion
    • Filters for drill down and clutter elimination
  • And more

Contributors

Developers

The current boggl test server (OpenShift hosted)

End of document.