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 OptimizerHook
s when used through Chainer. TabularDataset
has also been improved with new features.
Changes without compatibility
Variable.grad
getter 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
,SingleNodeCommunicator
andTwoDimensionalCommunicator
and are no longer necessary as NCCL now supports inter-node communication. (#7697)
New Features
- Add
WeightStandardization
link 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_shift
andchainerx.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_data
as-np.inf
andargmax_data
as-1
inF.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.grad
fromchainer.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
device
argument a keyword only argument. (#7537, thanks @kshitij12345!) - Support ellipsis in
Array::At
and__getitem__
(#7561) - Introduce
chainerx.ndarray._is_chained
(#7565) - Remove
squared_difference
and fix docs (#7582) - Avoid code duplication in optimizer hook implementation (#7592)
- Refactor
allreduce_grad()
and functions related with it (#7604) - Raise python
IndexError
if the index__getitem__
takes is out of bounds (#7614) - Use
six.integer_types
for axis check inF.concat
(#7632, thanks @knorth55!) - Fix
optimizer_hooks.GradientClipping
for ChainerX (#7641) - Replace optional-lite with abseil (#7646)
- Make devices hashable (#7648)
- Fix
optimizer_hooks.GradientHardClipping
for ChainerX (#7656, thanks @kshitij12345!) - Implement
IntervalTrigger.__str__
(#7664, thanks @ktns!) GradientLARS
optimizer hook working with ChainerX (#7669)- Use
absl::Span
and related helpers instead ofgsl::span
(#7671) - Added chainerx support on initializers (#7687)
- Delete deprecated communicators (#7697)
- Use
six.integer_types
for axis checks (#7713) - Require CUDA if
CHAINERX_BUILD_CUDA
is set (#7752)
Bug Fixes
- Skip
None
array inFunctionNode
NaN check (#6283) - Fix unit selection of
CupyMemoryProfiler
(#7003) - Exclude eps from
running_var
ofF.batch_renormalization
(#7202) - Fix pickling issues on
MultiprocessIterator
(#7486) - Fix
initializers.Identity
for ideep backend (#7548) - Fix a bug of
chainermn.links.create_mnbn_model
(#7603) - Fix
PickleDataset
crash when using multiprocessing (#7625, thanks @zaltoprofen!) - Fix
AMSGrad
with intel64 backend (#7661) - Fix an error on
chainer.grad
for multiple devices (#7692) - Fixes spectral normalization chainerx conversion (#7698)
- Fix offset in
chainerx::Flip
(#7727) - Fix reporter for multi-thread use (#7731)
- Fix
Parameter.dtype
for uninitialized parameter (#7735) - Fix
UpdateRule.use_fp32_update
for uninitialized parameter (#7736)
Code Fixes
- Use
backend.get_array_module
notcuda.get_array_module
(#7514, thanks @crcrpar!) - Make
squared_difference
alias ofsquared_error
(#7547) - Avoid code duplication and access violation between
Optimizer
andGradientMethod
(#7585) - Use
chainerx.clipped_relu
inF.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
Link
s (#6512) - Fix inconsistent document for extension finalizer (#7557)
- Document
CHAINERX_CUDNN_USE_CUPY
(#7574) - Fix typos in
ResNet
prepare method (#7577) - Tiny fix of
BackwardContext
comment (#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
FunctionNode
docs. (#7622) - Fix a typo in
chainer/functions/math/average.py
(#7653, thanks @ktns!) - Fixes a grammar error (#7658)
- Fix typo in
F.squeeze
documentation (#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.polygamma
test (#6970, thanks @ishanrai05!) - Simplify
F.cast
test (#7034) - Refactor optimizer test for multi-backend (#7590)
- Fix
y_shape
not used in tests (#7610) - Test
optimizer_hooks.Lasso
for ChainerX (#7657, thanks @kshitij12345!) - Fix
GroupNormalization
tests (#7684) - Test
optimizer_hooks.GradientNoise
for ChainerX (#7709, thanks @kshitij12345!) - Fix warning filter for
protobuf
(#7715) - Test
optimizer_hooks.WeightDecay
for ChainerX (#7716, thanks @kshitij12345!) - Relax
atol
/rtol
ofchainerx.erf
float16 test (#7721) - Fix flaky
TestHuberLoss
(#7723) - Reverse input array for non-contiguous tests (#7728)
- Fix eps in
Contrastive.backward
(#7745) - Fix flaky
TestContrastive
(#7747)