Open Neural Network Compiler (ONNC)
The Open Neural Network Compiler (ONNC) project aims to provide a compiler to connect Open Neural Network Exchange Format (ONNX) to every Deep Learning Accelerators (DLAs). ONNX is a standard format for representing deep learning models that enables models to be correctly transferred between frameworks, like Caffe, CNTK, MXNet, PyTorch, and TensorFlow. ONNX guarantees interoperability between frameworks. ONNC pushes it further for the industry, guarantee executability between DLAs — to ensure every DLA can execute ONNX models correctly.
ONNC is a backend for DLA vendors, a kind of cross compiler that transforms ONNX models into binary machine code for DLAs. Every DLA has its own unique and delicate design in its memory for fast data movement. ONNC is a compiler that provides sufficient flexibility to handle wide ranges of varieties. It leverages the IR design of ONNX and provides rich and effective algorithms to eliminate the overhead of data movement.
DLA vendors can easily reuse these algorithms by just describing its own unique physical cost model. ONNC’s goal is to assists DLA vendors free from re-inventing these intricate optimization algorithms.
Following subjects are the major features ONNC provides:
- Liveness analysis
- Graph IR scheduler
- Graph level optimizations
- Tensor Selection
- Target-related optimization
- Fine-grained versus Coarse-grained operations
- The IRs are used in ONNC
- Comparison with other AI compilers