Released Chainer/CuPy v5.0.0

We have released Chainer and CuPy v5.0.0 today! This is a major release that introduces several new features.

The following is a list of selected updates. Full updates can be found in the release notes: Chainer, CuPy.

• Static subgraph optimization (experimental). By applying the @static_graph decorator to the static part of your computation (which uses the same graph at every iteration), the computational graph of that part is cached and reused. Fully-static models speed up by 20-60% in most cases. Example code modified for the static subgraph feature can be found here.
• Float16 support. Using half-precision floats is made much easier! Since recent GPU technologies often focus on half and mixed precision computations, using float16 is crucial for fully utilizing the latest hardware performance. In Chainer v5, the default floating point dtype is configurable via CHAINER_DTYPE environment variable or config.dtype entry. Using this feature, most code will be able to use float16 without modification. Many classes and functions are fixed to support float16 inputs and parameters.
• ChainerMN integration. ChainerMN was an add-on package of Chainer for distributed deep learning, but is now a built-in module of Chainer v5. The APIs and the usage are not changed; just install chainer and mpi4py to start distributed deep learning.
• Probability distributions. We introduced the chainer.distributions module that implements many parametric probability distributions with autograd capability. Each distribution provides point-wise evaluation (e.g. log density), statistics computation, and sampling. For its implementation, we also added many GPU sampling routines (under cupy.random) and special functions (e.g. log-gamma function). While v5 includes many frequently used distributions, we are still expanding this feature for the upcoming releases.
• iDeep 2.0. Chainer Backend for Intel Architecture, a.k.a. iDeep, is updated. You can install it with pip install ideep4py, and use it by setting the environment variable CHAINER_USE_IDEEP=auto. There are many performance improvements in this version.
• CuPy interoperability with other libraries and ecosystems. CuPy ndarray can now be easily combined with other libraries. For more details, see the Interoperability section of the CuPy reference manual.
• DLpack: ndarray.toDLpack and cupy.fromDLpack can be used to interchange the array with other deep learning frameworks.
• NumPy: NumPy ufunc is directly applicable to CuPy’s ndarray. For example, numpy.exp(cupy.arange(3)) is valid, which is equivalent to cupy.exp(cupy.arange(3)).
• Numba: Numba’s JITed CUDA kernel is directly applicable to CuPy ndarrays.

We recommend updating to the latest version of Chainer and CuPy. You can find the upgrade guide here. Updating Chainer should be done as usual with the command pip install -U chainer. CuPy can be updated in the same way, but be careful to use the appropriate package name if you are using a wheel package (cupy-cuda NN).

Any feedback to the dev team would be welcomed and appreciated. You can ask questions or leave comments at gitter, Slack, Google Groups, and StackOverflow.