Giter Site home page Giter Site logo

nervanasystems / ngraph Goto Github PK

View Code? Open in Web Editor NEW
1.4K 132.0 224.0 78.43 MB

nGraph has moved to OpenVINO

Home Page: https://www.ngraph.ai/

License: Apache License 2.0

CMake 0.73% C++ 96.41% Shell 0.20% Makefile 0.06% Python 2.16% Groovy 0.01% C 0.02% MLIR 0.40%
ngraph tensorflow mxnet deep-learning compiler performance onnx paddlepaddle neural-network deep-neural-networks

ngraph's People

Contributors

adstraw avatar arogowie-intel avatar ashokei avatar aslepko avatar ayzhuang avatar baojun-nervana avatar crlishka avatar dcaballe avatar diyessi avatar dmyershov avatar earhart avatar fengleitian avatar gaurides avatar ilyachur avatar indie avatar jbobba avatar jmenon avatar krovatkin avatar louisfeng avatar mchrusci avatar mitruska avatar nbpatel avatar nmostafa avatar postrational avatar pruthvi1990 avatar rkimballn1 avatar shssf avatar silee2 avatar tsocha avatar yxlao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ngraph's Issues

Select ResNet-50 model for 2017-Q3

Choose a specific ResNet-50 model implementation for our Q3 work.

This choice is subject to change in the future, for example based on future discussions with the Benchmark team. But it needs to be a reasonable starting point for our development work.

The tangible work-product of this Issue should be a file (perhaps some scripts, perhaps a README, or both) giving the details of this choice.

Build system needs to work on available systems

Until the development and test servers are upgraded to Ubuntu 14.04, our build system needs to work on 10.19.176.53 which is Ubuntu 14.04. This is not the case right now.

This is a blocker.

License related issues

List of license related issue (this list could be extended when needed):

  • License banner for ngraph plugin (may contain code from example plugin)

Error processing

After building the graph, we check the nodes to make sure that their arguments have consistent type and then propagate the type information to the value so we can check all the nodes.

If the arguments are not consistent, how how want to get this information to the user? Under framework control, this would almost always be a bug on our part.

Add way to check code styling

Create a script, make target, or some other mechanism that lets us (and a CI system) easily verify that all of the code matches our style requirements.

Rename identifiers to more idiomatic C++

Until the Python NGraph code is mostly or entirely ported to C++, we're keeping the C++ identifiers as close as we can to their Python counterparts, to clarify the mapping.

Once the port is far-enough along, renaming things to be more idiomatic C++:

  • Choose some C++ naming convention for functions, variable names, etc. and rename everything accordingly.

  • Consider introducing one or more C++ namespaces.

Pattern Matching Feature Request - Low Priority

Python pattern matching says these things are different

ng.multiply(a,ng.divide(b,c))
ng.divide(ng.multiply(a,b), c)

It would be awesome if the final ngraph-cpp solution treated those (and similar mathematical identities) as equal. It's hard to ensure that the mxnet graph matches the operation order of the neon graph.

Grok Python NGraph's pattern match

To help prepare for work with the NGraph-C++ API's design regarding pattern-matching, study how pattern-matching is used and implemented in Python NGraph.

Try to understand (at least) the following details regarding the Python code:

  • What's the relationship between the types and data structures used to represent the DFG to be compiler, vs. those used to represent a pattern-matcher.

  • What patterns are matched by current transformers.

  • What patterns do we expect to need to match in future transformers.

Here are resources to learn those things:

Repeatable TF DO ResNet-50 benchmarks

Document and/or script a mechanism to allow repeatable benchmarking of the TF DO software on MNIST, to provide baseline data for the 2017 Q3 NGraph++ effort.

Use Eigen for numeric default

  • Which version of eigen (release number or fork)?
  • For TF, so we need to use the same eigen TF is using?
  • Add eigen to the ngraph build
  • Layout pass for minimizing array format copies
  • @jbobba says we'll need a thread pool and associated work scheduler

Function reorg

Make Parameter independent of Function.
To make a Function, make the Parameters, set up the graph, and then create the function from the parameters and result. Tests that don't need Function will not need to create one.

Flesh out node descriptions

There are stubs for Node.description() for use when dumping the graph for debugging purposes. They need to be expanded into something useful.

MNIST detailed XLA log dump

Obtain a dump of XLA activity while processing MNIST.

The goal is to provide enough detail to guide the early development of the XLA <--> NGraph++ API bindings, and of the NGraph++ API itself.

Select Deep Speech 2 model for 2017Q3

Choose a specific Deep Speech 2 model implementation for our Q3 work.

This choice is subject to change in the future, for example based on future discussions with the Benchmark team. But it needs to be a reasonable starting point for our development work.

The tangible work-product of this Issue should be a file (perhaps some scripts, perhaps a README, or both) giving the details of this choice.

XLA --> NGraph++ bindings build

Implement XLA plugin C++ stub code that:

  • Is built by TF's build system
  • Can #include a header from libngraph's public includes directory.
  • Has a link-time dependency on libngraph, which is expressed in TF's build system and is satisfied without error when TF runs.

ngraph-cpp and tf integration part II

This task will do the following:

  1. Update the cmake install target to install artifacts (i.e., header and libngraph.so) to /tmp/ngraph so that graph-tensorflow can link against it for plugin support. Also update the code w.r.t., the include path for the headers in src/ngraph subdirectory.
  2. Update graph-tensorflow to be able to call NGraph++ graph building stuff.

Once this task is complete, folks can start to play with XLA-->graph_plugin-->NGraph++ implementation.

Script TF-DO MNIST run.

This Issue is a baby-step towards gathering the speed- and accuracy-data characterizing the TF DO code on MNIST.

For this Issue:

  • Develop a Bash or Python script that simply runs MNIST on the TF-DO code. The script must run successfully on our test machine, assuming that a human has already performed appropriate setup steps.

  • Have @yxlao verify that the MNIST script is sufficiently similar to the version we'll use with with our XLA-based code.

  • Create documentation describing all human steps needed to run the TF DO script in a clean test environment. (Validation of this step is on a best-effort basis.)

Get Argon API access

[ ] - Obtain a current copy of the Argon API, including actual files and documentation.
[ ] - Establish a way for Core Ngraph developers to become aware of future changes to the API.

Add debug prints in the NGraph-bridge

Add debug messages to print the computational graph as it's handed over from the TF framework. Right now the debug messages are just going to be printfs with a specific tag "[NGAPH-DBG]" so that we can easily replace them with a better logging which is work in progress. This is a temporary hack to help understand the call chain as well as the graph details.

Should Call behavior be in Call subclasses or in Op subclasses

The current implementation uses a Call-like object to hold the arguments nodes and an object that handles behavior of the call. Builtin operations that have additional non-node arguments, such as broadcast, use a subclass of Call to hold the additional (compile-time) arguments. Argument checking and type-propagation for Call can be delegated to the Op. In addition, the Op is a callable singleton and is used as a factory for its Calls. For pattern matching, Op equality

An alternative is to omit the Op and have every operation correspond to an overloading of Call; in this case, factory functions would be defined to make the calls. Pattern matching would need a way to tell if two instances of Call were instances of the same class. One approach would be to use a pattern compiler to compile the patterns into C++, like Bison.

By using methods on Call to drive argument checking and type propagation, which delegate to Op methods, we can switch from the Ops to subclassing Call with minimal disruption.

Unit test for node users

Implement the body of the test that verifies that if node A is an argument of node B then node B is a user of node A.

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.