v7.0.0b2
Pre-release
Pre-release
This is the release note of v7.0.0b2. See here for the complete list of solved issues and merged PRs.
Highlights
ChainerX has several new backproppable ops such as ELU and softplus activation functions and loss functions including absolute error, squared error, Huber loss and Gaussian KL divergence. ChainerX is also supported in all OptimizerHooks when used through Chainer. TabularDataset has also been improved with new features.
Changes without compatibility
Variable.gradgetter now raises an error when it is called before callingcleargrad,zerograd, or setting the gradient directly. (#7146)- Moving average statistics of
BatchRenormalization(usage of epsilon) is fixed. It affects the inference behavior. (#7202) - Deprecated communicators in ChainerMN have now been removed. Those include
HierarchicalCommunicator,SingleNodeCommunicatorandTwoDimensionalCommunicatorand are no longer necessary as NCCL now supports inter-node communication. (#7697)
New Features
- Add
WeightStandardizationlink hook (#6678, thanks @hitsgub!) - Add
chainerx.dsplit(#7031, thanks @ishanrai05!) - Add basic loss functions (#7063, thanks @kshitij12345!)
- Add basic activation functions (#7118, thanks @aksub99!)
- Add
chainerx.left_shiftandchainerx.right_shift(#7339, thanks @sky58!) - Add
chainerx.elu(#7439, thanks @aksub99!) - Add unary mode to
TabularDataset(#7493) - Add
TabluarDataset.__iter__(#7601) - Add
Variable.mean(#7670) - Add
chainerx.softplus(#7679, thanks @aksub99!)
Enhancements
- Avoid mutable default arguments (#4822)
- Set initial
top_dataas-np.infandargmax_dataas-1inF.roi_max_pooling_2d(#6237, thanks @knorth55!) - Add a flag to detect access to grad before calling
cleargrad(#7146) - Add fp16 support to collective functions (#7456)
- Call
chainerx.gradfromchainer.grad(#7464) - Use abseil to print stacktrace when signal is raised in ChainerX (#7502)
- Emit build info of ChainerX and stop hiding
ImportError(#7518) - Avoid chainerx implicit type conversions (#7520)
- Make
deviceargument a keyword only argument. (#7537, thanks @kshitij12345!) - Support ellipsis in
Array::Atand__getitem__(#7561) - Introduce
chainerx.ndarray._is_chained(#7565) - Remove
squared_differenceand fix docs (#7582) - Avoid code duplication in optimizer hook implementation (#7592)
- Refactor
allreduce_grad()and functions related with it (#7604) - Raise python
IndexErrorif the index__getitem__takes is out of bounds (#7614) - Use
six.integer_typesfor axis check inF.concat(#7632, thanks @knorth55!) - Fix
optimizer_hooks.GradientClippingfor ChainerX (#7641) - Replace optional-lite with abseil (#7646)
- Make devices hashable (#7648)
- Fix
optimizer_hooks.GradientHardClippingfor ChainerX (#7656, thanks @kshitij12345!) - Implement
IntervalTrigger.__str__(#7664, thanks @ktns!) GradientLARSoptimizer hook working with ChainerX (#7669)- Use
absl::Spanand related helpers instead ofgsl::span(#7671) - Added chainerx support on initializers (#7687)
- Delete deprecated communicators (#7697)
- Use
six.integer_typesfor axis checks (#7713) - Require CUDA if
CHAINERX_BUILD_CUDAis set (#7752)
Bug Fixes
- Skip
Nonearray inFunctionNodeNaN check (#6283) - Fix unit selection of
CupyMemoryProfiler(#7003) - Exclude eps from
running_varofF.batch_renormalization(#7202) - Fix pickling issues on
MultiprocessIterator(#7486) - Fix
initializers.Identityfor ideep backend (#7548) - Fix a bug of
chainermn.links.create_mnbn_model(#7603) - Fix
PickleDatasetcrash when using multiprocessing (#7625, thanks @zaltoprofen!) - Fix
AMSGradwith intel64 backend (#7661) - Fix an error on
chainer.gradfor multiple devices (#7692) - Fixes spectral normalization chainerx conversion (#7698)
- Fix offset in
chainerx::Flip(#7727) - Fix reporter for multi-thread use (#7731)
- Fix
Parameter.dtypefor uninitialized parameter (#7735) - Fix
UpdateRule.use_fp32_updatefor uninitialized parameter (#7736)
Code Fixes
- Use
backend.get_array_modulenotcuda.get_array_module(#7514, thanks @crcrpar!) - Make
squared_differencealias ofsquared_error(#7547) - Avoid code duplication and access violation between
OptimizerandGradientMethod(#7585) - Use
chainerx.clipped_reluinF.clipped_relu(#7588) - Use old syntax to suppressing warning in ChainerX (#7615)
- Rename split functions in pybind implementation (#7617)
- Cleanup
CMakeList.txt(#7647) - Fix flake8 error (#7663)
- Avoid else after return (#7666)
- Use curly braces for constructors (#7667)
Documentation
- Improve contribution docs (#6492)
- Explain corresponding
Links (#6512) - Fix inconsistent document for extension finalizer (#7557)
- Document
CHAINERX_CUDNN_USE_CUPY(#7574) - Fix typos in
ResNetprepare method (#7577) - Tiny fix of
BackwardContextcomment (#7595, thanks @crcrpar!) - Fixes typos in
expand_dims.py(#7602) - Remove moved comment (#7607)
- Correct missing parenthesis in documents (#7611, thanks @tinunkai!)
- Minor grammar Improvements to broadcast documentation. (#7621)
- Edits
FunctionNodedocs. (#7622) - Fix a typo in
chainer/functions/math/average.py(#7653, thanks @ktns!) - Fixes a grammar error (#7658)
- Fix typo in
F.squeezedocumentation (#7682)
Examples
- Support default dtype in sentiment example's recursive minibatch version (#7438)
- Warn NaN in FP16 mode in sentiment example's recursive minibatch version (#7447)
- Fix typo in
examples/vae/train_vae.py(#7578, thanks @m4saka!) - Example fix: stateful triggers cannot be reused (#7665)
Tests
- Simplify
F.polygammatest (#6970, thanks @ishanrai05!) - Simplify
F.casttest (#7034) - Refactor optimizer test for multi-backend (#7590)
- Fix
y_shapenot used in tests (#7610) - Test
optimizer_hooks.Lassofor ChainerX (#7657, thanks @kshitij12345!) - Fix
GroupNormalizationtests (#7684) - Test
optimizer_hooks.GradientNoisefor ChainerX (#7709, thanks @kshitij12345!) - Fix warning filter for
protobuf(#7715) - Test
optimizer_hooks.WeightDecayfor ChainerX (#7716, thanks @kshitij12345!) - Relax
atol/rtolofchainerx.erffloat16 test (#7721) - Fix flaky
TestHuberLoss(#7723) - Reverse input array for non-contiguous tests (#7728)
- Fix eps in
Contrastive.backward(#7745) - Fix flaky
TestContrastive(#7747)