GithubHelp home page GithubHelp logo

mahyarnajibi / nnvm Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 1.0 1.04 MB

nnvm fork for SNIPER-mxnet

License: Apache License 2.0

CMake 1.94% Makefile 0.48% Python 48.05% C++ 47.63% Shell 1.31% HTML 0.59%

nnvm's Introduction

NNVM: Open Compiler for AI Frameworks

Build Status GitHub license

Installation | Documentation | Tutorials | Release Notes

NNVM compiler offers reusable computation graph optimization and compilation for deep learning systems. It is backed by the TVM stack and provides modules to:

  • Represent deep learning workloads from front-end frameworks via a graph IR.
  • Optimize computation graphs to improve performance.
  • Compile into executable modules and deploy to different hardware backends with minimum dependency.

NNVM is designed to add new frontend, operators and graph optimizations in a decentralized fashion without changing the core interface. The compiled module can be deployed to server, mobile, embedded devices and browsers with minimum dependency, in languages including c++, python, javascript, java, objective-c. Checkout our release announcement

The following code snippet demonstrates the general workflow of nnvm compiler.

import tvm
from tvm.contrib import graph_runtime, rpc
import nnvm.frontend
import nnvm.compiler

# GET model from frameworks
# change xyz to supported framework name.
graph, params = nnvm.frontend.from_xyz(...)

# OPTIMIZE and COMPILE the graph to get a deployable module
# target can be "opencl", "llvm", "metal" or any target supported by tvm
target = "cuda"
graph, lib, params = nnvm.compiler.build(graph, target, {"data", data_shape}, params=params)

# DEPLOY and run on gpu(0)
module = graph_runtime.create(graph, lib, tvm.gpu(0))
module.set_input(**params)
module.run(data=data_array)
output = tvm.nd.empty(out_shape, ctx=tvm.gpu(0))
module.get_output(0, output)

# DEPLOY to REMOTE mobile/rasp/browser with minimum tvm rpc runtime
# useful for quick experiments on mobile devices
remote = rpc.connect(remote_host, remote_port)
lib.export_library("mylib.so")
remote.upload("mylib.so")
rlib = rpc.load_module("mylib.so")
# run on remote device
rmodule = graph_runtime.create(graph, rlib, remote.gpu(0))
rmodule.set_input(**params)
rmodule.run()

License

Licensed under an Apache-2.0 license.

Links

  • TinyFlow on how you can use NNVM to build a TensorFlow like API.
  • Apache MXNet uses NNVM as a backend.

nnvm's People

Contributors

tqchen avatar piiswrong avatar zhreshold avatar zihengjiang avatar huyuwei avatar masahi avatar srkreddy1238 avatar thefiddler avatar kevinthesun avatar cjolivier01 avatar laurawly avatar merrymercy avatar harmonicahappy avatar eric-haibin-lin avatar siju-samuel avatar fumihwh avatar yuruofeifei avatar formath avatar alex-weaver avatar wolffychen avatar imai-lm avatar pariksheetpinjari909 avatar penguinliong avatar jermainewang avatar yajiedesign avatar antinucleon avatar szha avatar tornadomeet avatar sxjscience avatar finaltheory avatar

Stargazers

 avatar Xiaoteng Zhang avatar  avatar

Watchers

 avatar

Forkers

jiangmijiangmi

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.