This is the release note of v7.0.0. See here for the complete list of solved issues and merged PRs.
This release note only covers the difference from v7.0.0rc1; for all highlights and changes, please refer to the release notes of the pre-releases:
See the Upgrade Guide if you are upgrading from previous versions. Also, note that we dropped the support of Python 2.7 and 3.4 from Chainer v7.
Please read the following announcement to learn about the future of Chainer.
Highlights
- Most features of Chainer, including ChainerMN, are now compatible with ChainerX ndarray.
- ONNX-Chainer is integrated into Chainer.
- NHWC support added. Performance for convolutions and batch normalization greatly improved on GPUs with Tensor Core.
Changes without compatibility
- Forbid out-of-range
insert on Sequence (#6374) - Update minimum required python version to 3.5.2 (#8410)
New Features
- Support soft target in softmax_cross_entropy (#5595, thanks @anaruse!)
- Support NHWC tensor layout (#7620)
- Add Cholesky Decompostion (#8202, thanks @UmashankarTriforce!)
- Allow customizing
setup/tear-down method names in testing.fix_random (#8432)
Enhancements
- Use intermediate dtype in
F.mean_absolute_error for FP16 (#6807) - Avoid fallback for ChainerX in
F.accuracy (#7396) - Add
from_params to Linear & Conv (#7525, thanks @crcrpar!) - Correct
FunctionNode.forward output type message (#7655) - Default index mode for ChainerX
Take (#8281) - Forward
chainerx::MakeArray in some case (#8296) - Raise
ValueError when calling xxx_obj with ChainerX array in ChainerMN (#8320) - Add
Permutate exporter to onnx_chainer (#8333, thanks @msakai!) - Update ONNX version (#8339)
- Support ONNX export with opset11 (#8341)
- Support multiple advanced indexing on ONNX export (#8345)
- Revert output value check in
SoftmaxCrossEntropy (#8347) - Enhance
chainerx::AddAt as a public function (#8351) - Support
cover_all=True on Unpooling2D in exporting to ONNX (#8391) - Use
ceiling_mode on exporting to ONNX MaxPool (#8392) - Fix
onnx_chainer.replace_func.fake_as_funcnode to reconstruct return value structure (#8398, thanks @msakai!) - Support
Rollaxis in ONNX-Chainer (#8428, thanks @tkanmae!) - Add support of
SelectItem in ONNX-Chainer (#8450, thanks @tkanmae!) - Add
TransposeSequence exporter to ONNX-Chainer (#8451, thanks @msakai!) - Use
__name__ attribute in parameterized test names when available (#8455, thanks @grlee77!) SelectItem using GatherElements for ONNX opset>=11 (#8470)- Add deprecation warning to ONNX exporting without test cases (#8473)
- Add workaround for cuSolver 10.2's new enums (#8475)
- Support step slicing on ONNX export (#8484)
- Support sign function on exporting ONNX (#8488)
- Raise
RuntimeError when using cudnn_fast without cudnn (#8499)
Performance Improvements
- Make contiguous case for
chainerx::AddAt faster (#8299)
Bug Fixes
- Fix 'attempting to reference a deleted function' with MSVC (#8258, thanks @cloudhan!)
- Fix onnx_chainer's exporter of Separate to handle single output case (#8332, thanks @msakai!)
- Fix ChainerX fallback condition in batch normalization (#8359)
- Remove host-side branch on
F.accuracy with ignore_label (#8364, thanks @y1r!) - Fix rounding on float16 conversions (#8378)
- Avoid overflow on index calculations when using large arrays (#8389)
- Fix pickling of optimizers (#8394)
- Fix
AttributeError in WrappedFunctionNode.forward (#8397, thanks @msakai!) - Register uninitialized persistents (#8445)
- Fix ONNX-Chainer's
GetItem converter to handle -1 correctly (#8460, thanks @msakai!) - Support
chainerx.batch_norm with 2D input on CUDA (#8464) - Fix
BatchNormalization for NHWC without cudnn (#8497)
Code Fixes
- Code clean up for
routines/indexing.h (#8288) - Fix style in
_snapshot.py (#8297) - C++ cosmetic fixes (#8379)
- Avoid using
VariableNode in F.convolution_2d backward implementation (#8395) - Add unsigned suffix in float16 test (#8408)
- Remove unused function (#8413)
- Add unsigned integer suffix (#8414)
- Avoid repeatedly enumerating submodules (#8421)
- Fix ChainerX CMake test dependencies (#8422)
- Avoid preprocessor for LAPACK error (#8468)
Documentation
- Fix for issue #6251 and issue #6810 (#6808, thanks @euler16!)
- Document properties of computed gradients in
cholesky and eigh (#8312) - Fix n-step RNN docs (#8326, thanks @euler16)
- Fix documentation of
NStepGRUBase (#8330, thanks @msakai!) - Fix typos in ONNX-Chainer introduction (#8334, thanks @msakai!)
- Fix docs of ONNX export introduction (#8338)
- Fix typo in
/examples/seq2seq/README.md (#8399, thanks @tanaken0515!) - Link to examples directory for the current branch (#8403)
- Fix
scatter_dataset part of ChainerMN tutorial (#8406) - Update expected messages of
type_check errors (#8407) - Fix typo in math expressions (#8433)
- Update requirements (#8501)
Installation
- Allow multiple code in
CHAINERX_NVCC_GENERATE_CODE (#8370) - Fix CMake target name for abseil (#8380)
- Remove typing requirement (#8383, thanks @jonringer!)
- Update minimum required python version to 3.5.2 (#8410)
- Use
PYBIND11_EXPORT instead of visibility hack (#8437) - Ignore unused function warning in NVCC (#8439)
- Fix code grouping in
CMakeLists.txt (#8440)
Examples
- Add MNIST
MultiprocessParallelUpdater example (#7478) - Use ChainerX softmax cross entropy implementation in ChainerX examples (#8294)
Tests
- Forbid out-of-range
insert on Sequence (#6374) - Check output in example tests (#7280)
- Show pytest summary in flexCI (#8212)
- Run example tests in Travis CI (#8251)
- Fix Decorrelated Batch Normalization tests (#8260)
- Build ChainerX example in CI (#8282)
- Fix
test_Meshgrid (#8285) - Add ChainerX pytest in
multi_node_early_stopping (#8321) - Fix inputs of pooling function tests (#8328)
- Include
.git in ChainerCV compatibility CI (#8331) - Adjust
SoftmaxCrossEntropy test tolerances (#8335) - Fix random condition in
chainerx.where test (#8342) - Use
LinkTestCase for L.GroupNormalization (#8343) - Relax tolerances of ChainerX linalg forward tests (#8344)
- Add chainerx test to dataset_tests (#8346)
- Print installed packages in pytest (#8348)
- Reduce shape in ChainerX linalg test (#8349)
- Use different docker image for each base development branch (#8350)
- Set CHAINER_CI in Travis CI (#8353)
- Set CHAINER_CI in ChainerX tests in Jenkins (#8354)
- Set CHAINER_CI in Chainer tests in FlexCI (#8356)
- Use xpytest to parallelize tests (#8361)
- Relax float16 forward tolerance of
F.cast test (#8363) - Print actual array values in
FunctionTest modified input error (#8367) - Fix negative tests for
chainerx.linalg.* (#8371) - Avoid non-differential point in
TestTriplet (#8376) - Check ONNX Chainer python styles (#8400)
- Change version of python in travis macos test (#8405)
- Remove chainerx dependency from test backends (#8409)
- Add ChainerX test to
test_allreduce_persistent.py (#8412) - Use
fix_random in xfail backward tests (#8419) - Fix
TestMeshgrid (#8420) - Add ChainerMN and ONNX-chainer tests to Mergify requirements (#8424)
- Add chainerx tests to
test_checkpoint.py (#8429) - Fix random in ChainerX n-step GRU test (#8431)
- Add chainerx tests to
test_create_mnbn_model (#8435) - Add chainerx tests into
multi_node_optimizer (#8436) - Annotate tests that usually run >30s (#8443)
- Lookup macOS undefined symbols at runtime in backend tests (#8448)
- Skip some
Convolution2D tests for older numpy versions (#8458) - Add
parametrize_device_name to setup.cfg (#8459) - Fix conflict between #8251 and #8361 (#8461)
- Fix example test data (#8463)
- Enable verbose flag when installing chainer in Jenkins (#8467)
- Remove ChainerX
F.cholesky test (#8469) - Ignore
cupy.util.PerformanceWarning in pytest (#8471) - Avoid ChainerX slow tests in Jenkins (#8472)
- Fix flaky test of
_modified_xlogx (#8483) - Fix broken version specification in FlexCI dockerfile (#8485)
- Remove unnecessary export on ONNX replace function test (#8487)
- Allow
array_utils.uniform to be deterministic with fix_random by default (#8491) - Add error message for invalid base branch in pfnCI (#8496)
- Adjust timeout and build memory usage in FlexCI (#8498)