diff --git a/RELEASE.md b/RELEASE.md index c85b2287cc..5777698c5c 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,30 +1,170 @@ # MindSpore 1.1.0 Release Notes + ## MindSpore + ### Major Features and Improvements + #### NewModels - * [STABLE/BETA/DEMO] XXXX (Ascend/GPU/CPU) + +- [STABLE] GNMT v2: similar to the model described in Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation, which is mainly used for corpus translation, on WMT Englis-German dataset.(Ascend) +- [STABLE] MaskRCNN: a conceptually simple, flexible, and general framework for object instance segmentation on COCO2017 dataset.(Ascend) +- [STABLE] YOLOv4: a state-of-the-art detector which is faster and more accurate than all available alternative detectors on MS COCO dataset.(Ascend) +- [STABLE] Openpose: proposes a bottom-up human attitude estimation algorithm using Part Affinity Fields on COCO2017 dataset.(Ascend) +- [STABLE] CNN-CTC: proposes three major contributions to addresses scene text recognition (STR) on MJSynth and SynthText dataset.(Ascend) +- [STABLE] CenterFace: a practical anchor-free face detection and alignment method for edge devices on WiderFace dataset.(Ascend) +- [STABLE] ShuffleNetV2: a much faster and more accurate netowrk than the previous networks on ImageNet 2012 dataset.(GPU) +- [STABLE] EfficientNet-B0: a new scaling method that uniformly scales all dimensions of depth/width/resolution using a simple yet highly effective compound coefficient on ImageNet 2012 dataset.(GPU) +- [BETA] SSD-GhostNet: based on an Ghost module structure which generate more features from cheap operations on Oxford-IIIT Pet dataset.(Ascend) +- [BETA] DS-CNN: Depthwise separable convolutional neural network on Speech commands dataset.(Ascend) +- [BETA] DeepPotentialH2O: A neural network model for molecular dynamics simulations. (Ascend) +- [BETA] GOMO: A classical numerical method called GOMO for ocean simulation. (GPU) + #### FrontEnd - * [STABLE/BETA/DEMO] XXXX (Ascend/GPU/CPU) + +- [STABLE] Refactor the MINDIR to support 310 inference(Ascend). +- [STABLE] The execution backend of sparse operations in optimizer can be set through 'target'. (Ascend/GPU/CPU) +- [STABLE] Support saving specified network to checkpoint and filtering parameters according to prefix when load checkpoint. (Ascend/GPU/CPU) +- [STABLE] Allow users choose whether to load parameter into network strictly.(Ascend/GPU/CPU) +- [STABLE] Before training, in graph mode, in order to have the same network initialization parameter values for all devices, broadcast the parameters on device 0 to other devices. (Ascend/GPU) +- [STABLE] Support if by if of control flow subgraph. (Ascend/GPU) +- [STABLE] Support the judgment that whether a tensor is in a list. (Ascend/GPU/CPU) +- [STABLE] Support to get a value by using the corresponding key in a dictionary in the network; Support to get keys and values of a dictionary in the network. (Ascend/GPU/CPU) +- [STABLE] Support Tensor in enumerate. (Ascend/GPU/CPU) +- [STABLE] Support multilevel index assignment. (Ascend/GPU/CPU) +- [STABLE] Support the 'expand_as','view','abs','mean' method of Tensor. (Ascend/GPU/CPU) +- [STABLE] Support ResizeBilinear operation transfer ratio. (Ascend) +- [STABLE] nn.Matmul supports matrix-vector product and batched matrix multiply. (Ascend/GPU) +- [STABLE] nn.Dense supports input tensor whose dimension can be greater than 2. (Ascend/GPU) +- [BETA] Support higher order differentiation for partial operators.(CPU/GPU/Ascend) +- [STABLE] Support Tensor Augassign.(Ascend/GPU) +- [BETA] Support 22 numpy native interfaces. + #### Auto Parallel - * [STABLE/BETA/DEMO] XXXX (Ascend/GPU/CPU) + +- [STABLE] Support parallel optimizer with weight shard. (Ascend/GPU) +- [STABLE] Support distributed operators: element-wise series, UnsortedSegmentSum, UnsortedSegmentMin, Split, BroadcastTo and Unique etc. (Ascend/GPU) +- [STABLE] Support distributed model prediction. (Ascend/GPU) +- [STABLE] Support auto mixed precision level "O2" in auto and semi auto parallel mode. (Ascend/GPU) +- [STABLE] Add MultiFieldEmbeddingLookup high-level interface. (Ascend/GPU) + #### Executor - * [STABLE/BETA/DEMO] XXXX (Ascend/GPU/CPU) + +- [STABLE] ResNet50 performance optimize. (GPU) +- [STABLE] Support modelzoo net in PyNative mode(Ascend 29, GPU 23, CPU 2).(Ascend/GPU/CPU) +- [STABLE] Support PyNative mode on CPU.(CPU) +- [STABLE] Optimize performance in PyNative mode.(Ascend/GPU/CPU) +- [STABLE] Support Safe Optimized Memory Allocation Solver (SOMAS) on Ascend to improve the memory-reuse, the batch size of Bert large model (128 sequence length) is increased from 160 to 208.(Ascend) +- [BETA] Support second order differentiation in PyNative mode.(Ascend/GPU) +- [DEMO] Add distributed trainning in PyNative mode.(Ascend/GPU) + #### MDP - * [STABLE/BETA/DEMO] XXXX (Ascend/GPU/CPU) + +- [STABLE] Add new operators for Ascend and GPU: IGamma, LGamma, DiGamma; +- [STABLE] Add new distributions for Ascend and GPU: LogNormal, and Logistic; +- [BETA] Add new distributions for Ascend only: Gumbel, Cauchy, Gamma, Beta, and Poisson; Add Categorical distribution for GPU; +- [STABLE] Add new bijectors for Ascend and GPU: GumbelCDF, Invert; +- [STABLE] Add Bayesian layer realized by local reparameterization method for Ascend and GPU; +- [STABLE] Add Anomaly Detection Toolbox based on VAE for Ascend and GPU. + #### DataSet - * [STABLE/BETA/DEMO] XXXX (Ascend/GPU/CPU) -#### Profiling & Debugger - * [STABLE/BETA/DEMO] XXXX (Ascend/GPU/CPU) + +- [STABLE] Support single node multi-p distributed cache data sharing +- [STABLE] Support GPU profiling with data processing +- [STABLE] Support YOLOV3 dynamic shape in sink mode with dataset +- [STABLE] Support unique processing in the data processing pipeline +- [STABLE] Python layer parameter verification error information unified + ### API Change + #### Backwards Incompatible Change + ##### Python API -###### `API name` xxx ([!id](PR_link)) -Description. -> - This section is an example. -> - The interface name should be enclosed by grave accent characters, such as `API name`. -> - Fenced code blocks should be surrounded by blank lines. -> - The Examples must be provided for the backwards incompatible change. +###### Parts of `Optimizer` add target interface ([!6760](https://gitee.com/mindspore/mindspore/pulls/6760/files)) + +The usage of the sparse optimizer is changed. + +The target interface is used to set the execution backend of the sparse operator. + +The add_primitive_attr interface is no longer allowed. + +The following optimizers add the target interface: Adam, FTRL, LazyAdam, ProximalAdagrad + +
1.0.1 | 1.1.0 | +
+ +```python +>>> from mindspore.nn import Adam +>>> +>>> net = LeNet5() +>>> optimizer = Adam(filter(lambda x: x.requires_grad, net.get_parameters())) +>>> optimizer.sparse_opt.add_prim_attr("primitive_target", "CPU") +``` + + | ++ +```python +>>> from mindspore.nn import Adam +>>> +>>> net = LeNet5() +>>> optimizer = Adam(filter(lambda x: x.requires_grad, net.get_parameters())) +>>> optimizer.target = 'CPU' +``` + + | +
1.0.1 | 1.1.0 | +
+ +```python +>>> from mindspore.train.quant import quant +>>> +>>> network = LeNetQuant() +>>> inputs = Tensor(np.ones([1, 1, 32, 32]), mindspore.float32) +>>> quant.export(network, inputs, file_name="lenet_quant.mindir", file_format='MINDIR') +lenet_quant.mindir +``` + + | ++ +```python +>>> from mindspore import export +>>> +>>> network = LeNetQuant() +>>> inputs = Tensor(np.ones([1, 1, 32, 32]), mindspore.float32) +>>> export(network, inputs, file_name="lenet_quant", file_format='MINDIR', quant_mode='AUTO') +lenet_quant.mindir +``` + + | +
```python ->>> from mindspore.ops import operations as P +>>> import mindspore.nn as nn >>> ->>> input = Tensor(np.ones([10, 32, 32, 32]), mindspore.float32) ->>> weight = Tensor(np.ones([32, 32, 3, 3]), mindspore.float32) ->>> conv2d = P.Conv2D(out_channel=32, kernel_size=3) ->>> output = conv2d(input, weight) ->>> print(output.shape) -(10, 32, 30, 30) +>>> dense = nn.Dense(1, 1, activation='relu') ``` | ```python +>>> import mindspore.nn as nn >>> import mindspore.ops as ops >>> ->>> input = Tensor(np.ones([10, 32, 32, 32]), mindspore.float32) ->>> weight = Tensor(np.ones([32, 32, 3, 3]), mindspore.float32) ->>> conv2d = ops.Conv2D(out_channel=32, kernel_size=3) ->>> output = conv2d(input, weight) ->>> print(output.shape) -(10, 32, 30, 30) +>>> dense = nn.Dense(1, 1, activation=nn.ReLU()) +>>> dense = nn.Dense(1, 1, activation=ops.ReLU()) ``` |
1.0.1 | 1.1.0 | +
-##### C++ API +```python +>>> from mindspore import Tensor +>>> +>>> Tensor((1,2,3)).size() +>>> Tensor((1,2,3)).dim() +``` + + | ++ +```python +>>> from mindspore import Tensor +>>> +>>> Tensor((1,2,3)).size +>>> Tensor((1,2,3)).ndim +``` + + | +
1.0.1 | 1.1.0 | +
+ +```python +>>> from mindspore.nn import EmbeddingLookup +>>> +>>> input_indices = Tensor(np.array([[1, 0], [3, 2]]), mindspore.int32) +>>> result = EmbeddingLookup(4,2)(input_indices) +>>> print(result.shape) +(2, 2, 2) +``` + + | ++ +```python +>>> from mindspore.nn import EmbeddingLookup +>>> +>>> input_indices = Tensor(np.array([[1, 0], [3, 2]]), mindspore.int32) +>>> result = EmbeddingLookup(4,2)(input_indices, sparse=False) +>>> print(result.shape) +(2, 2, 2) +``` + + | +
1.0.1 | 1.1.0 | +
+ +```python +>>> import mindspore.nn.probability.bijector as msb +>>> +>>> power = 2 +>>> bijector = msb.PowerTransform(power=power) +``` + + | ++ +```python +>>> import mindspore.nn.probability.bijector as msb +>>> +>>> power = 2.0 +>>> bijector = msb.PowerTransform(power=power) +``` + + | +
1.0.1 | 1.1.0 | +
+ +```python +>>> import mindspore.nn.probability.bijector as msb +>>> from mindspore import dtype as mstype +>>> +>>> bijector = msb.GumbelCDF(loc=0.0, scale=1.0, dtype=mstype.float32) +``` + + | ++ +```python +>>> import mindspore.nn.probability.bijector as msb +>>> +>>> bijector = msb.GumbelCDF(loc=0.0, scale=1.0) +``` + + | +
1.0.1 | 1.1.0 | +
+ +```python +>>> from mindspore.nn.layer.quant import Conv2dBnAct, DenseBnAct +``` + + | ++ +```python +>>> from mindspore.nn import Conv2dBnAct, DenseBnAct +``` + + | +