|
1 | 1 | # Release v0.10.0
|
2 | 2 |
|
| 3 | +We are glad to release version 0.10.0. In this version, we are happy to |
| 4 | +release the |
| 5 | +new |
| 6 | +[Python API](http://research.baidu.com/paddlepaddles-new-api-simplifies-deep-learning-programs/). |
| 7 | + |
| 8 | +- Our old Python API is kind of out of date. It's hard to learn and hard to |
| 9 | + use. To write a PaddlePaddle program using the old API, we'd have to write |
| 10 | + at least two Python files: one `data provider` and another one that defines |
| 11 | + the network topology. Users start a PaddlePaddle job by running the |
| 12 | + `paddle_trainer` C++ program, which calls Python interpreter to run the |
| 13 | + network topology configuration script and then start the training loop, |
| 14 | + which iteratively calls the data provider function to load minibatches. |
| 15 | + This prevents us from writing a Python program in a modern way, e.g., in the |
| 16 | + Jupyter Notebook. |
| 17 | + |
| 18 | +- The new API, which we often refer to as the *v2 API*, allows us to write |
| 19 | + much shorter Python programs to define the network and the data in a single |
| 20 | + .py file. Also, this program can run in Jupyter Notebook, since the entry |
| 21 | + point is in Python program and PaddlePaddle runs as a shared library loaded |
| 22 | + and invoked by this Python program. |
| 23 | + |
| 24 | +Basing on the new API, we delivered an online interative |
| 25 | +book, [Deep Learning 101](http://book.paddlepaddle.org/index.en.html) |
| 26 | +and [its Chinese version](http://book.paddlepaddle.org/). |
| 27 | + |
| 28 | +We also worked on updating our online documentation to describe the new API. |
| 29 | +But this is an ongoing work. We will release more documentation improvements |
| 30 | +in the next version. |
| 31 | + |
| 32 | +We also worked on bring the new API to distributed model training (via MPI and |
| 33 | +Kubernetes). This work is ongoing. We will release more about it in the next |
| 34 | +version. |
| 35 | + |
3 | 36 | ## New Features
|
4 | 37 |
|
5 |
| -* We release [new python API](http://research.baidu.com/paddlepaddles-new-api-simplifies-deep-learning-programs/). |
| 38 | +* We release [new Python API](http://research.baidu.com/paddlepaddles-new-api-simplifies-deep-learning-programs/). |
6 | 39 | * Deep Learning 101 book in [English](http://book.paddlepaddle.org/index.en.html) and [Chinese](http://book.paddlepaddle.org/).
|
7 | 40 | * Support rectangle input for CNN.
|
8 | 41 | * Support stride pooling for seqlastin and seqfirstin.
|
9 |
| -* Expose seq_concat_layer/seq_reshape_layer in `trainer_config_helpers`. |
10 |
| -* Add dataset package |
11 |
| - - CIFAR, MNIST, IMDB, WMT14, CONLL05, movielens, imikolov. |
| 42 | +* Expose `seq_concat_layer/seq_reshape_layer` in `trainer_config_helpers`. |
| 43 | +* Add dataset package: CIFAR, MNIST, IMDB, WMT14, CONLL05, movielens, imikolov. |
12 | 44 | * Add Priorbox layer for Single Shot Multibox Detection.
|
13 | 45 | * Add smooth L1 cost.
|
14 | 46 | * Add data reader creator and data reader decorator for v2 API.
|
15 |
| -* Add the cpu implementation of cmrnorm-projection. |
| 47 | +* Add the CPU implementation of cmrnorm projection. |
16 | 48 |
|
17 | 49 | ## Improvements
|
18 | 50 |
|
19 |
| -* Support python virtualenv for `paddle_trainer` process. |
| 51 | +* Support Python virtualenv for `paddle_trainer`. |
20 | 52 | * Add pre-commit hooks, used for automatically format our code.
|
21 |
| -* Use Protobuf 3.X as the default Paddle Protobuf version. |
22 |
| -* Add an option to check data type in python data provider. |
| 53 | +* Upgrade protobuf to version 3.x. |
| 54 | +* Add an option to check data type in Python data provider. |
23 | 55 | * Speedup the backward of average layer on GPU.
|
24 |
| -* Reorganize the catalog of doc/ and refine several docs. |
25 |
| -* Add Travis-CI for checking dead links. |
26 |
| -* Add a example for explaining sparse_vector. |
27 |
| -* Add Relu in layer_math.py |
28 |
| -* Simplify data processing flow for quick start. |
| 56 | +* Documentation refinement. |
| 57 | +* Check dead links in documents using Travis-CI. |
| 58 | +* Add a example for explaining `sparse_vector`. |
| 59 | +* Add ReLU in layer_math.py |
| 60 | +* Simplify data processing flow for Quick Start. |
29 | 61 | * Support CUDNN Deconv.
|
30 |
| -* Add data feeder for v2 API. |
| 62 | +* Add data feeder in v2 API. |
31 | 63 | * Support predicting the samples from sys.stdin for sentiment demo.
|
32 | 64 | * Provide multi-proccess interface for image preprocessing.
|
33 | 65 | * Add benchmark document for v1 API.
|
34 |
| -* Add Relu in layer_math.py. |
| 66 | +* Add ReLU in `layer_math.py`. |
35 | 67 | * Add packages for automatically downloading public datasets.
|
36 |
| -* Rename Argument::sumCost to Argument::sum since Argument does not have to have any relationship with cost. |
37 |
| - * Expose Argument::sum to Python |
| 68 | +* Rename `Argument::sumCost` to `Argument::sum` since class `Argument` is nothing with cost. |
| 69 | +* Expose Argument::sum to Python |
38 | 70 | * Add a new `TensorExpression` implementation for matrix-related expression evaluations.
|
39 |
| -* Add Lazy Assignment for optimize the calculation of multiple expressions. |
40 |
| -* Add `Function` to reconstruct the computation function. |
41 |
| - * PadFunc and PadGradFunc. |
42 |
| - * ContextProjectionForwardFunc and ContextProjectionBackwardFunc. |
43 |
| - * CosSimBackward and CosSimBackwardFunc. |
44 |
| - * CrossMapNormalFunc and CrossMapNormalGradFunc. |
45 |
| - * MulFunc. |
46 |
| -* Add `AutoCompare` and `FunctionCompare`, which make it easier to write unittest for comparing gpu and cpu version of a function. |
47 |
| -* Add `libpaddle_test_main.a` and remove the main function inside the test file. |
| 71 | +* Add lazy assignment for optimizing the calculation of a batch of multiple expressions. |
| 72 | +* Add abstract calss `Function` and its implementation: |
| 73 | + * `PadFunc` and `PadGradFunc`. |
| 74 | + * `ContextProjectionForwardFunc` and `ContextProjectionBackwardFunc`. |
| 75 | + * `CosSimBackward` and `CosSimBackwardFunc`. |
| 76 | + * `CrossMapNormalFunc` and `CrossMapNormalGradFunc`. |
| 77 | + * `MulFunc`. |
| 78 | +* Add class `AutoCompare` and `FunctionCompare`, which make it easier to write unit tests for comparing gpu and cpu version of a function. |
| 79 | +* Generate `libpaddle_test_main.a` and remove the main function inside the test file. |
48 | 80 | * Support dense numpy vector in PyDataProvider2.
|
49 |
| -* Clean code base, remove some copy & paste codes before. |
50 |
| - * Extract RowBuffer class for SparseRowMatrix. |
51 |
| - * Clean GradientMachine's interface. |
52 |
| - * Try use `override` keyword in layer. |
53 |
| - * Simplify Evaluator::create, use `ClassRegister` to create Evaluator. |
54 |
| -* Add md5 check when downloading demo's dataset. |
| 81 | +* Clean code base, remove some copy-n-pasted code snippets: |
| 82 | + * Extract `RowBuffer` class for `SparseRowMatrix`. |
| 83 | + * Clean the interface of `GradientMachine`. |
| 84 | + * Use `override` keyword in layer. |
| 85 | + * Simplify `Evaluator::create`, use `ClassRegister` to create `Evaluator`s. |
| 86 | +* Check MD5 checksum when downloading demo's dataset. |
55 | 87 | * Add `paddle::Error` which intentially replace `LOG(FATAL)` in Paddle.
|
56 | 88 |
|
57 | 89 | ## Bug Fixes
|
58 | 90 |
|
59 |
| -* Add layer check for recurrent_group. |
60 |
| -* Clang-format off on some cuda .cc files. |
61 |
| -* Fix LogActivation which is not defined. |
62 |
| -* Fix bug when run test_layerHelpers multiple times. |
63 |
| -* Fix protobuf size limit on seq2seq demo. |
64 |
| -* Fix bug for dataprovider converter in GPU mode. |
65 |
| -* Fix bug in GatedRecurrentLayer which only occurs in predicting or `job=test` mode. |
66 |
| -* Fix bug for BatchNorm when testing more than models in test mode. |
67 |
| -* Fix unit test of paramRelu. |
68 |
| -* Fix some warning about CpuSparseMatrix. |
69 |
| -* Fix MultiGradientMachine error if trainer_count > batch_size. |
70 |
| -* Fix when async load data in PyDataProvider2. |
| 91 | +* Check layer input types for `recurrent_group`. |
| 92 | +* Don't run `clang-format` with .cu source files. |
| 93 | +* Fix bugs with `LogActivation`. |
| 94 | +* Fix the bug that runs `test_layerHelpers` multiple times. |
| 95 | +* Fix the bug that the seq2seq demo exceeds protobuf message size limit. |
| 96 | +* Fix the bug in dataprovider converter in GPU mode. |
| 97 | +* Fix a bug in `GatedRecurrentLayer`. |
| 98 | +* Fix bug for `BatchNorm` when testing more than one models. |
| 99 | +* Fix broken unit test of paramRelu. |
| 100 | +* Fix some compile-time warnings about `CpuSparseMatrix`. |
| 101 | +* Fix `MultiGradientMachine` error when `trainer_count > batch_size`. |
| 102 | +* Fix bugs that prevents from asynchronous data loading in `PyDataProvider2`. |
71 | 103 |
|
72 | 104 | # Release v0.9.0
|
73 | 105 |
|
|
0 commit comments