v7.0.0
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
onSequence
(#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 intesting.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
toLinear
&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 callingxxx_obj
with ChainerX array in ChainerMN (#8320) - Add
Permutate
exporter toonnx_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
onUnpooling2D
in exporting to ONNX (#8391) - Use
ceiling_mode
on exporting to ONNXMaxPool
(#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
usingGatherElements
for ONNXopset>=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 usingcudnn_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
withignore_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
inWrappedFunctionNode.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
inF.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
andeigh
(#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
onSequence
(#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
forL.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 withfix_random
by default (#8491) - Add error message for invalid base branch in pfnCI (#8496)
- Adjust timeout and build memory usage in FlexCI (#8498)