v7.0.0b3
Pre-release
Pre-release
This is the release note of v7.0.0b3. See here for the complete list of solved issues and merged PRs.
Dropping Support of Python 2
Due to the end-of-life (EOL) of Python 2 in January 2020, Python 2 support has been dropped in this release. Chainer v6.x continues to support Python 2. See the blog post for details.
Note on F.max_pooling_2d refactoring
Implementation of F.max_pooling_2d has been merged to F.max_pooling_nd. The behavior is unchanged, so ordinary users should not be affected by this change. However, the FunctionNode class recorded in the computational graph corresponding to F.max_pooling_2d has changed from MaxPooling2D to MaxPoolingND. The code explicitly depending on this class will need a fix.
New Features
- Add an option to invoke extensions before training (#3511, thanks @wkentaro!)
- Add automatic management of snapshots (deletion and load) (#6856)
- Add
chainerx.repeat(#7223, thanks @durswd!) - Support mixed indices in
TabularDataset.slice(#7251) - Add
chainer.dataset.tabular.DelegateDataset(#7276) - Add
ObservationAggregatorextension to ChainerMN (#7302) - Add strict mode to
scatter_datasetas well asscatter_index(#7327) - Add
chainer.dataset.tabular.from_data(#7361) - Add
linalg.svd,linalg.pinvto ChainerX (#7411, thanks @IvanYashchuk!) - Add
TabularDataset.convert/with_converter(#7428) - Add
linalg.solve,linalg.invto ChainerX (#7474, thanks @IvanYashchuk!) - Add base
Converterclass (#7489) - Add
chainerx.sigmoid_cross_entropy(#7524, thanks @aksub99!) - Add
chainerx.cumsum(#7558, thanks @aksub99!) - Add
chainerx.nansum(#7719, thanks @aksub99!) - Add
chainerx.nanargmaxandchainerx.nanargmin(#7755, thanks @aksub99!) - LSTM, GRU and RNN implementation for ChainerX (#7764, thanks @dido1998!)
- Add
tri*routines to ChainerX (#7791, thanks @IvanYashchuk!) - Add finalize method to ChainerMN
CommunicatorBaseclass (#7814) - Add
numerical_grad_dtypetoFunctionTestCaseandLinkTestCase(#7817) - Support callable in
tabular.from_data(#7847) - Add
chainerx.count_nonzero(#7852, thanks @aksub99!) - Implement hooks for memory pool in ChainerX (#7898)
- Add
chainerx.flatten(#7901, thanks @aksub99!) - Add
chainerx.ravel(#7904, thanks @aksub99!)
Enhancements
- Use numbers for input check in
roi_{average|max}_{pooling|align}_2d.py(#5636, thanks @knorth55!) - Warn
Link.to_gpuunless compatible withto_device(#5762) - Change
F.dropoutto use cuDNN by default (#7185, thanks @crcrpar!) - Fix Adam FP16 overflow on GPU kernels (#7694)
- Improve chainerx import check (#7738)
- Make
F.averageas accurate as backend (#7758) - Improve NCCL availability error in
PureNcclCommunicator(#7793) - Fix
type_checkerror message on evaluating bool expression (#7795) - Fix module in msg of
type_check(#7803) - Use scalar array in
chx.leaky_relu/elu(#7816) - Allow
Noneinputs to gradient check and generatingNonegradients inFunctionTestCase(#7831) - Display ChainerX availability in
print_runtime_info(#7833) - Add support for input with different dtypes for 'linalg.solve' in ChainerX (#7840, thanks @IvanYashchuk!)
- Fix
F.clipfor NumPy 1.17 (#7843) - Include
rtol * abs(b)inallcloseoutput (#7848) - Fix SLSTM for omitted upstream gradients (#7891)
- Fix LSTM for omitted upstream gradients (#7896)
- Insert missing spaces between concatenated string literals (#7930)
- Fix a typo in a kernel name (#7962)
Bug Fixes
- Fix
TypeErrorinmax_pooling_2d(#6835, thanks @ishanrai05!) - Fix multi-device loss scaling (#7594)
- Avoid unload module call in
PureNcclCommunicator(#7600) - Fix decorrelated batch normalization when groups ≠ 1 (#7707)
- Fix
create_mnbn_model()bug (#7718) - Fix
optimizer_hooks.GradientHardClippingfor scalar array (#7760) - Fix "zero division" in resize image (#7769, thanks @meokz!)
- Fix ChainerX non native deserialization (#7830)
- Fix
backends.copytofrom chainerx to non-chainerx (#7835) - Fix backward of
split_axisfor intel64 whengrad_ouputscontainsNone(#7836) - Support for CUDA async in batched copy (#7877)
- Add scatter interface to
CommunicatorBase(#7888) - Add
DeprecationWarningto initializer ofBuildingBlock(#7909) - Fix in-place update of arrays in
Link.serializeandoptimizers.Adam(#7918) - Fix precision in
F.max_pooling_2d(#7922)
Code Fixes
- Avoid using
_fallback_workaroundsinSpectralNormalization(#7539) - Create
links.rnnandfunctions.rnn(#7725) - Add
batched_copyto allCommunicators(#7761) - Remove unused lambda capture of
axis(#7799) - Remove unused argument from decorrelated batch norm (#7828)
- Fix copies for
linalg.svdpython bindings layer in ChainerX (#7866, thanks @IvanYashchuk!) - Replace
n_layerwithn_layersfor consistency (#7871) - Rename a variable in CUDA SVD kernel (#7921, thanks @IvanYashchuk!)
- Refactor
pooling_ndfunctions (#7938) - Merge implementation of
F.max_pooling_2dintoF.max_pooling_nd(#7939) - Fix typo in comment: unique -> deterministic (#7775)
Documentation
- Fix
static_graphdocs code examples (#7875) - Add 1.17 to supported NumPy versions (#7883)
- Add
scatterto doc (#7897) - Update stable version in README (#7948)
Installation
- Relax typing version requirement in Python 3 (#7811)
- Remove mypy from requirements (#7812)
- Add OpenMP option for cuSOLVER (#7839)
- Fix Windows build of ChainerX (#7967, thanks @cloudhan!)
Examples
- Improve VAE example (#7250)
- Show prompt in text classification example (#7858, thanks @UmashankarTriforce!)
Tests
- Add test to ensure no mutable default arguments (#4413)
- Simplify
F.max_pooling_2dtest (#6836, thanks @ishanrai05!) - Simplify
F.lstmtest (#7808, thanks @dido1998!) - Simplify
F.slstmtest (#7805, thanks @dido1998!) - Simplify
F.n_step_rnntest (#7804, thanks @dido1998!) - Simplify
F.n_step_lstmtest (#7807, thanks @dido1998!) - Simplify
F.n_step_grutest (#7806, thanks @dido1998!) - Simplify
F.embed_idtest (#7903, thanks @dido1998!) - Add ChainerCV's tests to pfnCI (#7060)
- Add mixed16 tests to multi-node chain list (#7630)
- Add mixed16 tests to collective functions (#7633)
- Add mixed16 tests to
point_to_pointcommunications (#7637) - Add mixed16 tests to
pseudo_connect(#7638) - Skip flaky
TestConv*TensorCore(#7710) - Fix test of
chx.reshape(#7762) - Revert tentative workaround related to OpenSSL (#7790)
- Switch current directory in Jenkins tests (#7834)
- Fix flaky
TestHuberLoss(#7837) - Configure tolerances of
F.average_pooling_2dtest (#7841) - Fix
F.clipped_relutest for NumPy 1.17 (#7842) - Add
test_accuracy.pyto the list of slow test files (#7851) - Fix
BatchNormflaky of ChainerX (#7857) - Refactor convolution functions tests (#7863)
- Relax tolerances in convolution function tests when using old cuDNN (#7864)
- Fix
test_TrilTriu(#7865) - Fix
chainerx.logsumexptest tolerance (#7867) - Relax tolerances in convolution link tests when using old cuDNN (#7868)
- Relax float16 tolerances in ChainerX binary math tests (#7874)
F.tree_lstmtest for ChainerX (#7881, thanks @dido1998!)- Avoid
ndarray.dataaccess and fix wrong test (#7890) - Sample stable inputs in tests of group normalization (#7894)
- Avoid unstable inputs in tests of decorrelated batch normalization (#7900)
- Relax fp16 tolerance in
TrueDivtest (#7917) - Avoid testing
F.castfrom negative floating-point to unsigned (#7920) - Fix tolerance in
L.CRF1dtest (#7926) - Refactor
DecorrelatedBatchNormalizationTestand add stable input (#7932) - Relax tolerances in old cuDNN convolution tests (#7942)
- Fix flaky
chainerx.powertest (#7950) - Increase CPU memory for test instance in PFN CI (#7951)
- Relax fp16 tolerances in
TestContrastive(#7953) - Relax float16 tolerances in
F.batch_invtest (#7971)
Others
- Drop support for Python 2.7 (#7826)