v7.0.0rc1
Pre-releaseThis is the release note of v7.0.0rc1. See here for the complete list of solved issues and merged PRs.
Announcements
This time, we will keep the current branches for active development (master for v7.x, v6 for v6.x) after the RC. We will maintain v6.x series until Python2 EOL, so we do not cut the new development version for now to avoid increasing the number of branches to maintain. New features will be included directly into v7 for a while, and maintenance changes will be backported to v6.
Highlights
ONNX-Chainer Integration
ONNX-Chainer which used to be a separate project has now been integrated to the Chainer repository and made more accessible to existing Chainer users (#8229). You can easily export Chainer model as ONNX format like this:
import onnx_chainer
onnx_chainer.export(chainer_model, pseudo_input, filename='model.onnx')For a more detailed description on how to get started, please refer to the ONNX-Chainer section in the official documentation.
ChainerMN
ChainerMN now works with ChainerX. In this release, the MNIST example has also been updated to demonstrate the usage. (#7844)
New Features
- Add
UpsamplingDeconvFilterandDownsamplingConvFilterinitializer (#5290, thanks @knorth55!) - Add
chainerx.meshgrid(#6668, thanks @kshitij12345!) - Add
chainerx.hsplit(#7030, thanks @ishanrai05!) - Add
linalg.choleskyto ChainerX (#7329, thanks @IvanYashchuk!) - Add
linalg.eigh,linalg.eigvalshto ChainerX (#7503, thanks @IvanYashchuk!) - ChainerX + ChainerMN integration on MNIST (#7844)
- New configuration system of communicator inspired by links (#7885)
- More efficient multi-node snapshot (#8003)
- A new multi-node evaluator for
force_equal_length=False(#8071) - Allow weight initializer to have its own
RandomStateinstance (#8081, thanks @mr4msm!) - Add
chainerx.hinge(#8168) - Integrate ONNX-Chainer to Chainer repository (#8229)
- Implement
chainerx::SoftmaxCrossEntropyandchainerx.softmax_cross_entropy(#8250) - Add
chainermn.testing.to_devicefunction (#8279) - Add
chainerx.copyto(#8314, thanks @kshitij12345!)
Enhancements
- Rename
TabularDataset.as_tuple/as_dicttoTabularDataset.astuple/asdict(#7788) - Deprecate
DeviceResident.to_gpu/to_cpu/to_intel64(#8058) - Support zero-sized matrix in
generate_matrix(#8167) - Add mode argument to
chainerx.take(#8197) - Delete move and copy of virtual
*GradStateclasses (#8224) - Fix directional gradient stability in
gradient_check(#8236) - Fix some typo (#8243, thanks @garanews!)
- Fix CuPy installation detection error message (#8264)
- Fix intel64 support of
F.batch_normalization(#8266) - Fix dim clearing on output (#8270)
- Remove
deviceargument fromchainerx.diagandchainerx.diagflat(#8275) - Fix algorithm to avoid small directions in
gradient_check(#8290) - Show import error with guild message on ONNX (#8293)
- Partially
output_gradsupport onfake_as_funcnode(#8298) - Compute
F.negative_samplingin fp32 for fp16 inputs (#8300) - Make some arguments keyword-only. Note that some of them may break code based on v7 beta versions, but none of them breaks the compatibility against v6.
- Make
modeandalign_cornersarguments inF.resize_imagekeyword-only (#8009) - Make
weightsandkeepdimsarguments inVariable.meankeyword-only (#8010) - Make arguments of
WeightStandardizationkeyword-only (#8011) - Make
call_before_trainingargument ofTrainer.extendkeyword-only (#8064)- The argument was introduced in v7.0.0b3, so it is not counted as compatibility break of v7.
- Make arguments in
ObservationAggregatorandMultiNodeEarlyStoppingTriggerkeyword-only (#8065) - Make
force_equal_lengthargument inscatter_datasetandscatter_indexkeyword-only (#8066) - Make
sizeargument oftabular.from_datakeyword-only (#8067)
- Make
Performance Improvements
- Make contiguous case for
chainerx::Takefaster (#8295)
Bug Fixes
- Fix subgraph construction for ChainerX backward (#8049)
- Fix a bug in
F.batch_normalizationwith mixed dtype (#8149) - Fix
__str__of parameterized class (#8169) - Fix bugs when
xandgamma/betahave different dtypes inF.batch_normalization(#8175) - Change
copyto__deepcopy__in ChainerMNbatch_normalizationand replaceto_gpu(#8185) - Fix possible data race in CUDA memory keeper (#8213)
- Add virtual destructor to CUDA
Allocator(#8215) - Inherit input ndarray device in
chainerx.ascontiguousarray(#8262) - Do not expose
global_kernel_registry(#8265) - Fix SCE with ChainerX and normalize (#8301)
- Unable to use
gpu_id=0in ChainerMN testingget_device(#8304)
Code Fixes
- Update variable names for consistent naming convention (#8074)
- Fix style of
setup.cfg(#8180) - Remove unused forward declaration of
AveragePoolPadModeenum (#8214) - Write Read the Docs related comments in
setup.py(#8218) - Remove unused classes
{Max,Average}PoolForwardBackward(#8223) - Conform to
readability-avoid-const-params-in-decls(#8225) - Simplify direction vector sampling in
gradient_check(#8238) - Use type hint for method declaration (#8248)
- Remove obsolete comment in
F.softmax_cross_entropy(#8253) - Fix import order and grouping (#8257)
- Simplify
CreateSubgraph(#8310)
Documentation
- Change citation to new KDD paper (#7994)
- Fix a typo in the Cauchy distribution page (#8208, thanks @nzw0301!)
- Fix
resize_imagesdocumentation to reflect recent code changes (#8221, thanks @zu3st!) - Set up documentation for loss functions in ChainerX (#8231)
- Add documentation for
chainerx.ravel(#8233) - Add documentation for
chainerx.sigmoid_cross_entropy(#8249) - Put a link to CuPy installation guide in README instead of a command instruction (#8287)
Installation
- Add ability to build with ninja generator. (#8194, thanks @cloudhan!)
- Suppress warnings-as-errors from external libraries (#8227)
- Write CMake generator when building (#8239)
- Add
libchainerx_base.ato link chainerx statically (#8247)
Examples
- Fix WaveNet example not working (#8157, thanks @dhgrs!)
- Fix
generate.pyinexamples/wavenet(#8172, thanks @dhgrs!)
Tests
- Simplify
F.scaletest (#6969, thanks @ishanrai05!) - Improve example tests (#7475)
- Add fp16 test to
test_n_step_rnn(#7483) - Fix protobuf dependency (#7529)
- Fix
TestAccuracy: Randomly reduce testing parameters (#7820) - Support ChainerMN testing in pfnci (#7821)
- Fix flaky tests of
chx.linalg.solve(#7997) - Fix overflow warning in div backward test (#8109)
- Fix flaky
TestQR(#8114) - Disable flaky test retry in flexCI (#8143)
- Pairwise testing (#8164)
- Allow
pytest.skip()in combination withtesting.repeat/retry(#8174) - Remove
DummySerializerandDummyDeserializerfromiterators_tests(#8176) - Fix comparison with casting in hdf5 serializer test (#8182)
- Relax
BatchNormalizationbackward test tolerances (#8189) - Fix caffe test with
protobuf>=3.8(#8190) - Add
CHAINER_TEST_PAIRWISE_PARAMETERIZATIONand enable it only in Travis CI (#8211) - Fix
attrspackage version (#8219) - Fix
HDF5Serializertest for h5py<2.9 (#8220) - Fix flaky
TestBatchNormalization(#8230) - Relax tolerances in ChainerX unary math tests (#8234)
- Add
"jenkins"extras (#8241) - Use
clang-format-6.0if possible and track the version ofclang-format(#8242) - Remove legacy
DeprecationWarningfilter fromtest_multi_node_chain_list(#8246) - Fix
chainex_tests/unit_tests/routines_tests/test_linalg.py::Inverse(#8255) - Fix flaky
TestHuberLoss(#8271) - Stop setting too small tolerances in backprop tests (#8283)
- Make
ImportWarningjust a warning in tests (#8291) - Fix
gtestlinkage (#8292, thanks @cloudhan!) test_averageis slow in FlexCI (#8303)- Add ChainerX to
test_mnistinchainermn_tests(#8305) - Implement
communicator_testfor ChainerX+ChainerMN (#8313)