Deprecation of Python 2

MXNet community voted to no longer support Python 2 in future releases of MXNet. Therefore, MXNet 1.6 release is going to be the last MXNet release to support Python 2.

New features

NumPy compatible interface and using TVM to generate operators

NumPy has long been established as the standard math library in Python, the most prevalent language for the deep learning community. With this library as the cornerstone, there are now the largest ecosystem and community for scientific computing. The popularity of NumPy comes from its flexibility and generality.

In #14253, the MXNet community reached consensus on moving towards a NumPy-compatible programing experience and committed to a major endeavor on providing NumPy compatible operators.

The primary goal of the projects below is to provide the equivalent usability and expressiveness of NumPy in MXNet to facilitate Deep Learning model development, which not only helps existing deep learning practitioners but also provides people in the existing NumPy community with a shortcut for getting started in Deep Learning. The efforts towards this goal would also help a secondary goal, which is to enable the existing NumPy ecosystem to utilize GPUs and accelerators to speed up large scale computation.


Graph optimizations

Pointwise fusion for GPU

DL models, besides compute intensive operations like convolutions and fully connected layers, feature a lot of simple pointwise (aka elementwise) operations (like elementwise addition etc.). Performance of those operations is fully memory bandwidth bound and so limit speedups from newer GPU hardware, which typically has high compute/memory bandwidth ratio. When multiple of such operations are chained one after another, it results in a series of unnecessary stores and loads as well as potential increased memory usage to store the intermediate results. Pointwise fusion helps in alleviating those problems by just-in-time generation of fused operators, which do not store intermediate results in memory, resulting in performance and memory usage improvements.

Eliminate common subexpressions

Default MKLDNN Subgraph fusion

New operators

MKL-DNN v1.0 update

MKL-DNN v1.0 release improved its robustness and simplified the execution model compared to v0.x, while keeps improving its performance with Intel(R) DL Boost and the upcoming BFloat16 supports, and enabled more kernels for those popular and frontier models. Lots of PRs are completed to adopt the minor API changes as below. Please refer to https://github.com/apache/incubator-mxnet/projects/16 for more details.

Feature improvements

Automatic Mixed Precision

Gluon Fit API

MKLDNN

Large tensor support

TensorRT integration

Higher order gradient support

Operator improvements

Profiler

ONNX import/export

Runtime discovery of features

Bug fixes

Front end API

Gluon

Symbol

Language Bindings

Python

MXNet community voted to no longer support Python 2 in future releases of MXNet. Therefore, MXNet 1.6 release is going to be the last MXNet release to support Python 2.

C/C++

Clojure

Julia

Perl

Scala

Performance improvements

Example and tutorials

Website and documentation

CI/CD

Miscellaneous changes


How to build MXNet

Please follow the instructions at https://mxnet.incubator.apache.org/get_started

Users that build MXNet from source are recommended to build release 1.6.0 without jemalloc to avoid incompatibilities with llvm's openmp library (details in issue 17043 and PR 17324). This is done for cmake builds by setting USE_JEMALLOC "OFF" in ./CMakeLists.txt, or for make builds with "USE_JEMALLOC = 0" in make/config.mk.

List of submodules used by Apache MXNet (Incubating) and when they were updated last

namecommit-idlast updated in MXNetlast update in module
dlpackb90e939May 30, 2019Aug 12, 2019
dmlc-core0e13243Oct 18, 2019Dec 10, 2019
googletesteb9225cJan 14, 2019Dec 6, 2019
mkldnna0a87d6Oct 24, 2019Dec 6, 2019
nvidia_cubc3cceacFeb 16, 2018Jul 17, 2019
onnx-tensorrtf4745fcJul 12, 2019Nov 18, 2019
openmp37c7212Nov 14, 2017Oct 15, 2019
ps-lite60b826eSep 1, 2019Oct 15, 2019 
tvmafd4b3eJul 15, 2019Dec 12, 2019


Note

On July 18, 2019 mshadow project (which was previously a submodule of MXNet) was imported into MXNet codebase under 3rdparty/mshadow as a result of a vote in https://github.com/dmlc/mshadow/issues/373.