Chainer/CuPy v7 release and Future of Chainer

Today, we would like to announce two things: the release of Chainer/CuPy v7 and the shift of development efforts for Chainer.

Chainer/CuPy v7

We have released Chainer and CuPy v7.0.0. Changes can be found in the release notes of pre/releases. Here are some notable updates.

Chainer v7 (alpha, beta1, beta2, beta3, beta4, rc1, major):

  • Most features of Chainer, including ChainerMN, are now compatible with ChainerX ndarray.
  • ONNX-Chainer is integrated into Chainer.
  • TabularDataset is added. It is a rich abstraction of columnar datasets with pandas like manipulations.
  • NHWC support added. Performance for convolutions and batch normalization greatly improved on GPUs with Tensor Core.

CuPy v7 (alpha, beta1, beta2, beta3, beta4, rc1, major):

  • Support NVIDIA cuTENSOR and CUB for better performance.
  • Experimental support of ROCm. CuPy now runs on AMD GPUs.

Also note that Python 2 support is dropped as announced. Chainer/CuPy v7 only supports Python 3.5+.

Shift of Development Efforts for Chainer

As announced today, Preferred Networks, the company behind Chainer, is changing its primary framework to PyTorch. We expect that Chainer v7 will be the last major release for Chainer, and further development will be limited to bug-fixes and maintenance. The Chainer family products (ChainerCV, Chainer Chemistry, ChainerUI, and ChainerRL) will also follow this policy.

CuPy will continue its development as before. Although developed as a GPU backend for Chainer, it has been widely adopted by different communities and is relatively unique in accelerating computation with GPUs using NumPy syntax.

Background

This decision has been made after serious considerations based on the mission of the Chainer team: speeding up research and development of deep learning and its applications. With the introduction of Chainer in 2015, we proposed an imperative API set for the differentiable programming paradigm that we named define-by-run. It is now often called eager execution. The define-by-run approach was originally motivated by structured networks for natural language processing such as recurrent neural networks (RNN) and brought advantages to other kinds of networks as well. Its intuitiveness and debuggability helped accelerate the deep learning research development cycle. We believed in the advantages of an imperative execution framework compared to the existing define-and-run declarative approaches. Along the way, we worked on improvements like object-oriented network definition, higher-order differentiation, dynamic inference of layer input size, and training loop abstractions, while keeping the simplicity of the pure Python implementation and interoperability with the NumPy ecosystem.

The define-by-run approach has been widely adopted by the deep learning research community, and the designs of the major frameworks are converging to similar syntax and functionality. We are proud of the role that Chainer has played in this shift and pleased with its contribution to the community. We believe it is the right time to consider what contributions we should make to improve the research productivity of the deep learning community. Instead of separately developing frameworks with similar design goals, we have decided to support a framework with a larger user-base and ecosystem.

After reviewing the available frameworks, we believe PyTorch is the closest in spirit to the Chainer style of code and the appropriate replacement. Preferred Networks will start using PyTorch widely, and we look forward to contributing to PyTorch with the experience and knowledge gained from the development of Chainer.

Conclusion

For users migrating to PyTorch, we are releasing resources to ease porting efforts: Migration Guide and Migration Library.

We would like to thank the contributors to the Chainer code base and the community surrounding it. We wouldn’t be here today without your support over all these years. Let’s continue improving deep learning software to accelerate research and development.

日本語版 (Japanese)

About Chainer

Chainer is a Python-based, standalone open source framework for deep learning models. Chainer provides a flexible, intuitive, and high performance means of implementing a full range of deep learning models, including state-of-the-art models such as recurrent neural networks and variational autoencoders.


Recent Posts


Categories