Giter Club home page Giter Club logo

onnx's Introduction

Open Neural Network Exchange (ONNX)

Build Status

Open Neural Network Exchange (ONNX) is the first step toward an open ecosystem that empowers AI developers to choose the right tools as their project evolves. ONNX provides an open source format for AI models. It defines an extensible computation graph model, as well as definitions of built-in operators and standard data types. Initially we focus on the capabilities needed for inferencing (evaluation).

Caffe2, PyTorch, and Cognitive Toolkit will be supporting ONNX. Enabling interoperability between different frameworks and streamlining the path from research to production will increase the speed of innovation in the AI community. We are an early stage and we invite the community to submit feedback and help us further evolve ONNX.

Folder Structure

  • onnx/: the main folder that all code lies under
    • onnx.proto: the protobuf (v2.6.1) that contains all the structures
    • checker.py: utility to check whether a serialized ONNX proto is legal.
    • defs/: subfolder that defines the ONNX operators.
    • test/: test files

Installation

Binaries

A binary build of ONNX is available from Conda:

conda install -c ezyang onnx

Docker

Docker images (CPU-only and GPU versions) with ONNX, PyTorch, and Caffe2 are availiable for quickly trying tutorials that use ONNX. To quickly try CPU-only version, simply run:

docker run -it --rm onnx/onnx-docker:cpu /bin/bash

To run the version with GPU support, nvidia-docker is needed. Execute:

nvidia-docker run -it --rm onnx/onnx-docker:gpu /bin/bash

Source

You will need an install of protobuf and numpy to build ONNX. One easy way to get these dependencies is via Anaconda:

# Use conda-forge protobuf, as defaults doesn't come with protoc
conda install -c conda-forge protobuf numpy

You can then install ONNX from PyPi:

pip install onnx

After installation, run

python -c 'import onnx'

to verify it works. Note that this command does not work from a source checkout directory; in this case you'll see:

ModuleNotFoundError: No module named 'onnx.onnx_cpp2py_export'

Change into another directory to fix this error.

Testing

ONNX uses pytest as test driver. In order to run tests, first you need to install pytest:

pip install pytest-cov

After installing pytest, do

pytest

to run tests.

Development

During development it's convenient to install ONNX in development mode:

git clone --recursive https://github.com/onnx/onnx.git
pip install -e onnx/

Then, after you have made changes to

  • Python files, the changes are immediately effective in your installation, you do not need to install again.
  • C++ files, you need to do install again to trigger the native extension build.

Generated operator documentation

Operator docs in Operators.md are auto-generated based on C++ operator definitions. In order to refresh them run the following command from the repo root and commit the results:

python onnx/defs/gen_doc.py

License

MIT License

onnx's People

Contributors

bddppq avatar dzhulgakov avatar ebarsoum avatar houseroad avatar ezyang avatar prasanthpul avatar jerryzh168 avatar gramalingam avatar donbox avatar yangqing avatar brettkoonce avatar yuanbyu avatar zdevito avatar andreh7 avatar

Watchers

James Cloos avatar  avatar

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.