h2oai/nnvm

Name: nnvm

Owner: H2O.ai

Description: Intermediate Computational Graph Representation for Deep Learning Systems

Forked from: dmlc/nnvm

Created: 2017-01-25 00:14:13.0

Updated: 2017-01-25 00:14:15.0

Pushed: 2017-01-22 04:56:33.0

Homepage:

Size: 310

Language: C++

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

NNVM: Build deep learning system by parts

Build Status GitHub license

NNVM is not a deep learning library. It is a modular, decentralized and lightweight part to help build deep learning libraries.

What is it

While most deep learning systems offer end to end solutions, it is interesting to assemble a deep learning system by parts. The goal is to enable user to customize optimizations, target platforms and set of operators they care about. We believe that the decentralized modular system is an interesting direction.

The hope is that effective parts can be assembled together just like you assemble your own desktops. So the customized deep learning solution can be minimax, minimum in terms of dependencies, while maximizing the users' need.

NNVM offers one such part, it provides a generic way to do computation graph optimization such as memory reduction, device allocation and more while being agnostic to the operator interface definition and how operators are executed. NNVM is inspired by LLVM, aiming to be a high level intermediate representation library for neural nets and computation graphs generation and optimizations.

See Overview for an introduction on what it provides.

Example

See TinyFlow on how you can build a TensorFlow API with NNVM and Torch.

Why build learning system by parts

This is essentially Unix philosophy applied to machine learning system.

Deep learning system itself is not necessary one part, for example here are some relative independent parts that can be isolated

We hope that there will be more modular parts in the future, so system building can be fun and rewarding.

Links

MXNet is moving to NNVM as its intermediate representation layer for symbolic graphs.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.