Skip to content

v0.10.0

Compare
Choose a tag to compare
@gangliao gangliao released this 10 May 09:26
· 12253 commits to master since this release

Release v0.10.0

Please pull the official images from docker hub.

We are glad to release version 0.10.0. In this version, we are happy to release the new
Python API.

  • Our old Python API is kind of out of date. It's hard to learn and hard to
    use. To write a PaddlePaddle program using the old API, we'd have to write
    at least two Python files: one data provider and another one that defines
    the network topology. Users start a PaddlePaddle job by running the
    paddle_trainer C++ program, which calls Python interpreter to run the
    network topology configuration script and then start the training loop,
    which iteratively calls the data provider function to load minibatches.
    This prevents us from writing a Python program in a modern way, e.g., in the
    Jupyter Notebook.

  • The new API, which we often refer to as the v2 API, allows us to write
    much shorter Python programs to define the network and the data in a single
    .py file. Also, this program can run in Jupyter Notebook, since the entry
    point is in Python program and PaddlePaddle runs as a shared library loaded
    and invoked by this Python program.

Basing on the new API, we delivered an online interative book, Deep Learning 101
and its Chinese version.

We also worked on updating our online documentation to describe the new API.
But this is an ongoing work. We will release more documentation improvements
in the next version.

We also worked on bring the new API to distributed model training (via MPI and
Kubernetes). This work is ongoing. We will release more about it in the next
version.

New Features

  • We release new Python API.
  • Deep Learning 101 book in English and Chinese.
  • Support rectangle input for CNN.
  • Support stride pooling for seqlastin and seqfirstin.
  • Expose seq_concat_layer/seq_reshape_layer in trainer_config_helpers.
  • Add dataset package: CIFAR, MNIST, IMDB, WMT14, CONLL05, movielens, imikolov.
  • Add Priorbox layer for Single Shot Multibox Detection.
  • Add smooth L1 cost.
  • Add data reader creator and data reader decorator for v2 API.
  • Add the CPU implementation of cmrnorm projection.

Improvements

  • Support Python virtualenv for paddle_trainer.
  • Add pre-commit hooks, used for automatically format our code.
  • Upgrade protobuf to version 3.x.
  • Add an option to check data type in Python data provider.
  • Speedup the backward of average layer on GPU.
  • Documentation refinement.
  • Check dead links in documents using Travis-CI.
  • Add a example for explaining sparse_vector.
  • Add ReLU in layer_math.py
  • Simplify data processing flow for Quick Start.
  • Support CUDNN Deconv.
  • Add data feeder in v2 API.
  • Support predicting the samples from sys.stdin for sentiment demo.
  • Provide multi-proccess interface for image preprocessing.
  • Add benchmark document for v1 API.
  • Add ReLU in layer_math.py.
  • Add packages for automatically downloading public datasets.
  • Rename Argument::sumCost to Argument::sum since class Argument is nothing with cost.
  • Expose Argument::sum to Python
  • Add a new TensorExpression implementation for matrix-related expression evaluations.
  • Add lazy assignment for optimizing the calculation of a batch of multiple expressions.
  • Add abstract calss Function and its implementation:
    • PadFunc and PadGradFunc.
    • ContextProjectionForwardFunc and ContextProjectionBackwardFunc.
    • CosSimBackward and CosSimBackwardFunc.
    • CrossMapNormalFunc and CrossMapNormalGradFunc.
    • MulFunc.
  • Add class AutoCompare and FunctionCompare, which make it easier to write unit tests for comparing gpu and cpu version of a function.
  • Generate libpaddle_test_main.a and remove the main function inside the test file.
  • Support dense numpy vector in PyDataProvider2.
  • Clean code base, remove some copy-n-pasted code snippets:
    • Extract RowBuffer class for SparseRowMatrix.
    • Clean the interface of GradientMachine.
    • Use override keyword in layer.
    • Simplify Evaluator::create, use ClassRegister to create Evaluators.
  • Check MD5 checksum when downloading demo's dataset.
  • Add paddle::Error which intentially replace LOG(FATAL) in Paddle.

Bug Fixes

  • Check layer input types for recurrent_group.
  • Don't run clang-format with .cu source files.
  • Fix bugs with LogActivation.
  • Fix the bug that runs test_layerHelpers multiple times.
  • Fix the bug that the seq2seq demo exceeds protobuf message size limit.
  • Fix the bug in dataprovider converter in GPU mode.
  • Fix a bug in GatedRecurrentLayer.
  • Fix bug for BatchNorm when testing more than one models.
  • Fix broken unit test of paramRelu.
  • Fix some compile-time warnings about CpuSparseMatrix.
  • Fix MultiGradientMachine error when trainer_count > batch_size.
  • Fix bugs that prevents from asynchronous data loading in PyDataProvider2.