  Neural networks are a revolutionary but immature technique that is fast
evolving and heavily relies on data. To benefit from the newest development and
newly available data, we want the gap between research and production as small
as possibly. On the other hand, differing from traditional machine learning
models, neural network is not just yet another statistic model, but a model for
the natural processing engine --- the brain. In this work, we describe a neural
network library named {\texttt akid}. It provides higher level of abstraction
for entities (abstracted as blocks) in nature upon the abstraction done on
signals (abstracted as tensors) by Tensorflow, characterizing the dataism
observation that all entities in nature processes input and emit out in some
ways. It includes a full stack of software that provides abstraction to let
researchers focus on research instead of implementation, while at the same time
the developed program can also be put into production seamlessly in a
distributed environment, and be production ready. At the top application stack,
it provides out-of-box tools for neural network applications. Lower down, akid
provides a programming paradigm that lets user easily build customized models.
The distributed computing stack handles the concurrency and communication, thus
letting models be trained or deployed to a single GPU, multiple GPUs, or a
distributed environment without affecting how a model is specified in the
programming paradigm stack. Lastly, the distributed deployment stack handles
how the distributed computing is deployed, thus decoupling the research
prototype environment with the actual production environment, and is able to
dynamically allocate computing resources, so development (Devs) and operations
(Ops) could be separated. Please refer to http://akid.readthedocs.io/en/latest/
for documentation.
