From 4691659e3d941dcb55919b044b69465bdf8c109f Mon Sep 17 00:00:00 2001 From: typhoonzero Date: Wed, 22 Nov 2017 12:59:48 +0800 Subject: [PATCH 01/17] update installation docs --- .../build_from_source_cn.rst | 119 ++++++++ .../build_and_install/build_from_source_en.md | 236 -------------- .../build_from_source_en.rst | 133 ++++++++ .../cmake/build_from_source_cn.rst | 43 --- .../cmake/cblas_settings.csv | 5 - .../cmake/compile_options.csv | 12 - .../build_and_install/docker_install_cn.rst | 229 +++++--------- .../build_and_install/docker_install_en.rst | 288 +++++------------- doc/getstarted/build_and_install/index_cn.rst | 29 +- doc/getstarted/build_and_install/index_en.rst | 36 ++- .../build_and_install/pip_install_cn.rst | 77 +++++ .../build_and_install/pip_install_en.rst | 96 ++++++ 12 files changed, 623 insertions(+), 680 deletions(-) create mode 100644 doc/getstarted/build_and_install/build_from_source_cn.rst delete mode 100644 doc/getstarted/build_and_install/build_from_source_en.md create mode 100644 doc/getstarted/build_and_install/build_from_source_en.rst delete mode 100644 doc/getstarted/build_and_install/cmake/build_from_source_cn.rst delete mode 100644 doc/getstarted/build_and_install/cmake/cblas_settings.csv delete mode 100644 doc/getstarted/build_and_install/cmake/compile_options.csv create mode 100644 doc/getstarted/build_and_install/pip_install_cn.rst create mode 100644 doc/getstarted/build_and_install/pip_install_en.rst diff --git a/doc/getstarted/build_and_install/build_from_source_cn.rst b/doc/getstarted/build_and_install/build_from_source_cn.rst new file mode 100644 index 0000000000..f71b4b6fef --- /dev/null +++ b/doc/getstarted/build_and_install/build_from_source_cn.rst @@ -0,0 +1,119 @@ +从源码编译PaddlePaddle +====================== + +.. _build_step: + +编译方法 +---------------- + +PaddlePaddle主要使用 `CMake `_ 以及GCC, G++作为编译工具。 +我们推荐您使用PaddlePaddle编译环境镜像完成编译,这样可以免去单独安装编译依赖的步骤,可选的不同编译环境 +可以在 `这里 `_ 找到。 +编译PaddlePaddle,需要执行: + +.. code-block:: bash + + git clone https://github.com/PaddlePaddle/Paddle.git + cd Paddle + # 如果使用Docker编译环境,执行下面的命令 + docker run -it -v $PWD:/paddle -e "WITH_GPU=ON" -e "WITH_TESTING=OFF" paddlepaddle/paddle_manylinux_devel:cuda8.0_cudnn5 bash -x paddle/scripts/docker/build.sh + # 如果不使用Docker编译环境,执行下面的命令 + mkdir build + cd build + cmake -DWITH_GPU=ON -DWITH_TESTING=OFF .. + make + + +编译完成后会在build/python/dist目录下生成输出的whl包,可以选在在当前机器安装也可以拷贝到目标机器安装: + +.. code-block:: bash + + pip install python/dist/*.whl + + +.. _build_step: + +编译依赖 +---------------- + +PaddlePaddle编译需要使用到下面的依赖(包含但不限于),其他的依赖软件,会自动在编译时下载。 + +.. csv-table:: PaddlePaddle编译依赖 + :header: "依赖", "版本", "说明" + :widths: 10, 15, 30 + + "CMake", ">=3.5", "" + "GCC", "4.8.2", "推荐使用CentOS的devtools2" + "Python", "2.7.x", "依赖libpython2.7.so" + "pip", ">=9.0", "" + "numpy", "", "" + "SWIG", ">=2.0", "" + "Go", ">=1.8", "可选" + + +.. _build_options: + +编译选项 +---------------- + +PaddlePaddle的编译选项,包括生成CPU/GPU二进制文件、链接何种BLAS库等。用户可在调用cmake的时候设置它们,详细的cmake使用方法可以参考 `官方文档 `_ 。 + +.. _build_options_bool: + +Bool型的编译选项 +---------------- + +用户可在cmake的命令行中,通过使用 ``-D`` 命令设置该类编译选项,例如 + +.. code-block:: bash + + cmake .. -DWITH_GPU=OFF + +.. csv-table:: Bool型的编译选项 + :header: "选项", "说明", "默认值" + :widths: 1, 7, 2 + + "WITH_GPU", "是否支持GPU。", "是" + "WITH_DOUBLE", "是否使用双精度浮点数。", "否" + "WITH_DSO", "是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库。", "是" + "WITH_AVX", "是否编译含有AVX指令集的PaddlePaddle二进制文件", "是" + "WITH_PYTHON", "是否内嵌PYTHON解释器。", "是" + "WITH_STYLE_CHECK", "是否编译时进行代码风格检查", "是" + "WITH_TESTING", "是否开启单元测试", "是" + "WITH_DOC", "是否编译中英文文档", "否" + "WITH_SWIG_PY", "是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练", "自动" + "WITH_GOLANG", "是否编译go语言的可容错parameter server", "是" + +.. _build_options_blas: + +BLAS/CUDA/Cudnn的编译选项 +-------------------------- +BLAS ++++++ + +PaddlePaddle支持以下任意一种BLAS库:`MKL `_ ,`ATLAS `_ ,`OpenBlAS `_ 和 `REFERENCE BLAS `_ 。 + +.. csv-table:: BLAS路径相关的编译选项 + :header: "编译选项", "描述", "注意" + :widths: 1, 2, 7 + + "MKL_ROOT", "${MKL_ROOT}/include下需要包含mkl.h,${MKL_ROOT}/lib目录下需要包含mkl_core,mkl_sequential和mkl_intel_lp64三个库。" + "ATLAS_ROOT", "${ATLAS_ROOT}/include下需要包含cblas.h,${ATLAS_ROOT}/lib下需要包含cblas和atlas两个库。" + "OPENBLAS_ROOT", "${OPENBLAS_ROOT}/include下需要包含cblas.h,${OPENBLAS_ROOT}/lib下需要包含openblas库。" + "REFERENCE_CBLAS_ROOT", "${REFERENCE_CBLAS_ROOT}/include下需要包含cblas.h,${REFERENCE_CBLAS_ROOT}/lib下需要包含cblas库。" + +CUDA/Cudnn ++++++++++++ + +PaddlePaddle可以使用cudnn v2之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的cudnn是同一个版本。 我们推荐使用最新版本的cudnn v5.1。 + +编译选项的设置 +++++++++++++++ + +PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/Cudnn库。cmake编译时,首先在系统路径(/usr/lib\:/usr/local/lib)中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用 ``-D`` 命令可以设置,例如 + +.. code-block:: bash + + cmake .. -DMKL_ROOT=/opt/mkl/ -DCUDNN_ROOT=/opt/cudnnv5 + +注意:这几个编译选项的设置,只在第一次cmake的时候有效。如果之后想要重新设置,推荐清理整个编译目录(``rm -rf``)后,再指定。 diff --git a/doc/getstarted/build_and_install/build_from_source_en.md b/doc/getstarted/build_and_install/build_from_source_en.md deleted file mode 100644 index 2f14614894..0000000000 --- a/doc/getstarted/build_and_install/build_from_source_en.md +++ /dev/null @@ -1,236 +0,0 @@ -Installing from Sources -========================== - -* [1. Download and Setup](#download) -* [2. Requirements](#requirements) -* [3. Build on Ubuntu](#ubuntu) -* [4. Build on Centos](#centos) - - -## Download and Setup -You can download PaddlePaddle from the [github source](https://github.com/PaddlePaddle/Paddle). - -```bash -git clone https://github.com/PaddlePaddle/Paddle paddle -cd paddle -``` -## Requirements - -To compile the source code, your computer must be equipped with the following dependencies. - -- **Compiler**: GCC >= 4.8 or Clang >= 3.3 (AppleClang >= 5.1) and gfortran compiler -- **CMake**: CMake >= 3.0 (at least CMake 3.4 on Mac OS X) -- **BLAS**: MKL, OpenBlas or ATLAS -- **Python**: only support Python 2.7 -- **Go** - -**Note:** For CUDA 7.0 and CUDA 7.5, GCC 5.0 and up are not supported! -For CUDA 8.0, GCC versions later than 5.3 are not supported! - -### Options - -PaddlePaddle supports some build options. - - - - - - - - - - - - - - - - - - - - - - - - - - -
OptionalDescription
WITH_GPUCompile PaddlePaddle with NVIDIA GPU
WITH_AVXCompile PaddlePaddle with AVX intrinsics
WITH_DSOCompile PaddlePaddle with dynamic linked CUDA
WITH_TESTINGCompile PaddlePaddle with unit testing
WITH_SWIG_PYCompile PaddlePaddle with inference api
WITH_STYLE_CHECKCompile PaddlePaddle with style check
WITH_PYTHONCompile PaddlePaddle with python interpreter
WITH_DOUBLECompile PaddlePaddle with double precision
WITH_RDMACompile PaddlePaddle with RDMA support
WITH_TIMERCompile PaddlePaddle with stats timer
WITH_PROFILERCompile PaddlePaddle with GPU profiler
WITH_DOCCompile PaddlePaddle with documentation
WITH_COVERAGECompile PaddlePaddle with code coverage
COVERALLS_UPLOADPackage code coverage data to coveralls
ON_TRAVISExclude special unit test on Travis CI
- - -**Note:** - - The GPU version works best with Cuda Toolkit 8.0 and cuDNN v5. - - Other versions like Cuda Toolkit 7.0, 7.5 and cuDNN v3, v4 are also supported. - - **To utilize cuDNN v5, Cuda Toolkit 7.5 is prerequisite and vice versa.** - -As a simple example, consider the following: - -1. **BLAS Dependencies(optional)** - - CMake will search BLAS libraries from the system. If not found, OpenBLAS will be downloaded, built and installed automatically. - To utilize preinstalled BLAS, you can simply specify MKL, OpenBLAS or ATLAS via `MKL_ROOT`, `OPENBLAS_ROOT` or `ATLAS_ROOT`. - - ```bash - # specify MKL - cmake .. -DMKL_ROOT= - # or specify OpenBLAS - cmake .. -DOPENBLAS_ROOT= - ``` - -2. **Doc Dependencies(optional)** - - To generate PaddlePaddle's documentation, install dependencies and set `-DWITH_DOC=ON` as follows: - - ```bash - pip install 'sphinx>=1.4.0' - pip install sphinx_rtd_theme recommonmark - - # install doxygen on Ubuntu - sudo apt-get install doxygen - # install doxygen on Mac OS X - brew install doxygen - - # active docs in cmake - cmake .. -DWITH_DOC=ON` - ``` - -## Build on Ubuntu 14.04 - -### Install Dependencies - -- **Paddle Dependencies** - - ```bash - # necessary - sudo apt-get update - sudo apt-get install -y git curl gcc g++ gfortran make build-essential automake - sudo apt-get install -y python python-pip python-numpy libpython-dev bison - sudo pip install 'protobuf==3.1.0.post1' - - # Install Go - # You can follow https://golang.org/doc/install for a detailed explanation. - wget -O go.tgz https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz && \ - tar -C $HOME -xzf go.tgz && \ - mkdir $HOME/gopath && \ - rm go.tgz - - # Setup environment variables - export GOROOT=$HOME/go - export GOPATH=$HOME/gopath - export PATH=$PATH:$GOROOT/bin - - # install cmake 3.4 - curl -sSL https://cmake.org/files/v3.4/cmake-3.4.1.tar.gz | tar -xz && \ - cd cmake-3.4.1 && ./bootstrap && make -j4 && sudo make install && \ - cd .. && rm -rf cmake-3.4.1 - ``` - -- **GPU Dependencies (optional)** - - To build GPU version, you will need the following installed: - - 1. a CUDA-capable GPU - 2. A supported version of Linux with a GCC compiler and toolchain - 3. NVIDIA CUDA Toolkit (available at http://developer.nvidia.com/cuda-downloads) - 4. NVIDIA cuDNN Library (available at https://developer.nvidia.com/cudnn) - - The CUDA development environment relies on tight integration with the host development environment, - including the host compiler and C runtime libraries, and is therefore only supported on - distribution versions that have been qualified for this CUDA Toolkit release. - - After downloading cuDNN library, issue the following commands: - - ```bash - sudo tar -xzf cudnn-7.5-linux-x64-v5.1.tgz -C /usr/local - sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* - ``` - Then you need to set LD\_LIBRARY\_PATH, PATH environment variables in ~/.bashrc. - - ```bash - export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH - export PATH=/usr/local/cuda/bin:$PATH - ``` - -### Build and Install - -As usual, the best option is to create build folder under paddle project directory. - -```bash -mkdir build && cd build -``` - -Finally, you can build and install PaddlePaddle: - -```bash -# you can add build option here, such as: -cmake .. -DCMAKE_INSTALL_PREFIX= -# please use sudo make install, if you want to install PaddlePaddle into the system -make -j `nproc` && make install -# set PaddlePaddle installation path in ~/.bashrc -export PATH=/bin:$PATH -# install PaddlePaddle Python modules. -sudo pip install /opt/paddle/share/wheels/*.whl -``` - -## Build on Centos 7 - -### Install Dependencies - -- **CPU Dependencies** - - ```bash - # necessary - sudo yum update - sudo yum install -y epel-release - sudo yum install -y make cmake3 python-devel python-pip gcc-gfortran swig git - sudo pip install wheel numpy - sudo pip install 'protobuf>=3.0.0' - ``` - -- **GPU Dependencies (optional)** - - To build GPU version, you will need the following installed: - - 1. a CUDA-capable GPU - 2. A supported version of Linux with a GCC compiler and toolchain - 3. NVIDIA CUDA Toolkit (available at http://developer.nvidia.com/cuda-downloads) - 4. NVIDIA cuDNN Library (available at https://developer.nvidia.com/cudnn) - - The CUDA development environment relies on tight integration with the host development environment, - including the host compiler and C runtime libraries, and is therefore only supported on - distribution versions that have been qualified for this CUDA Toolkit release. - - After downloading cuDNN library, issue the following commands: - - ```bash - sudo tar -xzf cudnn-7.5-linux-x64-v5.1.tgz -C /usr/local - sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* - ``` - Then you need to set LD\_LIBRARY\_PATH, PATH environment variables in ~/.bashrc. - - ```bash - export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH - export PATH=/usr/local/cuda/bin:$PATH - ``` - -### Build and Install - -As usual, the best option is to create build folder under paddle project directory. - -```bash -mkdir build && cd build -``` - -Finally, you can build and install PaddlePaddle: - -```bash -# you can add build option here, such as: -cmake3 .. -DCMAKE_INSTALL_PREFIX= -# please use sudo make install, if you want to install PaddlePaddle into the system -make -j `nproc` && make install -# set PaddlePaddle installation path in ~/.bashrc -export PATH=/bin:$PATH -# install PaddlePaddle Python modules. -sudo pip install /opt/paddle/share/wheels/*.whl -``` diff --git a/doc/getstarted/build_and_install/build_from_source_en.rst b/doc/getstarted/build_and_install/build_from_source_en.rst new file mode 100644 index 0000000000..80dfb8c468 --- /dev/null +++ b/doc/getstarted/build_and_install/build_from_source_en.rst @@ -0,0 +1,133 @@ +Build PaddlePaddle from Sources +========================== + +.. _build_step: + +How To Build +---------------- + +PaddlePaddle mainly uses `CMake `_ and GCC, G++ as compile +tools. We recommend you to use our pre-built Docker image to run the build +to avoid installing dependencies by yourself. We have several build environment +Docker images `here `_. +Then run: + +.. code-block:: bash + + git clone https://github.com/PaddlePaddle/Paddle.git + cd Paddle + # run the following command if you are using docker + docker run -it -v $PWD:/paddle -e "WITH_GPU=ON" -e "WITH_TESTING=OFF" paddlepaddle/paddle_manylinux_devel:cuda8.0_cudnn5 bash -x paddle/scripts/docker/build.sh + # else run these commands + mkdir build + cd build + cmake -DWITH_GPU=ON -DWITH_TESTING=OFF .. + make + +When the compile finishes, you can get the output whl package under +build/python/dist, then you can choose to install the whl on local +machine or copy it to the target machine. + +.. code-block:: bash + + pip install python/dist/*.whl + +.. _build_step: + +Compile Dependencies +---------------- + +PaddlePaddle need the following dependencies when compiling, other dependencies +will be downloaded automatically. + +.. csv-table:: PaddlePaddle Compile Dependencies + :header: "Dependency", "Version", "Description" + :widths: 10, 15, 30 + + "CMake", ">=3.5", "" + "GCC", "4.8.2", "Recommend devtools2 for CentOS" + "Python", "2.7.x", "Need libpython2.7.so" + "pip", ">=9.0", "" + "numpy", "", "" + "SWIG", ">=2.0", "" + "Go", ">=1.8", "Optional" + + +.. _build_options: + +Build Options +---------------- + +Build options include whether build binaries for CPU or GPU, which BLAS +library to use etc. You may pass these settings when running cmake. +For detailed cmake tutorial please refer to `here `_ 。 + +.. _build_options_bool: + +Bool Type Options +---------------- + +You can add :code:`-D` argument to pass such options, like: + +.. code-block:: bash + + cmake .. -DWITH_GPU=OFF + +.. csv-table:: Bool Type Options + :header: "Option", "Description", "Default" + :widths: 1, 7, 2 + + "WITH_GPU", "Build with GPU support", "ON" + "WITH_DOUBLE", "Build with double precision", "OFF" + "WITH_DSO", "Dynamically load CUDA libraries", "ON" + "WITH_AVX", "Build with AVX support", "ON" + "WITH_PYTHON", "Build with integrated Python interpreter", "ON" + "WITH_STYLE_CHECK", "Check code style when building", "ON" + "WITH_TESTING", "Build unit tests", "ON" + "WITH_DOC", "Build documentaions", "OFF" + "WITH_SWIG_PY", "Build Python SWIG interface for V2 API", "Auto" + "WITH_GOLANG", "Build fault-tolerant parameter server written in go", "ON" + +.. _build_options_blas: + +BLAS/CUDA/Cudnn Options +-------------------------- +BLAS ++++++ + +You can build PaddlePaddle with any of the below BLAS libraries: +`MKL `_ , +`ATLAS `_ , +`OpenBlAS `_ and +`REFERENCE BLAS `_ . + +.. csv-table:: BLAS Options + :header: "Option", "Description" + :widths: 1, 7 + + "MKL_ROOT", "${MKL_ROOT}/include must have mkl.h, ${MKL_ROOT}/lib must have mkl_core, mkl_sequential and mkl_intel_lp64 libs." + "ATLAS_ROOT", "${ATLAS_ROOT}/include must have cblas.h,${ATLAS_ROOT}/lib must have cblas and atlas libs" + "OPENBLAS_ROOT", "${OPENBLAS_ROOT}/include must have cblas.h,${OPENBLAS_ROOT}/lib must have OpenBlas libs." + "REFERENCE_CBLAS_ROOT", "${REFERENCE_CBLAS_ROOT}/include must have cblas.h,${REFERENCE_CBLAS_ROOT}/lib must have cblas lib." + +CUDA/Cudnn ++++++++++++ + +PaddlePaddle can build with any version later than Cudnn v2, and we intend to +keep on with latest cudnn versions. Be sure to run with the same version of cudnn +you built. + +Pass Compile Options +++++++++++++++ + +You can pass compile options to use intended BLAS/CUDA/Cudnn libraries. +When running cmake command, it will search system paths like +:code:`/usr/lib\:/usr/local/lib` and then search paths that you +passed to cmake, i.e. + +.. code-block:: bash + + cmake .. -DMKL_ROOT=/opt/mkl/ -DCUDNN_ROOT=/opt/cudnnv5 + +**NOTE: These options only take effect when running cmake for the first time, you need to clean the cmake cache or clean the build directory if you want to change it.** + diff --git a/doc/getstarted/build_and_install/cmake/build_from_source_cn.rst b/doc/getstarted/build_and_install/cmake/build_from_source_cn.rst deleted file mode 100644 index be0c1ffa45..0000000000 --- a/doc/getstarted/build_and_install/cmake/build_from_source_cn.rst +++ /dev/null @@ -1,43 +0,0 @@ -PaddlePaddle的编译选项 -====================== - -PaddlePaddle的编译选项,包括生成CPU/GPU二进制文件、链接何种BLAS库等。用户可在调用cmake的时候设置它们,详细的cmake使用方法可以参考 `官方文档 `_ 。 - -Bool型的编译选项 ----------------- -用户可在cmake的命令行中,通过使用 ``-D`` 命令设置该类编译选项,例如 - -.. code-block:: bash - - cmake .. -DWITH_GPU=OFF - -.. csv-table:: Bool型的编译选项 - :widths: 1, 7, 2 - :file: compile_options.csv - -BLAS/CUDA/Cudnn的编译选项 --------------------------- -BLAS -+++++ - -PaddlePaddle支持以下任意一种BLAS库:`MKL `_ ,`ATLAS `_ ,`OpenBlAS `_ 和 `REFERENCE BLAS `_ 。 - -.. csv-table:: BLAS路径相关的编译选项 - :widths: 1, 2, 7 - :file: cblas_settings.csv - -CUDA/Cudnn -+++++++++++ - -PaddlePaddle可以使用cudnn v2之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的cudnn是同一个版本。 我们推荐使用最新版本的cudnn v5.1。 - -编译选项的设置 -++++++++++++++ - -PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/Cudnn库。cmake编译时,首先在系统路径(/usr/lib\:/usr/local/lib)中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用 ``-D`` 命令可以设置,例如 - -.. code-block:: bash - - cmake .. -DMKL_ROOT=/opt/mkl/ -DCUDNN_ROOT=/opt/cudnnv5 - -注意:这几个编译选项的设置,只在第一次cmake的时候有效。如果之后想要重新设置,推荐清理整个编译目录(``rm -rf``)后,再指定。 diff --git a/doc/getstarted/build_and_install/cmake/cblas_settings.csv b/doc/getstarted/build_and_install/cmake/cblas_settings.csv deleted file mode 100644 index a6356baf16..0000000000 --- a/doc/getstarted/build_and_install/cmake/cblas_settings.csv +++ /dev/null @@ -1,5 +0,0 @@ -编译选项,描述,注意 -MKL_ROOT,MKL的路径,${MKL_ROOT}/include下需要包含mkl.h,${MKL_ROOT}/lib目录下需要包含mkl_core,mkl_sequential和mkl_intel_lp64三个库。 -ATLAS_ROOT,ATLAS的路径,${ATLAS_ROOT}/include下需要包含cblas.h,${ATLAS_ROOT}/lib下需要包含cblas和atlas两个库。 -OPENBLAS_ROOT,OpenBLAS的路径,${OPENBLAS_ROOT}/include下需要包含cblas.h,${OPENBLAS_ROOT}/lib下需要包含openblas库。 -REFERENCE_CBLAS_ROOT,REFERENCE BLAS的路径,${REFERENCE_CBLAS_ROOT}/include下需要包含cblas.h,${REFERENCE_CBLAS_ROOT}/lib下需要包含cblas库。 \ No newline at end of file diff --git a/doc/getstarted/build_and_install/cmake/compile_options.csv b/doc/getstarted/build_and_install/cmake/compile_options.csv deleted file mode 100644 index 463b825470..0000000000 --- a/doc/getstarted/build_and_install/cmake/compile_options.csv +++ /dev/null @@ -1,12 +0,0 @@ -选项,说明,默认值 -WITH_GPU,是否支持GPU。,取决于是否寻找到CUDA工具链 -WITH_DOUBLE,是否使用双精度浮点数。,否 -WITH_DSO,是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库。,是 -WITH_AVX,是否编译含有AVX指令集的PaddlePaddle二进制文件,是 -WITH_PYTHON,是否内嵌PYTHON解释器。方便今后的嵌入式移植工作。,是 -WITH_STYLE_CHECK,是否编译时进行代码风格检查,是 -WITH_RDMA,是否开启RDMA,否 -WITH_TIMER,是否开启计时功能。如果开启会导致运行略慢,打印的日志变多,但是方便调试和测Benchmark,否 -WITH_TESTING,是否开启单元测试,取决于是否寻找到GTEST -WITH_DOC,是否编译中英文文档,否 -WITH_SWIG_PY,是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练,取决于是否寻找到SWIG \ No newline at end of file diff --git a/doc/getstarted/build_and_install/docker_install_cn.rst b/doc/getstarted/build_and_install/docker_install_cn.rst index 0d34dec8e9..03a8362793 100644 --- a/doc/getstarted/build_and_install/docker_install_cn.rst +++ b/doc/getstarted/build_and_install/docker_install_cn.rst @@ -1,152 +1,83 @@ -PaddlePaddle的Docker容器使用方式 +使用Docker安装运行PaddlePaddle ================================ -PaddlePaddle目前唯一官方支持的运行的方式是Docker容器。因为Docker能在所有主要操作系统(包括Linux,Mac OS X和Windows)上运行。 请注意,您需要更改 `Dockers设置 `_ 才能充分利用Mac OS X和Windows上的硬件资源。 +使用Docker安装和运行PaddlePaddle可以无需考虑依赖环境即可运行。并且也可以在Windows的docker中运行。 +您可以在 `Docker官网 `_ 获得基本的Docker安装和使用方法。 -Docker使用入门 ------------------------------- - -几个基础的概念帮助理解和使用Docker: +如果您在使用Windows,可以参考 +`这篇 `_ +教程,完成在Windows上安装和使用Docker。 -- *镜像*:一个Docker镜像是一个打包好的软件。它包含了这个软件本身和它所依赖的运行环境。PaddlePaddle的Docker镜像就包含了PaddlePaddle的Python库以及其依赖的多个Python库。这样我们可以直接在Docker中运行需要的程序而不需要安装后在执行。可以执行: +在了解Docker的基本使用方法之后,即可开始下面的步骤: - .. code-block:: bash +.. _docker_pull: - docker images +获取PaddlePaddle的Docker镜像 +------------------------------ - 来列出当前系统中的所有镜像,同样可以执行: +执行下面的命令获取最新的PaddlePaddle Docker镜像 .. code-block:: bash - - docker pull paddlepaddle/paddle:0.10.0 - 来下载Docker镜像,paddlepaddle/paddle是从官方镜像源Dockerhub.com下载的,推荐国内用户使用docker.paddlepaddle.org/paddle下载。 + docker pull paddlepaddle/paddle -- *容器*: 如果说一个Docker镜像就是一个程序,那容器就是这个程序运行时产生的“进程”。 - 实际上,一个容器就是一个操作系统的进程,但是是运行在独立的进程空间,文件系统以及网络之上。 - 可以执行: +对于国内用户,我们提供了加速访问的镜像源: .. code-block:: bash - docker run paddlepaddle/paddle:0.10.0 + docker pull docker.paddlepaddle.org/paddle - 来使用一个镜像启动一个容器。 - -- 默认情况下,Docker容器会运行在独立的文件系统空间之上,我们无法在Docker容器中 - 访问到主机上的文件。可以通过*挂载Volume*的方式,将主机上的文件或目录挂载到 - Docker容器中。下面的命令把当前目录挂载到了容器中的 /data 目录下,容器使用 - debian镜像,并且启动后执行 :code:`ls /data`。 +下载GPU版本的Docker镜像: .. code-block:: bash + docker pull paddlepaddle/paddle:latest-gpu + docker pull docker.paddlepaddle.org/paddle:latest-gpu - docker run --rm -v $(pwd):/data debian ls /data - -PaddlePaddle发布的Docker镜像使用说明 ------------------------------- - -我们把PaddlePaddle的编译环境打包成一个镜像,称为开发镜像,里面涵盖了 -PaddlePaddle需要的所有编译工具。把编译出来的PaddlePaddle也打包成一个镜 -像,称为生产镜像,里面涵盖了PaddlePaddle运行所需的所有环境。每次 -PaddlePaddle发布新版本的时候都会发布对应版本的生产镜像以及开发镜像。运 -行镜像包括纯CPU版本和GPU版本以及其对应的非AVX版本。我们会在 -`dockerhub.com `_ -和国内镜像`docker.paddlepaddle.org` 提供最新 -的Docker镜像,可以在"tags"标签下找到最新的Paddle镜像版本。 - -**注意:为了方便在国内的开发者下载Docker镜像,我们提供了国内的镜像服务器供大家使用。如果您在国内,请把文档里命令中的paddlepaddle/paddle替换成docker.paddlepaddle.org/paddle。** - -1. 开发镜像::code:`paddlepaddle/paddle:0.10.0-dev` - - 这个镜像包含了Paddle相关的开发工具以及编译和运行环境。用户可以使用开发镜像代替配置本地环境,完成开发,编译,发布, - 文档编写等工作。由于不同的Paddle的版本可能需要不同的依赖和工具,所以如果需要自行配置开发环境需要考虑版本的因素。 - 开发镜像包含了以下工具: - - - gcc/clang - - nvcc - - Python - - sphinx - - woboq - - sshd - 很多开发者会使用远程的安装有GPU的服务器工作,用户可以使用ssh登录到这台服务器上并执行 :code:`docker exec`进入开发镜像并开始工作, - 也可以在开发镜像中启动一个SSHD服务,方便开发者直接登录到镜像中进行开发: - - 以交互容器方式运行开发镜像: - - .. code-block:: bash - - docker run -it --rm -v $(pwd):/paddle paddlepaddle/paddle:0.10.0-dev /bin/bash - - 或者,可以以后台进程方式运行容器: - - .. code-block:: bash - - docker run -d -p 2202:22 -p 8888:8888 -v $(pwd):/paddle paddlepaddle/paddle:0.10.0-dev /usr/sbin/sshd -D - - 然后用密码 :code:`root` SSH进入容器: +下载指定版本的Docker镜像,可以从 + `DockerHub网站 `_ + 获取可选的tag,并执行下面的命令: - .. code-block:: bash - - ssh -p 2202 root@localhost - - SSH方式的一个优点是我们可以从多个终端进入容器。比如,一个终端运行vi,另一个终端运行Python。另一个好处是我们可以把PaddlePaddle容器运行在远程服务器上,并在笔记本上通过SSH与其连接。 - -2. 生产镜像:根据CPU、GPU和非AVX区分了如下4个镜像: - - - GPU/AVX::code:`paddlepaddle/paddle:-gpu` - - GPU/no-AVX::code:`paddlepaddle/paddle:-gpu-noavx` - - CPU/AVX::code:`paddlepaddle/paddle:` - - CPU/no-AVX::code:`paddlepaddle/paddle:-noavx` - - 纯CPU镜像以及GPU镜像都会用到AVX指令集,但是2008年之前生产的旧电脑不支持AVX。以下指令能检查Linux电脑是否支持AVX: - - .. code-block:: bash - - if cat /proc/cpuinfo | grep -i avx; then echo Yes; else echo No; fi - - 如果输出是No,就需要选择使用no-AVX的镜像 - - **注:在0.10.0之后的版本,PaddlePaddle都可以自动判断硬件是否支持AVX,所以无需判断AVX即可使用** - - 以上方法在GPU镜像里也能用,只是请不要忘记提前在物理机上安装GPU最新驱动。 - 为了保证GPU驱动能够在镜像里面正常运行,我们推荐使用[nvidia-docker](https://github.com/NVIDIA/nvidia-docker)来运行镜像。 - - .. code-block:: bash - - nvidia-docker run -it --rm paddledev/paddle:0.10.0-gpu /bin/bash - - 注意: 如果使用nvidia-docker存在问题,你也许可以尝试更老的方法,具体如下,但是我们并不推荐这种方法。: - - .. code-block:: bash - - export CUDA_SO="$(\ls /usr/lib64/libcuda* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}')" - export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}') - docker run ${CUDA_SO} ${DEVICES} -it paddledev/paddle:0.10.0-gpu - -3. 运行以及发布您的AI程序 + .. code-block:: bash + docker pull paddlepaddle/paddle:[tag] + # 比如: + docker pull docker.paddlepaddle.org/paddle:0.10.0-gpu - 假设您已经完成了一个AI训练的python程序 :code:`a.py`,这个程序是您在开发机上使用开发镜像完成开发。此时您可以运行这个命令在开发机上进行测试运行: - .. code-block:: bash +.. _docker_run: - docker run -it -v $PWD:/work paddle /work/a.py +在Docker中执行PaddlePaddle训练程序 +------------------------------ - 如果要使用GPU,请运行: +假设您已经在当前目录编写了一个PaddlePaddle的程序 :code:`train.py`(可以参考 +`PaddlePaddleBook `_ +编写),就可以使用下面的命令开始执行训练: - .. code-block:: bash + .. code-block:: bash + docker run -it -v $PWD:/work paddlepaddle/paddle /work/train.py + +上述命令中, :code:`-it` 参数说明容器已交互式运行; :code:`-v $PWD:/work` +指定将当前路径(Linux中$PWD变量会展开为当前路径的绝对路径)挂载到容器内部的 :code:`/work` +目录; :code:`paddlepaddle/paddle` 指定需要使用的容器; 最后 :code:`/work/train.py` +为容器内执行的命令,即运行训练程序。 - nvidia-docker run -it -v $PWD:/work paddle /work/a.py +当然,您也可以进入到Docker容器中,以交互式的方式执行或调试您的代码: + .. code-block:: bash + docker run -it -v $PWD:/work paddlepaddle/paddle /bin/bash + cd /work + python train.py - 这里`a.py`包含的所有依赖假设都可以在Paddle的运行容器中。如果需要包含更多的依赖、或者需要发布您的应用的镜像,可以编写`Dockerfile`使用`FROM paddledev/paddle:0.10.0` - 创建和发布自己的AI程序镜像。 +**注:PaddlePaddle Docker镜像为了减小体积,默认没有安装vim,您可以在容器中执行 :code:`apt-get install -y vim` 安装后,在容器中编辑代码。** -运行PaddlePaddle Book ---------------------- +.. _docker_run_book: -Jupyter Notebook是一个开源的web程序,大家可以通过它制作和分享带有代码、公式、图表、文字的交互式文档。用户可以通过网页浏览文档。 +使用Docker启动PaddlePaddle Book教程 +------------------------------ +使用Docker可以快速在本地启动一个包含了PaddlePaddle官方Book教程的Jupiter Notebook,可以通过网页浏览。 PaddlePaddle Book是为用户和开发者制作的一个交互式的Jupyter Notebook。 如果您想要更深入了解deep learning,PaddlePaddle Book一定是您最好的选择。 +大家可以通过它阅读教程,或者制作和分享带有代码、公式、图表、文字的交互式文档。 我们提供可以直接运行PaddlePaddle Book的Docker镜像,直接运行: @@ -162,61 +93,37 @@ PaddlePaddle Book是为用户和开发者制作的一个交互式的Jupyter Note 就这么简单,享受您的旅程! -通过Docker容器开发PaddlePaddle ------------------------------- - -开发人员可以在Docker开发镜像中开发PaddlePaddle。这样开发人员可以以一致的方式在不同的平台上工作 - Linux,Mac OS X和Windows。 +.. _docker_run_gpu: -1. 制作PaddlePaddle开发镜像 - - PaddlePaddle每次发布新版本都会发布对应的开发镜像供开发者直接使用。这里介绍如生成造这个开发镜像。 - 生成Docker镜像的方式有两个,一个是直接把一个容器转换成镜像,另一个是创建Dockerfile并运行docker build指令按照Dockerfile生成镜像。第一个方法的好处是简单快捷,适合自己实验,可以快速迭代。第二个方法的好处是Dockerfile可以把整个生成流程描述很清楚,其他人很容易看懂镜像生成过程,持续集成系统也可以简单地复现这个过程。我们采用第二个方法。Dockerfile位于PaddlePaddle repo的根目录。生成生产镜像只需要运行: - - .. code-block:: bash - - git clone https://github.com/PaddlePaddle/Paddle.git - cd Paddle - docker build -t paddle:dev . +使用Docker执行GPU训练 +------------------------------ - docker build这个命令的-t指定了生成的镜像的名字,这里我们用paddle:dev。到此,PaddlePaddle开发镜像就被构建完毕了。 +为了保证GPU驱动能够在镜像里面正常运行,我们推荐使用 +`nvidia-docker `_ 来运行镜像。 +请不要忘记提前在物理机上安装GPU最新驱动。 -2. 制作PaddlePaddle生产镜像 +.. code-block:: bash - 生产镜像的生成分为两步,第一步是运行: + nvidia-docker run -it -v $PWD:/work paddledev/paddle:latest-gpu /bin/bash - .. code-block:: bash - - docker run -v $(pwd):/paddle -e "WITH_GPU=OFF" -e "WITH_AVX=OFF" -e "WITH_TEST=ON" paddle:dev +**注: 如果没有安装nvidia-docker,可以尝试以下的方法,将CUDA库和Linux设备挂载到Docker容器内:** - 以上命令会编译PaddlePaddle,生成运行程序,以及生成创建生产镜像的Dockerfile。所有生成的的文件都在build目录下。“WITH_GPU”控制生成的生产镜像是否支持GPU,“WITH_AVX”控制生成的生产镜像是否支持AVX,”WITH_TEST“控制是否生成单元测试。 +.. code-block:: bash - 第二步是运行: + export CUDA_SO="$(\ls /usr/lib64/libcuda* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}')" + export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}') + docker run ${CUDA_SO} ${DEVICES} -it paddledev/paddle:latest-gpu - .. code-block:: bash - - docker build -t paddle:prod -f build/Dockerfile ./build +关于AVX: - 以上命令会按照生成的Dockerfile把生成的程序拷贝到生产镜像中并做相应的配置,最终生成名为paddle:prod的生产镜像。 +AVX是一种CPU指令集,可以加速PaddlePaddle的计算。最新的PaddlePaddle Docker镜像默认 +是开启AVX编译的,所以,如果您的电脑不支持AVX,需要单独 +`编译 <./build_from_source_cn.rst>`_ PaddlePaddle为no-avx版本。 -3. 运行单元测试 - - 运行以下指令: +以下指令能检查Linux电脑是否支持AVX: .. code-block:: bash - - docker run -it -v $(pwd):/paddle paddle:dev bash -c "cd /paddle/build && ctest" - -文档 ----- - -Paddle的Docker开发镜像带有一个通过 `woboq code browser -`_ 生成的HTML版本的C++源代码,便于用户浏览C++源码。 - -只要在Docker里启动PaddlePaddle的时候给它一个名字,就可以再运行另一个Nginx Docker镜像来服务HTML代码: -.. code-block:: bash - - docker run -d --name paddle-cpu-doc paddle:0.10.0-dev - docker run -d --volumes-from paddle-cpu-doc -p 8088:80 nginx + if cat /proc/cpuinfo | grep -i avx; then echo Yes; else echo No; fi -接着我们就能够打开浏览器在 http://localhost:8088/paddle/ 浏览代码。 +如果输出是No,就需要选择使用no-AVX的镜像 diff --git a/doc/getstarted/build_and_install/docker_install_en.rst b/doc/getstarted/build_and_install/docker_install_en.rst index 94860240f6..4ee55380f0 100644 --- a/doc/getstarted/build_and_install/docker_install_en.rst +++ b/doc/getstarted/build_and_install/docker_install_en.rst @@ -1,236 +1,85 @@ PaddlePaddle in Docker Containers ================================= -Docker container is currently the only officially-supported way to -running PaddlePaddle. This is reasonable as Docker now runs on all -major operating systems including Linux, Mac OS X, and Windows. -Please be aware that you will need to change `Dockers settings -`_ to make full use -of your hardware resource on Mac OS X and Windows. +Run PaddlePaddle in Docker container so that you don't need to care about +runtime dependencies, also you can run under Windows system. You can get +tutorials at `here `_ . -Working With Docker -------------------- +If you are using Windows, please refer to +`this `_ +tutorial to start running docker under windows. -Docker is simple as long as we understand a few basic concepts: +After you've read above tutorials you may proceed the following steps. -- *image*: A Docker image is a pack of software. It could contain one or more programs and all their dependencies. For example, the PaddlePaddle's Docker image includes pre-built PaddlePaddle and Python and many Python packages. We can run a Docker image directly, other than installing all these software. We can type +.. _docker_pull: - .. code-block:: bash - - docker images +Pull PaddlePaddle Docker Image +------------------------------ - to list all images in the system. We can also run +Run the following command to download the latest Docker images: .. code-block:: bash - - docker pull paddlepaddle/paddle:0.10.0 - to download a Docker image, paddlepaddle/paddle in this example, - from Dockerhub.com. + docker pull paddlepaddle/paddle -- *container*: considering a Docker image a program, a container is a - "process" that runs the image. Indeed, a container is exactly an - operating system process, but with a virtualized filesystem, network - port space, and other virtualized environment. We can type +For users in China, we provide a faster mirror: .. code-block:: bash - docker run paddlepaddle/paddle:0.10.0 - - to start a container to run a Docker image, paddlepaddle/paddle in this example. + docker pull docker.paddlepaddle.org/paddle -- By default docker container have an isolated file system namespace, - we can not see the files in the host file system. By using *volume*, - mounted files in host will be visible inside docker container. - Following command will mount current dirctory into /data inside - docker container, run docker container from debian image with - command :code:`ls /data`. +Download GPU version images: .. code-block:: bash + docker pull paddlepaddle/paddle:latest-gpu + docker pull docker.paddlepaddle.org/paddle:latest-gpu - docker run --rm -v $(pwd):/data debian ls /data - -Usage of CPU-only and GPU Images ----------------------------------- - -We package PaddlePaddle's compile environment into a Docker image, -called the develop image, it contains all compiling tools that -PaddlePaddle needs. We package compiled PaddlePaddle program into a -Docker image as well, called the production image, it contains all -runtime environment that running PaddlePaddle needs. For each version -of PaddlePaddle, we release both of them. Production image includes -CPU-only version and a CUDA GPU version and their no-AVX versions. - -We put the docker images on `dockerhub.com -`_. You can find the -latest versions under "tags" tab at dockerhub.com. - -** NOTE: If you are in China, you can use our Docker image registry mirror to speed up the download process. To use it, please replace all paddlepaddle/paddle in the commands to docker.paddlepaddle.org/paddle.** - - -1. development image :code:`paddlepaddle/paddle:-dev` - - This image has packed related develop tools and runtime - environment. Users and developers can use this image instead of - their own local computer to accomplish development, build, - releasing, document writing etc. While different version of paddle - may depends on different version of libraries and tools, if you - want to setup a local environment, you must pay attention to the - versions. The development image contains: - - - gcc/clang - - nvcc - - Python - - sphinx - - woboq - - sshd - - Many developers use servers with GPUs, they can use ssh to login to - the server and run :code:`docker exec` to enter the docker - container and start their work. Also they can start a development - docker image with SSHD service, so they can login to the container - and start work. - -2. Production images, this image might have multiple variants: - - - GPU/AVX::code:`paddlepaddle/paddle:-gpu` - - GPU/no-AVX::code:`paddlepaddle/paddle:-gpu-noavx` - - CPU/AVX::code:`paddlepaddle/paddle:` - - CPU/no-AVX::code:`paddlepaddle/paddle:-noavx` - - Please be aware that the CPU-only and the GPU images both use the - AVX instruction set, but old computers produced before 2008 do not - support AVX. The following command checks if your Linux computer - supports AVX: - - .. code-block:: bash - - if cat /proc/cpuinfo | grep -i avx; then echo Yes; else echo No; fi - - **NOTE:versions after 0.10.0 will automatically detect system AVX support, so manual detect is not needed in this case.** - To run the CPU-only image as an interactive container: - - .. code-block:: bash - - docker run -it --rm paddlepaddle/paddle:0.10.0 /bin/bash - - Above method work with the GPU image too -- the recommended way is - using `nvidia-docker `_. - - Please install nvidia-docker first following this `tutorial - `_. - - Now you can run a GPU image: - - .. code-block:: bash - - nvidia-docker run -it --rm paddlepaddle/paddle:0.10.0-gpu /bin/bash - - -Train Model Using Python API ----------------------------- - -Our official docker image provides a runtime for PaddlePaddle -programs. The typical workflow will be as follows: - -Create a directory as workspace: - -.. code-block:: bash - - mkdir ~/workspace - -Edit a PaddlePaddle python program using your favourite editor - -.. code-block:: bash - - emacs ~/workspace/example.py - -Run the program using docker: - -.. code-block:: bash - - docker run --rm -v ~/workspace:/workspace paddlepaddle/paddle:0.10.0 python /workspace/example.py - -Or if you are using GPU for training: - -.. code-block:: bash - - nvidia-docker run --rm -v ~/workspace:/workspace paddlepaddle/paddle:0.10.0-gpu python /workspace/example.py - -Above commands will start a docker container by running :code:`python -/workspace/example.py`. It will stop once :code:`python -/workspace/example.py` finishes. - -Another way is to tell docker to start a :code:`/bin/bash` session and -run PaddlePaddle program interactively: - -.. code-block:: bash - - docker run -it -v ~/workspace:/workspace paddlepaddle/paddle:0.10.0 /bin/bash - # now we are inside docker container - cd /workspace - python example.py - -Running with GPU is identical: - -.. code-block:: bash - - nvidia-docker run -it -v ~/workspace:/workspace paddlepaddle/paddle:0.10.0-gpu /bin/bash - # now we are inside docker container - cd /workspace - python example.py - - -Develop PaddlePaddle or Train Model Using C++ API ---------------------------------------------------- - -We will be using PaddlePaddle development image since it contains all -compiling tools and dependencies. - -1. Build PaddlePaddle develop image - - Use following command to build PaddlePaddle develop image: - - .. code-block:: bash - - git clone https://github.com/PaddlePaddle/Paddle.git && cd Paddle - docker build -t paddle:dev . +If you want to use legacy versions, choose a tag from +`DockerHub `_ +and run: -2. Build PaddlePaddle production image - - There are two steps for building production image, the first step is to run: - - .. code-block:: bash + .. code-block:: bash + docker pull paddlepaddle/paddle:[tag] + # i.e. + docker pull docker.paddlepaddle.org/paddle:0.10.0-gpu - docker run -v $(pwd):/paddle -e "WITH_GPU=OFF" -e "WITH_AVX=OFF" -e "WITH_TEST=ON" paddle:dev +.. _docker_run: - The above command will compile PaddlePaddle and create a Dockerfile for building production image. All the generated files are in the build directory. "WITH_GPU" controls if the generated production image supports GPU. "WITH_AVX" controls if the generated production image supports AVX. "WITH_TEST" controls if the unit test will be generated. +Launch your training program in Docker +------------------------------ - The second step is to run: +Assume that you have already written a PaddlePaddle program +named :code:`train.py` (refer to +`PaddlePaddleBook `_ +for more samples), then run the following command: - .. code-block:: bash + .. code-block:: bash + docker run -it -v $PWD:/work paddlepaddle/paddle /work/train.py - docker build -t paddle:prod -f build/Dockerfile ./build +In the above command, :code:`-it` means run the container interactively; +:code:`-v $PWD:/work` means mount the current directory ($PWD will expand +to current absolute path in Linux) under :code:`/work` in the container. +:code:`paddlepaddle/paddle` to specify image to use; finnally +:code:`/work/train.py` is the command to run inside docker. - The above command will generate the production image by copying the compiled PaddlePaddle program into the image. +Also, you can go into the container shell, run or debug your code +interactively: -3. Run unit test + .. code-block:: bash + docker run -it -v $PWD:/work paddlepaddle/paddle /bin/bash + cd /work + python train.py - Following command will run unit test: +**NOTE: We did not install vim in the default docker image to reduce the image size, you can run :code:`apt-get install -y vim` to install it if you need to edit python files.** - .. code-block:: bash - - docker run -it -v $(pwd):/paddle paddle:dev bash -c "cd /paddle/build && ctest" +.. _docker_run_book: PaddlePaddle Book ------------------ -The Jupyter Notebook is an open-source web application that allows -you to create and share documents that contain live code, equations, -visualizations and explanatory text in a single browser. - -PaddlePaddle Book is an interactive Jupyter Notebook for users and developers. -We already exposed port 8888 for this book. If you want to +You can create a container serving PaddlePaddle Book using Jupiter Notebook in +one minute using Docker. PaddlePaddle Book is an interactive Jupyter Notebook +for users and developers.If you want to dig deeper into deep learning, PaddlePaddle Book definitely is your best choice. We provide a packaged book image, simply issue the command: @@ -247,24 +96,37 @@ Then, you would back and paste the address into the local browser: That's all. Enjoy your journey! +.. _docker_run_gpu: -Documentation -------------- +Train with Docker with GPU +------------------------------ -Paddle Docker images include an HTML version of C++ source code -generated using `woboq code browser -`_. This makes it easy -for users to browse and understand the C++ source code. +We recommend using +`nvidia-docker `_ +to run GPU training jobs. Please ensure you have latest +GPU driver installed before move on. -As long as we give the Paddle Docker container a name, we can run an -additional Nginx Docker container to serve the volume from the Paddle -container: +.. code-block:: bash + + nvidia-docker run -it -v $PWD:/work paddledev/paddle:latest-gpu /bin/bash + +**NOTE: If you don't have nvidia-docker installed, try the following method to mount CUDA libs and devices into the container.** .. code-block:: bash - docker run -d --name paddle-cpu-doc paddle: - docker run -d --volumes-from paddle-cpu-doc -p 8088:80 nginx + export CUDA_SO="$(\ls /usr/lib64/libcuda* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}')" + export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}') + docker run ${CUDA_SO} ${DEVICES} -it paddledev/paddle:latest-gpu + +About AVX: +AVX is a kind of CPU instruction can accelerate PaddlePaddle's calculations. +The latest PaddlePaddle Docker image turns AVX on by default, so, if your +computer doesn't support AVX, you'll probably need to +`build <./build_from_source_en.rst>`_ with :code:`WITH_AVX=OFF`. -Then we can direct our Web browser to the HTML version of source code -at http://localhost:8088/paddle/ +The following command will tell you whether your computer supports AVX. + + .. code-block:: bash + + if cat /proc/cpuinfo | grep -i avx; then echo Yes; else echo No; fi diff --git a/doc/getstarted/build_and_install/index_cn.rst b/doc/getstarted/build_and_install/index_cn.rst index dd9923697a..e68d677412 100644 --- a/doc/getstarted/build_and_install/index_cn.rst +++ b/doc/getstarted/build_and_install/index_cn.rst @@ -1,17 +1,36 @@ 安装与编译 ========== +.. _quick_install: + +快速安装 +++++++++ + +PaddlePaddle支持使用pip快速安装,目前支持CentOS 6以上, Ubuntu 14.04以及MacOS 10.12,并安装有Python2.7。 +执行下面的命令完成快速安装: + + .. code-block:: bash + + pip install paddlepaddle + +如果需要安装支持GPU的版本,需要执行: + + .. code-block:: bash + + pip install paddlepaddle-gpu + .. _install_steps: 安装流程 ++++++++ -PaddlePaddle提供Docker镜像来部署环境。 +PaddlePaddle提供pip和Docker的安装方式: .. toctree:: :maxdepth: 1 - - docker_install_cn.rst + + pip_install_cn.rst + docker_install_cn.rst 编译流程 @@ -19,9 +38,9 @@ PaddlePaddle提供Docker镜像来部署环境。 .. warning:: - 编译流程主要推荐高级用户查看,普通用户请走安装流程。 + 建议直接使用上述安装流程,方便快速安装。只有在遇到需要独立定制的二进制时才需要编译。 .. toctree:: :maxdepth: 1 - cmake/build_from_source_cn.rst + build_from_source_cn.rst diff --git a/doc/getstarted/build_and_install/index_en.rst b/doc/getstarted/build_and_install/index_en.rst index 8a53588e04..bf8e01a35c 100644 --- a/doc/getstarted/build_and_install/index_en.rst +++ b/doc/getstarted/build_and_install/index_en.rst @@ -1,20 +1,46 @@ Install and Build ================= -Install PaddlePaddle +.. _quick_install: + +Quick Install ---------------------- -.. toctree:: - :maxdepth: 1 +You can use pip to install PaddlePaddle using a single command, supports +CentOS 6 above, Ubuntu 14.04 above or MacOS 10.12, with Python 2.7 installed. +Simply run the following command to install: + + .. code-block:: bash + + pip install paddlepaddle + +If you need to install GPU version, run: + + .. code-block:: bash + + pip install paddlepaddle-gpu + + +.. _install_steps: + +Install Steps +++++++++ + +You can choose either pip or Docker to complete your install: + +.. toctree:: + :maxdepth: 1 + + pip_install_en.rst + docker_install_en.rst - docker_install_en.rst Build from Source ----------------- .. warning:: - Please use :code:`docker` image to install paddle. The building guide is used for hacking or contributing PaddlePaddle source code. + We recommend to directly install via above installation steps, you'll only need to build PaddlePaddle from source when you need a modifed binary. .. toctree:: :maxdepth: 1 diff --git a/doc/getstarted/build_and_install/pip_install_cn.rst b/doc/getstarted/build_and_install/pip_install_cn.rst new file mode 100644 index 0000000000..e4bba7b21a --- /dev/null +++ b/doc/getstarted/build_and_install/pip_install_cn.rst @@ -0,0 +1,77 @@ +使用pip安装PaddlePaddle +================================ + +PaddlePaddle可以使用常用的Python包管理工具 +`pip `_ +完成安装,并可以在大多数主流的Linux操作系统以及MacOS上执行。 + +.. _pip_install: + +使用pip安装 +------------------------------ + + +执行下面的命令即可在当前机器上安装PaddlePaddle的运行时环境,并自动下载安装依赖软件。 + + .. code-block:: bash + + pip install paddlepaddle + + +如果需要安装支持GPU的版本,需要执行: + + .. code-block:: bash + + pip install paddlepaddle-gpu + +如果需要获取并安装最新的(开发分支)PaddlePaddle,可以从我们的CI系统中下载最新的whl安装包并安装,在下面的链接中,使用guest登陆,然后点击Artifact标签,可以找到最新的whl安装包: + +- `CPU版本 `_ + +- `GPU CUDA-7.5 CUDNN-5版本 `_ + +- `GPU CUDA-8.0 CUDNN-5版本 `_ + +- `GPU CUDA-8.0 CUDNN-7版本 `_ + +.. _pip_dependency: + +运行环境依赖 +------------------------------ + +PaddlePaddle安装包由于不仅仅包含.py程序,而且包含了C++编写的部分,所以我们确保发布的二进制包可以支持主流的Linux操作系统,比如CentOS 6以上,Ubuntu 14.04以上,MacOS 10.12以上。 + +PaddlePaddle发布的安装包会尽量对齐 `manylinux1 `_ 标准,通常使用CentOS 5作为编译环境。但由于CUDA库通常需要CentOS 6以上,而且CentOS 5即将停止维护,所以我们默认使用CentOS 6作为标准编译环境。 + +.. csv-table:: PaddlePaddle环境依赖 + :header: "依赖", "版本", "说明" + :widths: 10, 15, 30 + + "操作系统", "Linux, MacOS", "CentOS 6以上,Ubuntu 14.04以上,MacOS 10.12以上" + "Python", "2.7.x", "暂时不支持Python3" + "libc.so", "GLIBC_2.7", "glibc至少包含GLIBC_2.7以上的符号" + "libstdc++.so", "GLIBCXX_3.4.11, CXXABI_1.3.3", "至少包含GLIBCXX_3.4.11, CXXABI_1.3.3以上的符号" + "libgcc_s.so", "GCC_3.3", "至少包含GCC_3.3以上的符号" + +.. _pip_faq: + +安装常见问题和解决方法 +------------------------------ + +- paddlepaddle*.whl is not a supported wheel on this platform. + + 出现这个问题的主要原因是,没有找到和当前系统匹配的paddlepaddle安装包。请检查Python版本是否为2.7系列。另外最新的pip官方源中的安装包默认是manylinux1标准,需要使用最新的pip (>9.0.0) 才可以安装。可以使用下面的命令更新您的pip: + + .. code-block:: bash + + pip install --upgrade pip + + 如果仍然存在问题,可以执行: + + .. code-block:: bash + + python -c "import pip; print(pip.pep425tags.get_supported())" + + 获取当前系统支持的安装包格式,并检查和需安装的包是否匹配。pypi安装包可以在 `这个 `_ 链接中找到。 + + 如果系统支持的是 linux_x86_64 而安装包是 manylinux1_x86_64 ,需要升级pip版本到最新; 如果系统支持 manylinux1_x86_64 而安装包(本地)是 linux_x86_64 ,可以重命名这个whl包为 manylinux1_x86_64 再安装。 \ No newline at end of file diff --git a/doc/getstarted/build_and_install/pip_install_en.rst b/doc/getstarted/build_and_install/pip_install_en.rst new file mode 100644 index 0000000000..b9fa6dd9ed --- /dev/null +++ b/doc/getstarted/build_and_install/pip_install_en.rst @@ -0,0 +1,96 @@ +Install PaddlePaddle Using pip +================================ + +You can use current widely used Python package management +tool `pip `_ +to install PaddlePaddle. This method can be used in +most of current Linux systems or MacOS. + +.. _pip_install: + +Install Using pip +------------------------------ + +Run the following command to install PaddlePaddle on the current +machine, it will also download requirements. + + .. code-block:: bash + + pip install paddlepaddle + + +If you wish to install GPU version, just run: + + .. code-block:: bash + + pip install paddlepaddle-gpu + +If you wish to install the latest develop branch PaddlePaddle, +you can download the latest whl package from our CI system. Access +the below links, log in as guest, then click at the "Artifact" +tab, you'll find the download link of whl packages. + +- `CPU Only Version `_ + +- `GPU CUDA-7.5 CUDNN-5 Version `_ + +- `GPU CUDA-8.0 CUDNN-5 Version `_ + +- `GPU CUDA-8.0 CUDNN-7 Version `_ + +.. _pip_dependency: + +Runtime Dependency +------------------------------ + +PaddlePaddle installation packages (whl) does not only contain .py files, +but also binaries built from C++ code, we ensure that PaddlePaddle can +run on current mainline Linux distributions, like CentOS 6, Ubuntu 14.04 +and MacOS 10.12. + +PaddlePaddle whl packages are trying to satisfy +`manylinux1 `_ +standard, which uses CentOS 5 as default build environment. But CUDA libraries +seems only run on CentOS 6 at least, also, CentOS 5 is about to end its lifetime, +so we use CentOS 6 as default build environment. + +.. csv-table:: PaddlePaddle Runtime Deps + :header: "Dependency", "version", "description" + :widths: 10, 15, 30 + + "OS", "Linux, MacOS", "CentOS 6 or later,Ubuntu 14.04 or later,MacOS 10.12 or later" + "Python", "2.7.x", "Currently Python3 is not supported" + "libc.so", "GLIBC_2.7", "glibc at least include GLIBC_2.7 symbols" + "libstdc++.so", "GLIBCXX_3.4.11, CXXABI_1.3.3", "At least include GLIBCXX_3.4.11, CXXABI_1.3.3 symbols" + "libgcc_s.so", "GCC_3.3", "At least include GCC_3.3 symbols" + +.. _pip_faq: + +FAQ +------------------------------ + +- paddlepaddle*.whl is not a supported wheel on this platform. + + The main cause of this issue is that your current platform is + not supported. Please check that you are using Python 2.7 series. + Besides, pypi only supports manylinux1 standard, you'll need to + upgrade your pip to >9.0.0. Then run the below command: + + .. code-block:: bash + + pip install --upgrade pip + + If the problem still exists, run the following command: + + .. code-block:: bash + + python -c "import pip; print(pip.pep425tags.get_supported())" + + Then you'll get supported package suffixes, then check if it matches + the file name of the whl package. You can find default whl package at + `here `_ + + If your system supports linux_x86_64 but the whl package is manylinux1_x86_64, + you'll need to update pip to the latest version; If your system supports + manylinux1_x86_64 but the whl package is linux_x86_64 you can rename the + file to manylinux1_x86_64 suffix and then install. From 2e46c35afc0a0ecd0fab9d5470d1ab10bab14cf5 Mon Sep 17 00:00:00 2001 From: typhoonzero Date: Wed, 22 Nov 2017 22:16:38 +0800 Subject: [PATCH 02/17] follow comments --- doc/getstarted/basic_usage/index_cn.rst | 108 ------------------ doc/getstarted/basic_usage/index_en.rst | 101 ---------------- doc/getstarted/basic_usage/parameters.png | Bin 44469 -> 0 bytes .../build_from_source_cn.rst | 71 ++++++------ .../build_from_source_en.rst | 43 +++---- .../build_and_install/docker_install_cn.rst | 44 ++++--- .../build_and_install/docker_install_en.rst | 40 ++++--- doc/getstarted/build_and_install/index_cn.rst | 23 +--- doc/getstarted/build_and_install/index_en.rst | 25 +--- .../build_and_install/pip_install_cn.rst | 21 ++-- .../build_and_install/pip_install_en.rst | 16 +-- doc/getstarted/index_cn.rst | 59 +++++++++- doc/getstarted/index_en.rst | 59 +++++++++- 13 files changed, 250 insertions(+), 360 deletions(-) delete mode 100644 doc/getstarted/basic_usage/index_cn.rst delete mode 100644 doc/getstarted/basic_usage/index_en.rst delete mode 100644 doc/getstarted/basic_usage/parameters.png diff --git a/doc/getstarted/basic_usage/index_cn.rst b/doc/getstarted/basic_usage/index_cn.rst deleted file mode 100644 index b473944fc7..0000000000 --- a/doc/getstarted/basic_usage/index_cn.rst +++ /dev/null @@ -1,108 +0,0 @@ -经典的线性回归任务 -================== - -PaddlePaddle是源于百度的一个深度学习平台。这份简短的介绍将向你展示如何利用PaddlePaddle来解决一个经典的线性回归问题。 - -任务简介 --------- - -我们展示如何用PaddlePaddle解决 `单变量的线性回归 `_ 问题。线性回归的输入是一批点 `(x, y)` ,其中 `y = wx + b + ε`, 而 ε 是一个符合高斯分布的随机变量。线性回归的输出是从这批点估计出来的参数 `w` 和 `b` 。 - -一个例子是房产估值。我们假设房产的价格(y)是其大小(x)的一个线性函数,那么我们可以通过收集市场上房子的大小和价格,用来估计线性函数的参数w 和 b。 - -准备数据 ------------ - -假设变量 `x` 和 `y` 的真实关系为: `y = 2x + 0.3 + ε`,这里展示如何使用观测数据来拟合这一线性关系。首先,Python代码将随机产生2000个观测点,作为线性回归的输入。下面脚本符合PaddlePaddle期待的读取数据的Python程序的模式。 - -.. code-block:: python - - # dataprovider.py - from paddle.trainer.PyDataProvider2 import * - import random - - # 定义输入数据的类型: 2个浮点数 - @provider(input_types=[dense_vector(1), dense_vector(1)],use_seq=False) - def process(settings, input_file): - for i in xrange(2000): - x = random.random() - yield [x], [2*x+0.3] - -训练模型 ------------ - -为了还原 `y = 2x + 0.3`,我们先从一条随机的直线 `y' = wx + b` 开始,然后利用观测数据调整 `w` 和 `b` 使得 `y'` 和 `y` 的差距不断减小,最终趋于接近。这个过程就是模型的训练过程,而 `w` 和 `b` 就是模型的参数,即我们的训练目标。 - -在PaddlePaddle里,该模型的网络配置如下。 - -.. code-block:: python - - # trainer_config.py - from paddle.trainer_config_helpers import * - - # 1. 定义数据来源,调用上面的process函数获得观测数据 - data_file = 'empty.list' - with open(data_file, 'w') as f: f.writelines(' ') - define_py_data_sources2(train_list=data_file, test_list=None, - module='dataprovider', obj='process',args={}) - - # 2. 学习算法。控制如何改变模型参数 w 和 b - settings(batch_size=12, learning_rate=1e-3, learning_method=MomentumOptimizer()) - - # 3. 神经网络配置 - x = data_layer(name='x', size=1) - y = data_layer(name='y', size=1) - # 线性计算网络层: ȳ = wx + b - ȳ = fc_layer(input=x, param_attr=ParamAttr(name='w'), size=1, act=LinearActivation(), bias_attr=ParamAttr(name='b')) - # 计算误差函数,即 ȳ 和真实 y 之间的距离 - cost = square_error_cost(input= ȳ, label=y) - outputs(cost) - - -这段简短的配置展示了PaddlePaddle的基本用法: - -- 第一部分定义了数据输入。一般情况下,PaddlePaddle先从一个文件列表里获得数据文件地址,然后交给用户自定义的函数(例如上面的 `process`函数)进行读入和预处理从而得到真实输入。本文中由于输入数据是随机生成的不需要读输入文件,所以放一个空列表(`empty.list`)即可。 - -- 第二部分主要是选择学习算法,它定义了模型参数改变的规则。PaddlePaddle提供了很多优秀的学习算法,这里使用一个基于momentum的随机梯度下降(SGD)算法,该算法每批量(batch)读取12个采样数据进行随机梯度计算来更新更新。 - -- 最后一部分是神经网络的配置。由于PaddlePaddle已经实现了丰富的网络层,所以很多时候你需要做的只是定义正确的网络层并把它们连接起来。这里使用了三种网络单元: - - - **数据层**:数据层 `data_layer` 是神经网络的入口,它读入数据并将它们传输到接下来的网络层。这里数据层有两个,分别对应于变量 `x` 和 `y`。 - - **全连接层**:全连接层 `fc_layer` 是基础的计算单元,这里利用它建模变量之间的线性关系。计算单元是神经网络的核心,PaddlePaddle支持大量的计算单元和任意深度的网络连接,从而可以拟合任意的函数来学习复杂的数据关系。 - - **回归误差代价层**:回归误差代价层 `square_error_cost` 是众多误差代价函数层的一种,它们在训练过程作为网络的出口,用来计算模型的误差,是模型参数优化的目标函数。 - -定义了网络结构并保存为 `trainer_config.py` 之后,运行以下训练命令: - -.. code-block:: bash - - paddle train --config=trainer_config.py --save_dir=./output --num_passes=30 - -PaddlePaddle将在观测数据集上迭代训练30轮,并将每轮的模型结果存放在 `./output` 路径下。从输出日志可以看到,随着轮数增加误差代价函数的输出在不断的减小,这意味着模型在训练数据上不断的改进,直到逼近真实解:` y = 2x + 0.3 ` - -模型检验 ------------ - -训练完成后,我们希望能够检验模型的好坏。一种常用的做法是用学习的模型对另外一组测试数据进行预测,评价预测的效果。在这个例子中,由于已经知道了真实答案,我们可以直接观察模型的参数是否符合预期来进行检验。 - -PaddlePaddle将每个模型参数作为一个numpy数组单独存为一个文件,所以可以利用如下方法读取模型的参数。 - -.. code-block:: python - - import numpy as np - import os - - def load(file_name): - with open(file_name, 'rb') as f: - f.read(16) # skip header for float type. - return np.fromfile(f, dtype=np.float32) - - print 'w=%.6f, b=%.6f' % (load('output/pass-00029/w'), load('output/pass-00029/b')) - # w=1.999743, b=0.300137 - -.. image:: ./parameters.png - :align: center - :scale: 80 % - -从图中可以看到,虽然 `w` 和 `b` 都使用随机值初始化,但在起初的几轮训练中它们都在快速逼近真实值,并且后续仍在不断改进,使得最终得到的模型几乎与真实模型一致。 - -这样,我们用PaddlePaddle解决了单变量线性回归问题, 包括数据输入、模型训练和最后的结果验证。 diff --git a/doc/getstarted/basic_usage/index_en.rst b/doc/getstarted/basic_usage/index_en.rst deleted file mode 100644 index 2cc438ebbe..0000000000 --- a/doc/getstarted/basic_usage/index_en.rst +++ /dev/null @@ -1,101 +0,0 @@ -Simple Linear Regression -======================== - -PaddlePaddle is a deep learning platform open-sourced by Baidu. With PaddlePaddle, you can easily train a classic neural network within a couple lines of configuration, or you can build sophisticated models that provide state-of-the-art performance on difficult learning tasks like sentiment analysis, machine translation, image caption and so on. - -Problem Background ------------------- - -Now, to give you a hint of what using PaddlePaddle looks like, let's start with a fundamental learning problem - `simple linear regression `_: you have observed a set of two-dimensional data points of ``X`` and ``Y``, where ``X`` is an explanatory variable and ``Y`` is corresponding dependent variable, and you want to recover the underlying correlation between ``X`` and ``Y``. Linear regression can be used in many practical scenarios. For example, ``X`` can be a variable about house size, and ``Y`` a variable about house price. You can build a model that captures relationship between them by observing real estate markets. - -Prepare the Data ------------------ - -Suppose the true relationship can be characterized as ``Y = 2X + 0.3``, let's see how to recover this pattern only from observed data. Here is a piece of python code that feeds synthetic data to PaddlePaddle. The code is pretty self-explanatory, the only extra thing you need to add for PaddlePaddle is a definition of input data types. - - .. code-block:: python - - # dataprovider.py - from paddle.trainer.PyDataProvider2 import * - import random - - # define data types of input: 2 real numbers - @provider(input_types=[dense_vector(1), dense_vector(1)],use_seq=False) - def process(settings, input_file): - for i in xrange(2000): - x = random.random() - yield [x], [2*x+0.3] - -Train a NeuralNetwork ----------------------- - -To recover this relationship between ``X`` and ``Y``, we use a neural network with one layer of linear activation units and a square error cost layer. Don't worry if you are not familiar with these terminologies, it's just saying that we are starting from a random line ``Y' = wX + b`` , then we gradually adapt ``w`` and ``b`` to minimize the difference between ``Y'`` and ``Y``. Here is what it looks like in PaddlePaddle: - - .. code-block:: python - - # trainer_config.py - from paddle.trainer_config_helpers import * - - # 1. read data. Suppose you saved above python code as dataprovider.py - data_file = 'empty.list' - with open(data_file, 'w') as f: f.writelines(' ') - define_py_data_sources2(train_list=data_file, test_list=None, - module='dataprovider', obj='process',args={}) - - # 2. learning algorithm - settings(batch_size=12, learning_rate=1e-3, learning_method=MomentumOptimizer()) - - # 3. Network configuration - x = data_layer(name='x', size=1) - y = data_layer(name='y', size=1) - y_predict = fc_layer(input=x, param_attr=ParamAttr(name='w'), size=1, act=LinearActivation(), bias_attr=ParamAttr(name='b')) - cost = square_error_cost(input=y_predict, label=y) - outputs(cost) - -Some of the most fundamental usages of PaddlePaddle are demonstrated: - -- The first part shows how to feed data into PaddlePaddle. In general cases, PaddlePaddle reads raw data from a list of files, and then do some user-defined process to get real input. In this case, we only need to create a placeholder file since we are generating synthetic data on the fly. - -- The second part describes learning algorithm. It defines in what ways adjustments are made to model parameters. PaddlePaddle provides a rich set of optimizers, but a simple momentum based optimizer will suffice here, and it processes 12 data points each time. - -- Finally, the network configuration. It usually is as simple as "stacking" layers. Three kinds of layers are used in this configuration: - - **Data Layer**: a network always starts with one or more data layers. They provide input data to the rest of the network. In this problem, two data layers are used respectively for ``X`` and ``Y``. - - **FC Layer**: FC layer is short for Fully Connected Layer, which connects all the input units to current layer and does the actual computation specified as activation function. Computation layers like this are the fundamental building blocks of a deeper model. - - **Cost Layer**: in training phase, cost layers are usually the last layers of the network. They measure the performance of current model, and provide guidence to adjust parameters. - -Now that everything is ready, you can train the network with a simple command line call: - - .. code-block:: bash - - paddle train --config=trainer_config.py --save_dir=./output --num_passes=30 - - -This means that PaddlePaddle will train this network on the synthectic dataset for 30 passes, and save all the models under path ``./output``. You will see from the messages printed out during training phase that the model cost is decreasing as time goes by, which indicates we are getting a closer guess. - - -Evaluate the Model -------------------- - -Usually, a different dataset that left out during training phase should be used to evalute the models. However, we are lucky enough to know the real answer: ``w=2, b=0.3``, thus a better option is to check out model parameters directly. - -In PaddlePaddle, training is just to get a collection of model parameters, which are ``w`` and ``b`` in this case. Each parameter is saved in an individual file in the popular ``numpy`` array format. Here is the code that reads parameters from last pass. - - .. code-block:: python - - import numpy as np - import os - - def load(file_name): - with open(file_name, 'rb') as f: - f.read(16) # skip header for float type. - return np.fromfile(f, dtype=np.float32) - - print 'w=%.6f, b=%.6f' % (load('output/pass-00029/w'), load('output/pass-00029/b')) - # w=1.999743, b=0.300137 - - .. image:: parameters.png - :align: center - -Although starts from a random guess, you can see that value of ``w`` changes quickly towards 2 and ``b`` changes quickly towards 0.3. In the end, the predicted line is almost identical with real answer. - -There, you have recovered the underlying pattern between ``X`` and ``Y`` only from observed data. diff --git a/doc/getstarted/basic_usage/parameters.png b/doc/getstarted/basic_usage/parameters.png deleted file mode 100644 index 2ec67480951e21f0400bce1c34b3108dcd65c18c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44469 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 j{~Ea`=`_ 以及GCC, G++作为编译 git clone https://github.com/PaddlePaddle/Paddle.git cd Paddle - # 如果使用Docker编译环境,执行下面的命令 - docker run -it -v $PWD:/paddle -e "WITH_GPU=ON" -e "WITH_TESTING=OFF" paddlepaddle/paddle_manylinux_devel:cuda8.0_cudnn5 bash -x paddle/scripts/docker/build.sh + # 如果使用Docker编译环境,执行下面的命令编译CPU-Only的二进制 + docker run -it -v $PWD:/paddle -e "WITH_GPU=OFF" -e "WITH_TESTING=OFF" paddlepaddle/paddle_manylinux_devel:cuda8.0_cudnn5 bash -x paddle/scripts/docker/build.sh # 如果不使用Docker编译环境,执行下面的命令 mkdir build cd build - cmake -DWITH_GPU=ON -DWITH_TESTING=OFF .. + cmake -DWITH_GPU=OFF -DWITH_TESTING=OFF .. make @@ -56,64 +56,57 @@ PaddlePaddle编译需要使用到下面的依赖(包含但不限于),其 编译选项 ---------------- -PaddlePaddle的编译选项,包括生成CPU/GPU二进制文件、链接何种BLAS库等。用户可在调用cmake的时候设置它们,详细的cmake使用方法可以参考 `官方文档 `_ 。 +PaddlePaddle的编译选项,包括生成CPU/GPU二进制文件、链接何种BLAS库等。 +用户可在调用cmake的时候设置它们,详细的cmake使用方法可以参考 +`官方文档 `_ 。 -.. _build_options_bool: - -Bool型的编译选项 ----------------- - -用户可在cmake的命令行中,通过使用 ``-D`` 命令设置该类编译选项,例如 +在cmake的命令行中,通过使用 ``-D`` 命令设置该类编译选项,例如: .. code-block:: bash cmake .. -DWITH_GPU=OFF -.. csv-table:: Bool型的编译选项 +.. csv-table:: 编译选项说明 :header: "选项", "说明", "默认值" :widths: 1, 7, 2 - "WITH_GPU", "是否支持GPU。", "是" - "WITH_DOUBLE", "是否使用双精度浮点数。", "否" - "WITH_DSO", "是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库。", "是" - "WITH_AVX", "是否编译含有AVX指令集的PaddlePaddle二进制文件", "是" - "WITH_PYTHON", "是否内嵌PYTHON解释器。", "是" - "WITH_STYLE_CHECK", "是否编译时进行代码风格检查", "是" - "WITH_TESTING", "是否开启单元测试", "是" - "WITH_DOC", "是否编译中英文文档", "否" - "WITH_SWIG_PY", "是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练", "自动" - "WITH_GOLANG", "是否编译go语言的可容错parameter server", "是" - -.. _build_options_blas: - -BLAS/CUDA/Cudnn的编译选项 --------------------------- + "WITH_GPU", "是否支持GPU", "ON" + "WITH_C_API", "是否仅编译CAPI", "OFF" + "WITH_DOUBLE", "是否使用双精度浮点数", "OFF" + "WITH_DSO", "是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库。", "ON" + "WITH_AVX", "是否编译含有AVX指令集的PaddlePaddle二进制文件", "ON" + "WITH_PYTHON", "是否内嵌PYTHON解释器", "ON" + "WITH_STYLE_CHECK", "是否编译时进行代码风格检查", "ON" + "WITH_TESTING", "是否开启单元测试", "ON" + "WITH_DOC", "是否编译中英文文档", "OFF" + "WITH_SWIG_PY", "是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练", "Auto" + "WITH_GOLANG", "是否编译go语言的可容错parameter server", "ON" + "WITH_MKL", "是否使用MKL数学库,如果为否则是用OpenBLAS", "ON" + BLAS +++++ -PaddlePaddle支持以下任意一种BLAS库:`MKL `_ ,`ATLAS `_ ,`OpenBlAS `_ 和 `REFERENCE BLAS `_ 。 +PaddlePaddle支持 `MKL `_ 和 +`OpenBlAS `_ 两种BLAS库。默认使用MKL。如果使用MKL并且机器含有AVX2指令集, +还会下载MKL-DNN数学库,详细参考 `这里 `_ 。 -.. csv-table:: BLAS路径相关的编译选项 - :header: "编译选项", "描述", "注意" - :widths: 1, 2, 7 - - "MKL_ROOT", "${MKL_ROOT}/include下需要包含mkl.h,${MKL_ROOT}/lib目录下需要包含mkl_core,mkl_sequential和mkl_intel_lp64三个库。" - "ATLAS_ROOT", "${ATLAS_ROOT}/include下需要包含cblas.h,${ATLAS_ROOT}/lib下需要包含cblas和atlas两个库。" - "OPENBLAS_ROOT", "${OPENBLAS_ROOT}/include下需要包含cblas.h,${OPENBLAS_ROOT}/lib下需要包含openblas库。" - "REFERENCE_CBLAS_ROOT", "${REFERENCE_CBLAS_ROOT}/include下需要包含cblas.h,${REFERENCE_CBLAS_ROOT}/lib下需要包含cblas库。" +如果关闭MKL,则会使用OpenBLAS作为BLAS库。 -CUDA/Cudnn +CUDA/cuDNN +++++++++++ -PaddlePaddle可以使用cudnn v2之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的cudnn是同一个版本。 我们推荐使用最新版本的cudnn v5.1。 +PaddlePaddle在编译时/运行时会自动找到系统中安装的CUDA和cuDNN库进行编译和执行。 + +PaddlePaddle可以使用cuDNN v5.1之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的cuDNN是同一个版本。 +我们推荐使用最新版本的cuDNN。 编译选项的设置 ++++++++++++++ -PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/Cudnn库。cmake编译时,首先在系统路径(/usr/lib\:/usr/local/lib)中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用 ``-D`` 命令可以设置,例如 +PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。cmake编译时,首先在系统路径(/usr/lib\:/usr/local/lib)中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用 ``-D`` 命令可以设置,例如 .. code-block:: bash - cmake .. -DMKL_ROOT=/opt/mkl/ -DCUDNN_ROOT=/opt/cudnnv5 + cmake .. -DWITH_GPU=ON -DWITH_TESTING=OFF -DCUDNN_ROOT=/opt/cudnnv5 注意:这几个编译选项的设置,只在第一次cmake的时候有效。如果之后想要重新设置,推荐清理整个编译目录(``rm -rf``)后,再指定。 diff --git a/doc/getstarted/build_and_install/build_from_source_en.rst b/doc/getstarted/build_and_install/build_from_source_en.rst index 80dfb8c468..02d5ab3bb8 100644 --- a/doc/getstarted/build_and_install/build_from_source_en.rst +++ b/doc/getstarted/build_and_install/build_from_source_en.rst @@ -16,12 +16,12 @@ Then run: git clone https://github.com/PaddlePaddle/Paddle.git cd Paddle - # run the following command if you are using docker - docker run -it -v $PWD:/paddle -e "WITH_GPU=ON" -e "WITH_TESTING=OFF" paddlepaddle/paddle_manylinux_devel:cuda8.0_cudnn5 bash -x paddle/scripts/docker/build.sh + # run the following command to build CPU-Only binaries if you are using docker + docker run -it -v $PWD:/paddle -e "WITH_GPU=OFF" -e "WITH_TESTING=OFF" paddlepaddle/paddle_manylinux_devel:cuda8.0_cudnn5 bash -x paddle/scripts/docker/build.sh # else run these commands mkdir build cd build - cmake -DWITH_GPU=ON -DWITH_TESTING=OFF .. + cmake -DWITH_GPU=OFF -DWITH_TESTING=OFF .. make When the compile finishes, you can get the output whl package under @@ -78,6 +78,7 @@ You can add :code:`-D` argument to pass such options, like: :widths: 1, 7, 2 "WITH_GPU", "Build with GPU support", "ON" + "WITH_C_API", "Build only CAPI", "OFF" "WITH_DOUBLE", "Build with double precision", "OFF" "WITH_DSO", "Dynamically load CUDA libraries", "ON" "WITH_AVX", "Build with AVX support", "ON" @@ -87,34 +88,26 @@ You can add :code:`-D` argument to pass such options, like: "WITH_DOC", "Build documentaions", "OFF" "WITH_SWIG_PY", "Build Python SWIG interface for V2 API", "Auto" "WITH_GOLANG", "Build fault-tolerant parameter server written in go", "ON" + "WITH_MKL", "Use MKL as BLAS library, else use OpenBLAS", "ON" -.. _build_options_blas: -BLAS/CUDA/Cudnn Options --------------------------- BLAS +++++ -You can build PaddlePaddle with any of the below BLAS libraries: -`MKL `_ , -`ATLAS `_ , -`OpenBlAS `_ and -`REFERENCE BLAS `_ . - -.. csv-table:: BLAS Options - :header: "Option", "Description" - :widths: 1, 7 - - "MKL_ROOT", "${MKL_ROOT}/include must have mkl.h, ${MKL_ROOT}/lib must have mkl_core, mkl_sequential and mkl_intel_lp64 libs." - "ATLAS_ROOT", "${ATLAS_ROOT}/include must have cblas.h,${ATLAS_ROOT}/lib must have cblas and atlas libs" - "OPENBLAS_ROOT", "${OPENBLAS_ROOT}/include must have cblas.h,${OPENBLAS_ROOT}/lib must have OpenBlas libs." - "REFERENCE_CBLAS_ROOT", "${REFERENCE_CBLAS_ROOT}/include must have cblas.h,${REFERENCE_CBLAS_ROOT}/lib must have cblas lib." - -CUDA/Cudnn +PaddlePaddle supports `MKL `_ and +`OpenBlAS `_ as BLAS library。By default it uses MKL. +If you are using MKL and your machine supports AVX2, MKL-DNN will also be downloaded +and used, for more `details `_ . + +If you choose not to use MKL, then OpenBlAS will be used. + +CUDA/cuDNN +++++++++++ -PaddlePaddle can build with any version later than Cudnn v2, and we intend to -keep on with latest cudnn versions. Be sure to run with the same version of cudnn +PaddlePaddle will automatically find CUDA and cuDNN when compiling and running. + +PaddlePaddle can build with any version later than cuDNN v5.1, and we intend to +keep on with latest cuDNN versions. Be sure to run with the same version of cuDNN you built. Pass Compile Options @@ -127,7 +120,7 @@ passed to cmake, i.e. .. code-block:: bash - cmake .. -DMKL_ROOT=/opt/mkl/ -DCUDNN_ROOT=/opt/cudnnv5 + cmake .. -DWITH_GPU=ON -DWITH_TESTING=OFF -DCUDNN_ROOT=/opt/cudnnv5 **NOTE: These options only take effect when running cmake for the first time, you need to clean the cmake cache or clean the build directory if you want to change it.** diff --git a/doc/getstarted/build_and_install/docker_install_cn.rst b/doc/getstarted/build_and_install/docker_install_cn.rst index 03a8362793..c03352562e 100644 --- a/doc/getstarted/build_and_install/docker_install_cn.rst +++ b/doc/getstarted/build_and_install/docker_install_cn.rst @@ -30,29 +30,39 @@ 下载GPU版本的Docker镜像: .. code-block:: bash + docker pull paddlepaddle/paddle:latest-gpu docker pull docker.paddlepaddle.org/paddle:latest-gpu -下载指定版本的Docker镜像,可以从 - `DockerHub网站 `_ - 获取可选的tag,并执行下面的命令: +选择下载使用不同的BLAS库的Docker镜像: + + .. code-block:: bash + + # 默认是使用MKL的镜像 + docker pull paddlepaddle/paddle + # 使用OpenBLAS的镜像 + docker pull paddlepaddle/paddle:latest-openblas + +下载指定版本的Docker镜像,可以从 `DockerHub网站 `_ 获取可选的tag,并执行下面的命令: .. code-block:: bash + docker pull paddlepaddle/paddle:[tag] # 比如: docker pull docker.paddlepaddle.org/paddle:0.10.0-gpu - .. _docker_run: 在Docker中执行PaddlePaddle训练程序 ------------------------------ -假设您已经在当前目录编写了一个PaddlePaddle的程序 :code:`train.py`(可以参考 +假设您已经在当前目录(比如在/home/work)编写了一个PaddlePaddle的程序 :code:`train.py`(可以参考 `PaddlePaddleBook `_ 编写),就可以使用下面的命令开始执行训练: .. code-block:: bash + + cd /home/work docker run -it -v $PWD:/work paddlepaddle/paddle /work/train.py 上述命令中, :code:`-it` 参数说明容器已交互式运行; :code:`-v $PWD:/work` @@ -74,22 +84,22 @@ 使用Docker启动PaddlePaddle Book教程 ------------------------------ -使用Docker可以快速在本地启动一个包含了PaddlePaddle官方Book教程的Jupiter Notebook,可以通过网页浏览。 +使用Docker可以快速在本地启动一个包含了PaddlePaddle官方Book教程的Jupyter Notebook,可以通过网页浏览。 PaddlePaddle Book是为用户和开发者制作的一个交互式的Jupyter Notebook。 如果您想要更深入了解deep learning,PaddlePaddle Book一定是您最好的选择。 大家可以通过它阅读教程,或者制作和分享带有代码、公式、图表、文字的交互式文档。 我们提供可以直接运行PaddlePaddle Book的Docker镜像,直接运行: -.. code-block:: bash + .. code-block:: bash - docker run -p 8888:8888 paddlepaddle/book + docker run -p 8888:8888 paddlepaddle/book 然后在浏览器中输入以下网址: -.. code-block:: text + .. code-block:: text - http://localhost:8888/ + http://localhost:8888/ 就这么简单,享受您的旅程! @@ -102,19 +112,19 @@ PaddlePaddle Book是为用户和开发者制作的一个交互式的Jupyter Note `nvidia-docker `_ 来运行镜像。 请不要忘记提前在物理机上安装GPU最新驱动。 -.. code-block:: bash + .. code-block:: bash - nvidia-docker run -it -v $PWD:/work paddledev/paddle:latest-gpu /bin/bash + nvidia-docker run -it -v $PWD:/work paddledev/paddle:latest-gpu /bin/bash **注: 如果没有安装nvidia-docker,可以尝试以下的方法,将CUDA库和Linux设备挂载到Docker容器内:** -.. code-block:: bash + .. code-block:: bash - export CUDA_SO="$(\ls /usr/lib64/libcuda* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}')" - export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}') - docker run ${CUDA_SO} ${DEVICES} -it paddledev/paddle:latest-gpu + export CUDA_SO="$(\ls /usr/lib64/libcuda* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}')" + export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}') + docker run ${CUDA_SO} ${DEVICES} -it paddledev/paddle:latest-gpu -关于AVX: +**关于AVX:** AVX是一种CPU指令集,可以加速PaddlePaddle的计算。最新的PaddlePaddle Docker镜像默认 是开启AVX编译的,所以,如果您的电脑不支持AVX,需要单独 diff --git a/doc/getstarted/build_and_install/docker_install_en.rst b/doc/getstarted/build_and_install/docker_install_en.rst index 4ee55380f0..8cdb0031bd 100644 --- a/doc/getstarted/build_and_install/docker_install_en.rst +++ b/doc/getstarted/build_and_install/docker_install_en.rst @@ -31,14 +31,26 @@ For users in China, we provide a faster mirror: Download GPU version images: .. code-block:: bash + docker pull paddlepaddle/paddle:latest-gpu docker pull docker.paddlepaddle.org/paddle:latest-gpu +Choose between different BLAS version: + + .. code-block:: bash + + # image using MKL by default + docker pull paddlepaddle/paddle + # image using OpenBLAS + docker pull paddlepaddle/paddle:latest-openblas + + If you want to use legacy versions, choose a tag from `DockerHub `_ and run: .. code-block:: bash + docker pull paddlepaddle/paddle:[tag] # i.e. docker pull docker.paddlepaddle.org/paddle:0.10.0-gpu @@ -49,11 +61,13 @@ Launch your training program in Docker ------------------------------ Assume that you have already written a PaddlePaddle program -named :code:`train.py` (refer to +named :code:`train.py` under directory :code:`/home/work` (refer to `PaddlePaddleBook `_ for more samples), then run the following command: .. code-block:: bash + + cd /home/work docker run -it -v $PWD:/work paddlepaddle/paddle /work/train.py In the above command, :code:`-it` means run the container interactively; @@ -77,22 +91,22 @@ interactively: PaddlePaddle Book ------------------ -You can create a container serving PaddlePaddle Book using Jupiter Notebook in +You can create a container serving PaddlePaddle Book using Jupyter Notebook in one minute using Docker. PaddlePaddle Book is an interactive Jupyter Notebook for users and developers.If you want to dig deeper into deep learning, PaddlePaddle Book definitely is your best choice. We provide a packaged book image, simply issue the command: -.. code-block:: bash + .. code-block:: bash - docker run -p 8888:8888 paddlepaddle/book + docker run -p 8888:8888 paddlepaddle/book Then, you would back and paste the address into the local browser: -.. code-block:: text + .. code-block:: text - http://localhost:8888/ + http://localhost:8888/ That's all. Enjoy your journey! @@ -106,19 +120,19 @@ We recommend using to run GPU training jobs. Please ensure you have latest GPU driver installed before move on. -.. code-block:: bash + .. code-block:: bash - nvidia-docker run -it -v $PWD:/work paddledev/paddle:latest-gpu /bin/bash + nvidia-docker run -it -v $PWD:/work paddledev/paddle:latest-gpu /bin/bash **NOTE: If you don't have nvidia-docker installed, try the following method to mount CUDA libs and devices into the container.** -.. code-block:: bash + .. code-block:: bash - export CUDA_SO="$(\ls /usr/lib64/libcuda* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}')" - export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}') - docker run ${CUDA_SO} ${DEVICES} -it paddledev/paddle:latest-gpu + export CUDA_SO="$(\ls /usr/lib64/libcuda* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}')" + export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}') + docker run ${CUDA_SO} ${DEVICES} -it paddledev/paddle:latest-gpu -About AVX: +**About AVX:** AVX is a kind of CPU instruction can accelerate PaddlePaddle's calculations. The latest PaddlePaddle Docker image turns AVX on by default, so, if your diff --git a/doc/getstarted/build_and_install/index_cn.rst b/doc/getstarted/build_and_install/index_cn.rst index e68d677412..88c5142dde 100644 --- a/doc/getstarted/build_and_install/index_cn.rst +++ b/doc/getstarted/build_and_install/index_cn.rst @@ -1,24 +1,6 @@ 安装与编译 ========== -.. _quick_install: - -快速安装 -++++++++ - -PaddlePaddle支持使用pip快速安装,目前支持CentOS 6以上, Ubuntu 14.04以及MacOS 10.12,并安装有Python2.7。 -执行下面的命令完成快速安装: - - .. code-block:: bash - - pip install paddlepaddle - -如果需要安装支持GPU的版本,需要执行: - - .. code-block:: bash - - pip install paddlepaddle-gpu - .. _install_steps: 安装流程 @@ -44,3 +26,8 @@ PaddlePaddle提供pip和Docker的安装方式: :maxdepth: 1 build_from_source_cn.rst + +常见问题解答 +++++++++++ + +`常见问题解答 `_ diff --git a/doc/getstarted/build_and_install/index_en.rst b/doc/getstarted/build_and_install/index_en.rst index bf8e01a35c..c8b60d0357 100644 --- a/doc/getstarted/build_and_install/index_en.rst +++ b/doc/getstarted/build_and_install/index_en.rst @@ -1,26 +1,6 @@ Install and Build ================= -.. _quick_install: - -Quick Install ----------------------- - -You can use pip to install PaddlePaddle using a single command, supports -CentOS 6 above, Ubuntu 14.04 above or MacOS 10.12, with Python 2.7 installed. -Simply run the following command to install: - - .. code-block:: bash - - pip install paddlepaddle - -If you need to install GPU version, run: - - .. code-block:: bash - - pip install paddlepaddle-gpu - - .. _install_steps: Install Steps @@ -46,3 +26,8 @@ Build from Source :maxdepth: 1 build_from_source_en.md + +FAQ +++++++++++ + +`FAQ `_ diff --git a/doc/getstarted/build_and_install/pip_install_cn.rst b/doc/getstarted/build_and_install/pip_install_cn.rst index e4bba7b21a..88c3d89856 100644 --- a/doc/getstarted/build_and_install/pip_install_cn.rst +++ b/doc/getstarted/build_and_install/pip_install_cn.rst @@ -24,15 +24,18 @@ PaddlePaddle可以使用常用的Python包管理工具 pip install paddlepaddle-gpu -如果需要获取并安装最新的(开发分支)PaddlePaddle,可以从我们的CI系统中下载最新的whl安装包并安装,在下面的链接中,使用guest登陆,然后点击Artifact标签,可以找到最新的whl安装包: - -- `CPU版本 `_ - -- `GPU CUDA-7.5 CUDNN-5版本 `_ - -- `GPU CUDA-8.0 CUDNN-5版本 `_ - -- `GPU CUDA-8.0 CUDNN-7版本 `_ +如果需要获取并安装最新的(开发分支)PaddlePaddle,可以从我们的CI系统中下载最新的whl安装包和c-api开发包并安装, +您可以从下面的表格中找到需要的版本: + +.. csv-table:: 各个版本最新的whl包 + :header: "版本说明", "cp27-cp27mu", "cp27-cp27mu", "C-API" + :widths: 1, 3, 3, 3 + + "cpu_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" + "cpu_avx_openblas", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "-" + "cuda7.5_cudnn5_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" + "cuda8.0_cudnn5_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" + "cuda8.0_cudnn7_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" .. _pip_dependency: diff --git a/doc/getstarted/build_and_install/pip_install_en.rst b/doc/getstarted/build_and_install/pip_install_en.rst index b9fa6dd9ed..5d18defd52 100644 --- a/doc/getstarted/build_and_install/pip_install_en.rst +++ b/doc/getstarted/build_and_install/pip_install_en.rst @@ -30,13 +30,15 @@ you can download the latest whl package from our CI system. Access the below links, log in as guest, then click at the "Artifact" tab, you'll find the download link of whl packages. -- `CPU Only Version `_ - -- `GPU CUDA-7.5 CUDNN-5 Version `_ - -- `GPU CUDA-8.0 CUDNN-5 Version `_ - -- `GPU CUDA-8.0 CUDNN-7 Version `_ +.. csv-table:: whl package of each version + :header: "version", "cp27-cp27mu", "cp27-cp27mu", "C-API" + :widths: 1, 3, 3, 3 + + "cpu_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" + "cpu_avx_openblas", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "-" + "cuda7.5_cudnn5_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" + "cuda8.0_cudnn5_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" + "cuda8.0_cudnn7_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" .. _pip_dependency: diff --git a/doc/getstarted/index_cn.rst b/doc/getstarted/index_cn.rst index aa418c657a..660ad578af 100644 --- a/doc/getstarted/index_cn.rst +++ b/doc/getstarted/index_cn.rst @@ -1,10 +1,65 @@ 新手入门 ============ +.. _quick_install: + +快速安装 +++++++++ + +PaddlePaddle支持使用pip快速安装,目前支持CentOS 6以上, Ubuntu 14.04以及MacOS 10.12,并安装有Python2.7。 +执行下面的命令完成快速安装: + + .. code-block:: bash + + pip install paddlepaddle + +如果需要安装支持GPU的版本,需要执行: + + .. code-block:: bash + + pip install paddlepaddle-gpu + +更详细的安装和编译方法参考: + .. toctree:: :maxdepth: 1 build_and_install/index_cn.rst - concepts/use_concepts_cn.rst -- `深度学习入门课程 `_ +.. _quick_start: + +快速开始 +++++++++ + +下载 `房价模型文件 `_ + +创建一个 housing.py 并粘贴此Python代码 (请确保fit_a_line.tar 是在正确的路径上) + + .. code-block:: python + + import paddle.v2 as paddle + + # Initialize PaddlePaddle. + paddle.init(use_gpu=False, trainer_count=1) + + # Configure the neural network. + x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13)) + y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear()) + + with open('fit_a_line.tar', 'r') as f: + parameters = paddle.parameters.Parameters.from_tar(f) + + # Infer using provided test data. + probs = paddle.infer( + output_layer=y_predict, parameters=parameters, + input=[item for item in paddle.dataset.uci_housing.test()()]) + + for i in xrange(len(probs)): + print 'Predicted price: ${:,.2f}'.format(probs[i][0] * 1000) + +执行 :code:`python housing.py` 瞧! 它应该打印出预测住房数据的清单。 + +.. toctree:: + :maxdepth: 1 + + concepts/use_concepts_cn.rst diff --git a/doc/getstarted/index_en.rst b/doc/getstarted/index_en.rst index be3253e3d4..845506cea7 100644 --- a/doc/getstarted/index_en.rst +++ b/doc/getstarted/index_en.rst @@ -1,9 +1,66 @@ GET STARTED ============ +.. _quick_install: + +Quick Install +---------------------- + +You can use pip to install PaddlePaddle using a single command, supports +CentOS 6 above, Ubuntu 14.04 above or MacOS 10.12, with Python 2.7 installed. +Simply run the following command to install: + + .. code-block:: bash + + pip install paddlepaddle + +If you need to install GPU version, run: + + .. code-block:: bash + + pip install paddlepaddle-gpu + +For more details about installation and build: + .. toctree:: :maxdepth: 1 build_and_install/index_en.rst -- `Deep Learning 101 `_ + +.. _quick_start: + +Quick Start +++++++++ + +Download the `trained housing prices model `_ + +Now, create a new file called housing.py, and paste this Python +code (make sure to set the right path based on the location of fit_a_line.tar +on your computer): + + + .. code-block:: python + + import paddle.v2 as paddle + + # Initialize PaddlePaddle. + paddle.init(use_gpu=False, trainer_count=1) + + # Configure the neural network. + x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13)) + y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear()) + + with open('fit_a_line.tar', 'r') as f: + parameters = paddle.parameters.Parameters.from_tar(f) + + # Infer using provided test data. + probs = paddle.infer( + output_layer=y_predict, parameters=parameters, + input=[item for item in paddle.dataset.uci_housing.test()()]) + + for i in xrange(len(probs)): + print 'Predicted price: ${:,.2f}'.format(probs[i][0] * 1000) + +Run :code:`python housing.py` and voila! It should print out a list of predictions +for the test housing data. From 4c28d4092418b5d3fa1cb7d49ac9a57b3325c09d Mon Sep 17 00:00:00 2001 From: typhoonzero Date: Thu, 23 Nov 2017 10:02:30 +0800 Subject: [PATCH 03/17] fix link --- doc/getstarted/build_and_install/docker_install_cn.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getstarted/build_and_install/docker_install_cn.rst b/doc/getstarted/build_and_install/docker_install_cn.rst index c03352562e..1fb7025915 100644 --- a/doc/getstarted/build_and_install/docker_install_cn.rst +++ b/doc/getstarted/build_and_install/docker_install_cn.rst @@ -56,7 +56,7 @@ 在Docker中执行PaddlePaddle训练程序 ------------------------------ -假设您已经在当前目录(比如在/home/work)编写了一个PaddlePaddle的程序 :code:`train.py`(可以参考 +假设您已经在当前目录(比如在/home/work)编写了一个PaddlePaddle的程序 :code:`train.py` (可以参考 `PaddlePaddleBook `_ 编写),就可以使用下面的命令开始执行训练: From e4c8de9ef5be7ea866d8e6c831ba9cb86ddaac54 Mon Sep 17 00:00:00 2001 From: ranqiu Date: Fri, 24 Nov 2017 11:45:51 +0800 Subject: [PATCH 04/17] Update the annotations of layers.py --- .../paddle/trainer_config_helpers/layers.py | 110 ++++++++++-------- 1 file changed, 63 insertions(+), 47 deletions(-) diff --git a/python/paddle/trainer_config_helpers/layers.py b/python/paddle/trainer_config_helpers/layers.py index 8e127c9489..469e667e80 100644 --- a/python/paddle/trainer_config_helpers/layers.py +++ b/python/paddle/trainer_config_helpers/layers.py @@ -1900,9 +1900,12 @@ def repeat_layer(input, A layer for repeating the input for num_repeats times. If as_row_vector: + .. math:: y = [x_1,\cdots, x_n, \cdots, x_1, \cdots, x_n] + If not as_row_vector: + .. math:: y = [x_1,\cdots, x_1, \cdots, x_n, \cdots, x_n] @@ -1915,19 +1918,19 @@ def repeat_layer(input, :param input: The input of this layer. :type input: LayerOutput - :param num_repeats: Repeat the input so many times + :param num_repeats: The times of repeating the input. :type num_repeats: int :param name: The name of this layer. It is optional. - :param as_row_vector: True for treating input as row vector and repeating - in the column direction. This is equivalent to apply - concat_layer() with num_repeats same input. - False for treating input as column vector and repeating - in the row direction. + :type name: basestring + :param as_row_vector: Whether to treat the input as row vectors or not. If + the parameter is set to True, the repeating operation + will be performed in the column direction. Otherwise, + it will be performed in the row direction. :type as_row_vector: bool :param act: Activation type. IdentityActivation is the default activation. :type act: BaseActivation - :type name: basestring - :param layer_attr: extra layer attributes. + :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for + details. :type layer_attr: ExtraLayerAttribute. :return: LayerOutput object. :rtype: LayerOutput @@ -1974,13 +1977,14 @@ def seq_reshape_layer(input, :param input: The input of this layer. :type input: LayerOutput - :param reshape_size: the size of reshaped sequence. + :param reshape_size: The dimension of the reshaped sequence. :type reshape_size: int :param name: The name of this layer. It is optional. :type name: basestring :param act: Activation type. IdentityActivation is the default activation. :type act: BaseActivation - :param layer_attr: extra layer attributes. + :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for + details. :type layer_attr: ExtraLayerAttribute. :param bias_attr: The bias attribute. If the parameter is set to False or an object whose type is not ParameterAttribute, no bias is defined. If the @@ -2008,7 +2012,7 @@ def seq_reshape_layer(input, @layer_support() def interpolation_layer(input, weight, name=None, layer_attr=None): """ - This layer is for linear interpolation with two inputs, + This layer performs linear interpolation on two inputs, which is used in NEURAL TURING MACHINE. .. math:: @@ -2030,7 +2034,8 @@ def interpolation_layer(input, weight, name=None, layer_attr=None): :type weight: LayerOutput :param name: The name of this layer. It is optional. :type name: basestring - :param layer_attr: extra layer attributes. + :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for + details. :type layer_attr: ExtraLayerAttribute. :return: LayerOutput object. :rtype: LayerOutput @@ -2064,7 +2069,7 @@ def bilinear_interp_layer(input, name=None, layer_attr=None): """ - This layer is to implement bilinear interpolation on conv layer output. + This layer implements bilinear interpolation on convolutional layer's output. Please refer to Wikipedia: https://en.wikipedia.org/wiki/Bilinear_interpolation @@ -2074,18 +2079,19 @@ def bilinear_interp_layer(input, bilinear = bilinear_interp_layer(input=layer1, out_size_x=64, out_size_y=64) - :param input: A input layer. - :type input: LayerOutput. - :param out_size_x: bilinear interpolation output width. - :type out_size_x: int | None - :param out_size_y: bilinear interpolation output height. - :type out_size_y: int | None - :param name: The layer's name, which cna not be specified. - :type name: None | basestring - :param layer_attr: Extra Layer attribute. - :type layer_attr: ExtraLayerAttribute + :param input: The input of this layer. + :type input: LayerOutput. + :param out_size_x: The width of the output. + :type out_size_x: int + :param out_size_y: The height of the output. + :type out_size_y: int + :param name: The name of this layer. It is optional. + :type name: basestring + :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for + details. + :type layer_attr: ExtraLayerAttribute :return: LayerOutput object. - :rtype: LayerOutput + :rtype: LayerOutput """ assert input.layer_type == LayerType.CONV_LAYER assert isinstance(input.activation, LinearActivation) @@ -2120,8 +2126,8 @@ def power_layer(input, weight, name=None, layer_attr=None): .. math:: y = x^w - where :math:`x` is a input vector, :math:`w` is scalar weight, - and :math:`y` is a output vector. + where :math:`x` is an input vector, :math:`w` is a scalar exponent, + and :math:`y` is an output vector. The example usage is: @@ -2131,11 +2137,12 @@ def power_layer(input, weight, name=None, layer_attr=None): :param input: The input of this layer. :type input: LayerOutput - :param weight: Weight layer. + :param weight: The exponent of the power. :type weight: LayerOutput :param name: The name of this layer. It is optional. :type name: basestring - :param layer_attr: extra layer attributes. + :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for + details. :type layer_attr: ExtraLayerAttribute. :return: LayerOutput object. :rtype: LayerOutput @@ -2175,11 +2182,12 @@ def scaling_layer(input, weight, name=None, layer_attr=None): :param input: The input of this layer. :type input: LayerOutput - :param weight: Weight layer. + :param weight: The weight of each sample. :type weight: LayerOutput :param name: The name of this layer. It is optional. :type name: basestring - :param layer_attr: extra layer attributes. + :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for + details. :type layer_attr: ExtraLayerAttribute. :return: LayerOutput object. :rtype: LayerOutput @@ -2217,7 +2225,8 @@ def trans_layer(input, name=None, layer_attr=None): :type input: LayerOutput :param name: The name of this layer. It is optional. :type name: basestring - :param layer_attr: extra layer attributes. + :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for + details. :type layer_attr: ExtraLayerAttribute. :return: LayerOutput object. :rtype: LayerOutput @@ -2253,11 +2262,14 @@ def rotate_layer(input, height, width, name=None, layer_attr=None): :param input: The input of this layer. :type input: LayerOutput - :param height: The height of the sample matrix + :param height: The height of the sample matrix. :type height: int + :param width: The width of the sample matrix. + :type width: int :param name: The name of this layer. It is optional. :type name: basestring - :param layer_attr: extra layer attributes. + :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for + details. :type layer_attr: ExtraLayerAttribute. :return: LayerOutput object. :rtype: LayerOutput @@ -2302,15 +2314,15 @@ def cos_sim(a, b, scale=1, size=1, name=None, layer_attr=None): :param name: The name of this layer. It is optional. :type name: basestring - :param a: input layer a + :param a: The first input of this layer. :type a: LayerOutput - :param b: input layer b + :param b: The second input of this layer. :type b: LayerOutput - :param scale: scale for cosine value. default is 5. + :param scale: The scale of the cosine similarity. 1 is the default value. :type scale: float - :param size: layer size. NOTE size_a * size should equal size_b. + :param size: The dimension of this layer. NOTE size_a * size should equal size_b. :type size: int - :param layer_attr: Extra Layer Attribute. + :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for details. :type layer_attr: ExtraLayerAttribute :return: LayerOutput object. :rtype: LayerOutput @@ -2395,8 +2407,10 @@ def hsigmoid(input, """ Organize the classes into a binary tree. At each node, a sigmoid function is used to calculate the probability of belonging to the right branch. - This idea is from "F. Morin, Y. Bengio (AISTATS 05): - Hierarchical Probabilistic Neural Network Language Model." + + Reference: + `Hierarchical Probabilistic Neural Network Language Model + `_ The example usage is: @@ -2407,19 +2421,21 @@ def hsigmoid(input, :param input: The input of this layer. :type input: LayerOutput | list | tuple - :param label: Label layer. + :param label: The input label. :type label: LayerOutput - :param num_classes: number of classes. - :type num_classes: int | None + :param num_classes: The number of classes. And it should be larger than 2. If the parameter + is not set or set to None, its actual value will be automatically set to + the number of labels. + :type num_classes: int :param name: The name of this layer. It is optional. :type name: basestring :param bias_attr: The bias attribute. If the parameter is set to False or an object whose type is not ParameterAttribute, no bias is defined. If the parameter is set to True, the bias is initialized to zero. :type bias_attr: ParameterAttribute | None | bool | Any - :param param_attr: Parameter Attribute. None means default parameter. - :type param_attr: ParameterAttribute | None - :param layer_attr: Extra Layer Attribute. + :param param_attr: The parameter attribute. See ParameterAttribute for details. + :type param_attr: ParameterAttribute + :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for details. :type layer_attr: ExtraLayerAttribute :return: LayerOutput object. :rtype: LayerOutput @@ -4241,7 +4257,7 @@ def dot_prod_layer(input1, input2, name=None, layer_attr=None): :param name: The name of this layer. It is optional. :type name: basestring :param input1: The first input layer. - :type input: LayerOutput + :type input1: LayerOutput :param input2: The second input layer. :type input2: LayerOutput :param layer_attr: The extra layer attribute. See ExtraLayerAttribute for From 669da506f255b66ec7e5d20383cef34a858aed7c Mon Sep 17 00:00:00 2001 From: typhoonzero Date: Mon, 27 Nov 2017 10:16:49 +0800 Subject: [PATCH 05/17] follow comments2 --- .../build_from_source_cn.rst | 4 ++-- .../build_from_source_en.rst | 5 ++--- doc/getstarted/build_and_install/cmake.png | Bin 183422 -> 0 bytes .../build_and_install/docker_install_cn.rst | 4 ++-- .../build_and_install/docker_install_en.rst | 4 ++-- .../build_and_install/pip_install_cn.rst | 4 ++++ .../build_and_install/pip_install_en.rst | 6 +++++- doc/getstarted/index_cn.rst | 14 +++++-------- doc/getstarted/index_en.rst | 19 +++++++----------- 9 files changed, 29 insertions(+), 31 deletions(-) delete mode 100644 doc/getstarted/build_and_install/cmake.png diff --git a/doc/getstarted/build_and_install/build_from_source_cn.rst b/doc/getstarted/build_and_install/build_from_source_cn.rst index 7e9fec9739..b2c92699f5 100644 --- a/doc/getstarted/build_and_install/build_from_source_cn.rst +++ b/doc/getstarted/build_and_install/build_from_source_cn.rst @@ -103,10 +103,10 @@ PaddlePaddle可以使用cuDNN v5.1之后的任何一个版本来编译运行, 编译选项的设置 ++++++++++++++ -PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。cmake编译时,首先在系统路径(/usr/lib\:/usr/local/lib)中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用 ``-D`` 命令可以设置,例如 +PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。cmake编译时,首先在系统路径( :code:`/usr/lib:/usr/local/lib` )中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用 ``-D`` 命令可以设置,例如 .. code-block:: bash cmake .. -DWITH_GPU=ON -DWITH_TESTING=OFF -DCUDNN_ROOT=/opt/cudnnv5 -注意:这几个编译选项的设置,只在第一次cmake的时候有效。如果之后想要重新设置,推荐清理整个编译目录(``rm -rf``)后,再指定。 +**注意:这几个编译选项的设置,只在第一次cmake的时候有效。如果之后想要重新设置,推荐清理整个编译目录(** :code:`rm -rf` )**后,再指定。** diff --git a/doc/getstarted/build_and_install/build_from_source_en.rst b/doc/getstarted/build_and_install/build_from_source_en.rst index 02d5ab3bb8..4b998f5288 100644 --- a/doc/getstarted/build_and_install/build_from_source_en.rst +++ b/doc/getstarted/build_and_install/build_from_source_en.rst @@ -115,12 +115,11 @@ Pass Compile Options You can pass compile options to use intended BLAS/CUDA/Cudnn libraries. When running cmake command, it will search system paths like -:code:`/usr/lib\:/usr/local/lib` and then search paths that you +:code:`/usr/lib:/usr/local/lib` and then search paths that you passed to cmake, i.e. .. code-block:: bash cmake .. -DWITH_GPU=ON -DWITH_TESTING=OFF -DCUDNN_ROOT=/opt/cudnnv5 -**NOTE: These options only take effect when running cmake for the first time, you need to clean the cmake cache or clean the build directory if you want to change it.** - +**NOTE: These options only take effect when running cmake for the first time, you need to clean the cmake cache or clean the build directory (** :code:`rm -rf` **) if you want to change it.** diff --git a/doc/getstarted/build_and_install/cmake.png b/doc/getstarted/build_and_install/cmake.png deleted file mode 100644 index a58cd09ad99cf27cc1ca5785fe54d726b83a82f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183422 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�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%0A{=^!@#pnEXgi6xCeK)%>Dr|ErfTe%bn?l9;R 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 diff --git a/doc/getstarted/build_and_install/docker_install_cn.rst b/doc/getstarted/build_and_install/docker_install_cn.rst index 1fb7025915..07933b2e0b 100644 --- a/doc/getstarted/build_and_install/docker_install_cn.rst +++ b/doc/getstarted/build_and_install/docker_install_cn.rst @@ -57,7 +57,7 @@ ------------------------------ 假设您已经在当前目录(比如在/home/work)编写了一个PaddlePaddle的程序 :code:`train.py` (可以参考 -`PaddlePaddleBook `_ +`PaddlePaddleBook `_ 编写),就可以使用下面的命令开始执行训练: .. code-block:: bash @@ -77,7 +77,7 @@ cd /work python train.py -**注:PaddlePaddle Docker镜像为了减小体积,默认没有安装vim,您可以在容器中执行 :code:`apt-get install -y vim` 安装后,在容器中编辑代码。** +**注:PaddlePaddle Docker镜像为了减小体积,默认没有安装vim,您可以在容器中执行** :code:`apt-get install -y vim` **安装后,在容器中编辑代码。** .. _docker_run_book: diff --git a/doc/getstarted/build_and_install/docker_install_en.rst b/doc/getstarted/build_and_install/docker_install_en.rst index 8cdb0031bd..9b977c9c72 100644 --- a/doc/getstarted/build_and_install/docker_install_en.rst +++ b/doc/getstarted/build_and_install/docker_install_en.rst @@ -62,7 +62,7 @@ Launch your training program in Docker Assume that you have already written a PaddlePaddle program named :code:`train.py` under directory :code:`/home/work` (refer to -`PaddlePaddleBook `_ +`PaddlePaddleBook `_ for more samples), then run the following command: .. code-block:: bash @@ -84,7 +84,7 @@ interactively: cd /work python train.py -**NOTE: We did not install vim in the default docker image to reduce the image size, you can run :code:`apt-get install -y vim` to install it if you need to edit python files.** +**NOTE: We did not install vim in the default docker image to reduce the image size, you can run** :code:`apt-get install -y vim` **to install it if you need to edit python files.** .. _docker_run_book: diff --git a/doc/getstarted/build_and_install/pip_install_cn.rst b/doc/getstarted/build_and_install/pip_install_cn.rst index 88c3d89856..04c817956c 100644 --- a/doc/getstarted/build_and_install/pip_install_cn.rst +++ b/doc/getstarted/build_and_install/pip_install_cn.rst @@ -27,6 +27,10 @@ PaddlePaddle可以使用常用的Python包管理工具 如果需要获取并安装最新的(开发分支)PaddlePaddle,可以从我们的CI系统中下载最新的whl安装包和c-api开发包并安装, 您可以从下面的表格中找到需要的版本: +如果在点击下面链接时出现如下登陆界面,点击“Log in as guest”即可开始下载: + +.. image:: paddleci.png + .. csv-table:: 各个版本最新的whl包 :header: "版本说明", "cp27-cp27mu", "cp27-cp27mu", "C-API" :widths: 1, 3, 3, 3 diff --git a/doc/getstarted/build_and_install/pip_install_en.rst b/doc/getstarted/build_and_install/pip_install_en.rst index 5d18defd52..87057f7f9b 100644 --- a/doc/getstarted/build_and_install/pip_install_en.rst +++ b/doc/getstarted/build_and_install/pip_install_en.rst @@ -30,6 +30,10 @@ you can download the latest whl package from our CI system. Access the below links, log in as guest, then click at the "Artifact" tab, you'll find the download link of whl packages. +If the links below shows up the login form, just click "Log in as guest" to start the download: + +.. image:: paddleci.png + .. csv-table:: whl package of each version :header: "version", "cp27-cp27mu", "cp27-cp27mu", "C-API" :widths: 1, 3, 3, 3 @@ -46,7 +50,7 @@ Runtime Dependency ------------------------------ PaddlePaddle installation packages (whl) does not only contain .py files, -but also binaries built from C++ code, we ensure that PaddlePaddle can +but also binaries built from C++ code. We ensure that PaddlePaddle can run on current mainline Linux distributions, like CentOS 6, Ubuntu 14.04 and MacOS 10.12. diff --git a/doc/getstarted/index_cn.rst b/doc/getstarted/index_cn.rst index 660ad578af..a9087be6f3 100644 --- a/doc/getstarted/index_cn.rst +++ b/doc/getstarted/index_cn.rst @@ -31,9 +31,7 @@ PaddlePaddle支持使用pip快速安装,目前支持CentOS 6以上, Ubuntu 14. 快速开始 ++++++++ -下载 `房价模型文件 `_ - -创建一个 housing.py 并粘贴此Python代码 (请确保fit_a_line.tar 是在正确的路径上) +创建一个 housing.py 并粘贴此Python代码: .. code-block:: python @@ -46,16 +44,14 @@ PaddlePaddle支持使用pip快速安装,目前支持CentOS 6以上, Ubuntu 14. x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13)) y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear()) - with open('fit_a_line.tar', 'r') as f: - parameters = paddle.parameters.Parameters.from_tar(f) - # Infer using provided test data. probs = paddle.infer( - output_layer=y_predict, parameters=parameters, - input=[item for item in paddle.dataset.uci_housing.test()()]) + output_layer=y_predict, + parameters=paddle.dataset.uci_housing.model(), + input=[item for item in paddle.dataset.uci_housing.test()()]) for i in xrange(len(probs)): - print 'Predicted price: ${:,.2f}'.format(probs[i][0] * 1000) + print 'Predicted price: ${:,.2f}'.format(probs[i][0] * 1000) 执行 :code:`python housing.py` 瞧! 它应该打印出预测住房数据的清单。 diff --git a/doc/getstarted/index_en.rst b/doc/getstarted/index_en.rst index 845506cea7..d14e3f5c0c 100644 --- a/doc/getstarted/index_en.rst +++ b/doc/getstarted/index_en.rst @@ -6,7 +6,7 @@ GET STARTED Quick Install ---------------------- -You can use pip to install PaddlePaddle using a single command, supports +You can use pip to install PaddlePaddle with a single command, supports CentOS 6 above, Ubuntu 14.04 above or MacOS 10.12, with Python 2.7 installed. Simply run the following command to install: @@ -33,11 +33,8 @@ For more details about installation and build: Quick Start ++++++++ -Download the `trained housing prices model `_ - -Now, create a new file called housing.py, and paste this Python -code (make sure to set the right path based on the location of fit_a_line.tar -on your computer): +Create a new file called housing.py, and paste this Python +code: .. code-block:: python @@ -51,16 +48,14 @@ on your computer): x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13)) y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear()) - with open('fit_a_line.tar', 'r') as f: - parameters = paddle.parameters.Parameters.from_tar(f) - # Infer using provided test data. probs = paddle.infer( - output_layer=y_predict, parameters=parameters, - input=[item for item in paddle.dataset.uci_housing.test()()]) + output_layer=y_predict, + parameters=paddle.dataset.uci_housing.model(), + input=[item for item in paddle.dataset.uci_housing.test()()]) for i in xrange(len(probs)): - print 'Predicted price: ${:,.2f}'.format(probs[i][0] * 1000) + print 'Predicted price: ${:,.2f}'.format(probs[i][0] * 1000) Run :code:`python housing.py` and voila! It should print out a list of predictions for the test housing data. From 13ac9604433037b4b8e7e18bbc70168177114e9d Mon Sep 17 00:00:00 2001 From: typhoonzero Date: Mon, 27 Nov 2017 10:23:31 +0800 Subject: [PATCH 06/17] add picture --- doc/getstarted/build_and_install/paddleci.png | Bin 0 -> 75322 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/getstarted/build_and_install/paddleci.png diff --git a/doc/getstarted/build_and_install/paddleci.png b/doc/getstarted/build_and_install/paddleci.png new file mode 100644 index 0000000000000000000000000000000000000000..cead0b4ed919c25d1b7f175ea2916d426b4448b2 GIT binary patch literal 75322 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 Si$;fn{7H(+ij)cIe*ZsU08MTH literal 0 HcmV?d00001 From 5331f937c24953522a90ef0d32774e34f056b8bc Mon Sep 17 00:00:00 2001 From: typhoonzero Date: Mon, 27 Nov 2017 11:08:37 +0800 Subject: [PATCH 07/17] update formats --- doc/getstarted/build_and_install/build_from_source_cn.rst | 1 + doc/getstarted/build_and_install/build_from_source_en.rst | 2 ++ doc/getstarted/build_and_install/pip_install_cn.rst | 4 +++- doc/getstarted/build_and_install/pip_install_en.rst | 4 +++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/getstarted/build_and_install/build_from_source_cn.rst b/doc/getstarted/build_and_install/build_from_source_cn.rst index b2c92699f5..55665ac8ed 100644 --- a/doc/getstarted/build_and_install/build_from_source_cn.rst +++ b/doc/getstarted/build_and_install/build_from_source_cn.rst @@ -96,6 +96,7 @@ CUDA/cuDNN +++++++++++ PaddlePaddle在编译时/运行时会自动找到系统中安装的CUDA和cuDNN库进行编译和执行。 +使用参数 :code:`-DCUDA_ARCH_NAME=Auto` 可以指定开启自动检测SM架构,加速编译。 PaddlePaddle可以使用cuDNN v5.1之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的cuDNN是同一个版本。 我们推荐使用最新版本的cuDNN。 diff --git a/doc/getstarted/build_and_install/build_from_source_en.rst b/doc/getstarted/build_and_install/build_from_source_en.rst index 4b998f5288..9a3ed7dd57 100644 --- a/doc/getstarted/build_and_install/build_from_source_en.rst +++ b/doc/getstarted/build_and_install/build_from_source_en.rst @@ -105,6 +105,8 @@ CUDA/cuDNN +++++++++++ PaddlePaddle will automatically find CUDA and cuDNN when compiling and running. +parameter :code:`-DCUDA_ARCH_NAME=Auto` can be used to detect SM architecture +automatically in order to speed up the build. PaddlePaddle can build with any version later than cuDNN v5.1, and we intend to keep on with latest cuDNN versions. Be sure to run with the same version of cuDNN diff --git a/doc/getstarted/build_and_install/pip_install_cn.rst b/doc/getstarted/build_and_install/pip_install_cn.rst index 04c817956c..41312da48c 100644 --- a/doc/getstarted/build_and_install/pip_install_cn.rst +++ b/doc/getstarted/build_and_install/pip_install_cn.rst @@ -30,13 +30,15 @@ PaddlePaddle可以使用常用的Python包管理工具 如果在点击下面链接时出现如下登陆界面,点击“Log in as guest”即可开始下载: .. image:: paddleci.png + :scale: 50 % + :align: center .. csv-table:: 各个版本最新的whl包 :header: "版本说明", "cp27-cp27mu", "cp27-cp27mu", "C-API" :widths: 1, 3, 3, 3 "cpu_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" - "cpu_avx_openblas", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "-" + "cpu_avx_openblas", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "暂无" "cuda7.5_cudnn5_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" "cuda8.0_cudnn5_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" "cuda8.0_cudnn7_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" diff --git a/doc/getstarted/build_and_install/pip_install_en.rst b/doc/getstarted/build_and_install/pip_install_en.rst index 87057f7f9b..4f295e14ba 100644 --- a/doc/getstarted/build_and_install/pip_install_en.rst +++ b/doc/getstarted/build_and_install/pip_install_en.rst @@ -33,13 +33,15 @@ tab, you'll find the download link of whl packages. If the links below shows up the login form, just click "Log in as guest" to start the download: .. image:: paddleci.png + :scale: 50 % + :align: center .. csv-table:: whl package of each version :header: "version", "cp27-cp27mu", "cp27-cp27mu", "C-API" :widths: 1, 3, 3, 3 "cpu_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" - "cpu_avx_openblas", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "-" + "cpu_avx_openblas", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "Not Available" "cuda7.5_cudnn5_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" "cuda8.0_cudnn5_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" "cuda8.0_cudnn7_avx_mkl", "`paddlepaddle-0.10.0-cp27-cp27mu-linux_x86_64.whl `_", "`paddlepaddle-0.10.0-cp27-cp27m-linux_x86_64.whl `_", "`paddle.tgz `_" From bd6c9052e22823a87bfbe21ffa63e7d55ff38d4d Mon Sep 17 00:00:00 2001 From: typhoonzero Date: Mon, 27 Nov 2017 12:51:14 +0800 Subject: [PATCH 08/17] update picture --- doc/getstarted/build_and_install/paddleci.png | Bin 75322 -> 40242 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/getstarted/build_and_install/paddleci.png b/doc/getstarted/build_and_install/paddleci.png index cead0b4ed919c25d1b7f175ea2916d426b4448b2..16087ce059aa3c07ce8c927d983eb86351915825 100644 GIT binary patch literal 40242 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 TDaF2yYT()L>EluB9!dQV$m`bb literal 75322 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 Si$;fn{7H(+ij)cIe*ZsU08MTH From 7c57f90dc2e95704e71adc40931581d1be437f32 Mon Sep 17 00:00:00 2001 From: Yu Yang Date: Mon, 27 Nov 2017 12:53:51 +0800 Subject: [PATCH 09/17] Feature/cpu profiling (#5895) * Add documentation of cProfile tools * Complete doc * Refine code --- doc/howto/optimization/cpu_profiling.md | 163 ++++++++++++++++++++++++ doc/howto/optimization/pprof_1.png | Bin 0 -> 352710 bytes doc/howto/optimization/pprof_2.png | Bin 0 -> 194000 bytes 3 files changed, 163 insertions(+) create mode 100644 doc/howto/optimization/cpu_profiling.md create mode 100644 doc/howto/optimization/pprof_1.png create mode 100644 doc/howto/optimization/pprof_2.png diff --git a/doc/howto/optimization/cpu_profiling.md b/doc/howto/optimization/cpu_profiling.md new file mode 100644 index 0000000000..32d89a7c18 --- /dev/null +++ b/doc/howto/optimization/cpu_profiling.md @@ -0,0 +1,163 @@ +此教程会介绍如何使用Python的cProfile包,与Python库yep,google perftools来运行性能分析(Profiling)与调优。 + +运行性能分析可以让开发人员科学的,有条不紊的对程序进行性能优化。性能分析是性能调优的基础。因为在程序实际运行中,真正的瓶颈可能和程序员开发过程中想象的瓶颈相去甚远。 + +性能优化的步骤,通常是循环重复若干次『性能分析 --> 寻找瓶颈 ---> 调优瓶颈 --> 性能分析确认调优效果』。其中性能分析是性能调优的至关重要的量化指标。 + +Paddle提供了Python语言绑定。用户使用Python进行神经网络编程,训练,测试。Python解释器通过`pybind`和`swig`调用Paddle的动态链接库,进而调用Paddle C++部分的代码。所以Paddle的性能分析与调优分为两个部分: + +* Python代码的性能分析 +* Python与C++混合代码的性能分析 + + +## Python代码的性能分析 + +### 生成性能分析文件 + +Python标准库中提供了性能分析的工具包,[cProfile](https://docs.python.org/2/library/profile.html)。生成Python性能分析的命令如下: + +```bash +python -m cProfile -o profile.out main.py +``` + +其中`-o`标识了一个输出的文件名,用来存储本次性能分析的结果。如果不指定这个文件,`cProfile`会打印一些统计信息到`stdout`。这不方便我们进行后期处理(进行`sort`, `split`, `cut`等等)。 + +### 查看性能分析文件 + +当main.py运行完毕后,性能分析结果文件`profile.out`就生成出来了。我们可以使用[cprofilev](https://github.com/ymichael/cprofilev)来查看性能分析结果。`cprofilev`是一个Python的第三方库。使用它会开启一个HTTP服务,将性能分析结果以网页的形式展示出来。 + +使用`pip install cprofilev`安装`cprofilev`工具。安装完成后,使用如下命令开启HTTP服务 + +```bash +cprofilev -a 0.0.0.0 -p 3214 -f profile.out main.py +``` + +其中`-a`标识HTTP服务绑定的IP。使用`0.0.0.0`允许外网访问这个HTTP服务。`-p`标识HTTP服务的端口。`-f`标识性能分析的结果文件。`main.py`标识被性能分析的源文件。 + +访问对应网址,即可显示性能分析的结果。性能分析结果格式如下: + +```text + ncalls tottime percall cumtime percall filename:lineno(function) + 1 0.284 0.284 29.514 29.514 main.py:1() + 4696 0.128 0.000 15.748 0.003 /home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/fluid/executor.py:20(run) + 4696 12.040 0.003 12.040 0.003 {built-in method run} + 1 0.144 0.144 6.534 6.534 /home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/__init__.py:14() +``` + +每一列的含义是: + +| 列名 | 含义 | +| --- | --- | +| ncalls | 函数的调用次数 | +| tottime | 函数实际使用的总时间。该时间去除掉本函数调用其他函数的时间 | +| percall | tottime的每次调用平均时间 | +| cumtime | 函数总时间。包含这个函数调用其他函数的时间 | +| percall | cumtime的每次调用平均时间 | +| filename:lineno(function) | 文件名, 行号,函数名 | + + +### 寻找性能瓶颈 + +通常`tottime`和`cumtime`是寻找瓶颈的关键指标。这两个指标代表了某一个函数真实的运行时间。 + +将性能分析结果按照tottime排序,效果如下: + +```text + 4696 12.040 0.003 12.040 0.003 {built-in method run} + 300005 0.874 0.000 1.681 0.000 /home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/dataset/mnist.py:38(reader) + 107991 0.676 0.000 1.519 0.000 /home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/fluid/framework.py:219(__init__) + 4697 0.626 0.000 2.291 0.000 /home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/fluid/framework.py:428(sync_with_cpp) + 1 0.618 0.618 0.618 0.618 /home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/fluid/__init__.py:1() + +``` + +可以看到最耗时的函数是C++端的`run`函数。这需要联合我们第二节`Python与C++混合代码的性能分析`来进行调优。而`sync_with_cpp`函数的总共耗时很长,每次调用的耗时也很长。于是我们可以点击`sync_with_cpp`的详细信息,了解其调用关系。 + +```text +Called By: + + Ordered by: internal time + List reduced from 4497 to 2 due to restriction <'sync_with_cpp'> + +Function was called by... + ncalls tottime cumtime +/home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/fluid/framework.py:428(sync_with_cpp) <- 4697 0.626 2.291 /home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/fluid/framework.py:562(sync_with_cpp) +/home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/fluid/framework.py:562(sync_with_cpp) <- 4696 0.019 2.316 /home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/fluid/framework.py:487(clone) + 1 0.000 0.001 /home/yuyang/perf_test/.env/lib/python2.7/site-packages/paddle/v2/fluid/framework.py:534(append_backward) + + +Called: + + Ordered by: internal time + List reduced from 4497 to 2 due to restriction <'sync_with_cpp'> +``` + +通常观察热点函数间的调用关系,和对应行的代码,就可以了解到问题代码在哪里。当我们做出性能修正后,再次进行性能分析(profiling)即可检查我们调优后的修正是否能够改善程序的性能。 + + + +## Python与C++混合代码的性能分析 + +### 生成性能分析文件 + +C++的性能分析工具非常多。常见的包括`gprof`, `valgrind`, `google-perftools`。但是调试Python中使用的动态链接库与直接调试原始二进制相比增加了很多复杂度。幸而Python的一个第三方库`yep`提供了方便的和`google-perftools`交互的方法。于是这里使用`yep`进行Python与C++混合代码的性能分析 + +使用`yep`前需要安装`google-perftools`与`yep`包。ubuntu下安装命令为 + +```bash +apt install libgoogle-perftools-dev +pip install yep +``` + +安装完毕后,我们可以通过 + +```bash +python -m yep -v main.py +``` + +生成性能分析文件。生成的性能分析文件为`main.py.prof`。 + +命令行中的`-v`指定在生成性能分析文件之后,在命令行显示分析结果。我们可以在命令行中简单的看一下生成效果。因为C++与Python不同,编译时可能会去掉调试信息,运行时也可能因为多线程产生混乱不可读的性能分析结果。为了生成更可读的性能分析结果,可以采取下面几点措施: + +1. 编译时指定`-g`生成调试信息。使用cmake的话,可以将CMAKE_BUILD_TYPE指定为`RelWithDebInfo`。 +2. 编译时一定要开启优化。单纯的`Debug`编译性能会和`-O2`或者`-O3`有非常大的差别。`Debug`模式下的性能测试是没有意义的。 +3. 运行性能分析的时候,先从单线程开始,再开启多线程,进而多机。毕竟如果单线程调试更容易。可以设置`OMP_NUM_THREADS=1`这个环境变量关闭openmp优化。 + +### 查看性能分析文件 + +在运行完性能分析后,会生成性能分析结果文件。我们可以使用[pprof](https://github.com/google/pprof)来显示性能分析结果。注意,这里使用了用`Go`语言重构后的`pprof`,因为这个工具具有web服务界面,且展示效果更好。 + +安装`pprof`的命令和一般的`Go`程序是一样的,其命令如下: + +```bash +go get github.com/google/pprof +``` + +进而我们可以使用如下命令开启一个HTTP服务: + +```bash +pprof -http=0.0.0.0:3213 `which python` ./main.py.prof +``` + +这行命令中,`-http`指开启HTTP服务。`which python`会产生当前Python二进制的完整路径,进而指定了Python可执行文件的路径。`./main.py.prof`输入了性能分析结果。 + +访问对应的网址,我们可以查看性能分析的结果。结果如下图所示: + +![result](./pprof_1.png) + + +### 寻找性能瓶颈 + +与寻找Python代码的性能瓶颈类似,寻找Python与C++混合代码的性能瓶颈也是要看`tottime`和`cumtime`。而`pprof`展示的调用图也可以帮助我们发现性能中的问题。 + +例如下图中, + +![kernel_perf](./pprof_2.png) + +在一次训练中,乘法和乘法梯度的计算占用2%-4%左右的计算时间。而`MomentumOp`占用了17%左右的计算时间。显然,`MomentumOp`的性能有问题。 + +在`pprof`中,对于性能的关键路径都做出了红色标记。先检查关键路径的性能问题,再检查其他部分的性能问题,可以更有次序的完成性能的优化。 + +## 总结 + +至此,两种性能分析的方式都介绍完毕了。希望通过这两种性能分析的方式,Paddle的开发人员和使用人员可以有次序的,科学的发现和解决性能问题。 diff --git a/doc/howto/optimization/pprof_1.png b/doc/howto/optimization/pprof_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8e9edbf377672d0ef40f2fc7bd39e746923550cb GIT binary patch literal 352710 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 f5jO zzQ4W+S#)+pL)wdCh^koBxWYYDef~%YXa)tQK^dFqO})8M=k=S_B&8?And^FpI7ydN z!RmIvf|+%{ZZ{eVpDcAxHmt)Q*|~{>Q6v!O?HfS6Ker7ORm)N-Gvy=<#CC4;*$RSJ zJVWl=3nBcjkY@roOE+c%AVFh&VDAZH#IgBvv8)PXHo4le*qtUgpIq!!fzr1?W*|Iz zwOvjaaI=w7)QQ6(vJebMWd4DvvpXlA_i(n1e~Gs6I2ny*f|%R^p&^1?Ew7}6TwGcT z_qld0e5{@HuWq>h<#ahXC2C=Yg$0T-MQr9OD%0%8rzSvR))9aa6B~O96NZr_>~-`L ze{5i3rHHt=WI8mhS2GtVo{XmIgxK{&iVYGr{( zWEK<$^Fn(U9WXBJB|J>wZscV`jD&d{Y1>|5PtMkh``-5(1tSM$R{IZ1Vmv5l!TH)! zHLJGHIR%Q4DTV{+<^3@!=|4g_o)(CCHW|IFV+xv=%2Bt6OyIutGHI~`3r#@~lN zaPLc*ar}4v@j7*@W&dyNZ)UK4$si0dm+Eu`4h|k9Gup1FZR|e7KrFUL32B`6W_H2w z+lxAwqHo_9$Vf?Ne=ZCt;i00^j>>6pxeW3gZ=C^o6Z{c?y*;t#Na8Lr!^-iIx(RPunVFZL{IXV^N4*qYh>eTq@D!T6Ns{@;+RtWVrc4fhN6?jwRq_L)X&DUVqrBo+Z- zDt^G!1Ea12q`4md4XeB&GBC9Jx&t06N_&Wh`+W$s!2!?ionJ{B>2bzI^G7q0(Fmn( zhsuH4hyO?>-G9BRRnV{cHdb=`U?OdX{8Ai#hbb~PDkNBe1~qyvp8=#?SrV^o_EtIG zZkp;IJ2^A;#Kp=&Dx8Ew@oP_}RTaHZGQL29C82+x+6&d(5OL6(!iY?+RRm*PUxFN0 zUc6pN_EHDW%7axKUguP9Va`{ZcZ6J7R~H-_iNMWQ#FoZbX9?Lf$DQP?T;kUjZMtOD zcH22wr1a+K+Xv(G09U_IvOw7q$nVFQRc%Uy`=$^*P6+s4ckziWpa%iSD}LL?Xf@J* zYTQ|7ULgt_T0~9ENPxLhp&%Bpg#y@@J#%rgZ2(*3%Y^UH{Vp0wc4ifE}re>KT~o{j=}>9wV_I zz`{KPe}cPOZ>t0uA59HE0aLCln_^|$fI&rDm8`z}c6s(}_yum}834%_@LthU*f^+) z)8AIWM;wGu6MQsmw&vGC58SPiIBeOXe2r(JG@b=sGF2_hRE8%Ed>=f#1=rCLSJu-b zlm22;8|j- zBhiUiW0O}<=!-W4DK3{3`K&MXwl#Xg?**N89(!a6KcEDG;MKu521did{cMHF=iF2a z1A;0VhSif)L@HH$qa2bgsZ=mtK0bI>*5Ai>)6;WeS{)iF$BusC4YR$0!TOFjy&8#) z01FftxQ45@4S80EOj08*2&h?m39$=wU&d-N(Q8VGT?z|T#;Dk+h{ocGAB83)4qs>Sf#Sg8`Lsfv3VtGEVVOZ@Rw?9VVlrR>MwUoSIPK{l2gELOY}z`9 z`Q-0+tD&UqzsleQgN{vMW)KjE)V4q=7g9ckcYW(jlHJ#oobl z-$m%aq2MxWg!Bzrkyk@hCnO=juG&JQGn<&$a;P2)u}{zt86ySO=iBze0=v!!yrzf* zv|^k#<%Bn+;%VehmpmDor9dSp+Uj0=L=y%^AVxKc1V&0Aq8hIoM1lCJMA#+USlAqrQy!S&)#HvoHPg6s@rS`s(*}X!=yXS#_Y2qcp0iXGP zN*&vy*o;+mWj+7MXK}ex9!U=#{e98N#~Z95*dm-Ax(S1FSe+OoHfBxRb;&!>{RFr1 zF<6Ksnx0`L7W$Gv#_&EuUfs47DYAH=Iq$=Za$Rp(DTCh9Ugu5F<~>@hRzS=x#|$wpS-QOh9t`hIS)4-}!F%3#(xa)y zlBWhMFEt7y~fEr}r8GKj+qHET>S%0D4>n=6A#88;o%T!y8)I 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

dDPd0is~dWdnaK(Ga_NKg>nF88*ZefVe; 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 literal 0 HcmV?d00001 diff --git a/doc/howto/optimization/pprof_2.png b/doc/howto/optimization/pprof_2.png new file mode 100644 index 0000000000000000000000000000000000000000..172ba20399ba974d27f4c072425277b69b02520b GIT binary patch literal 194000 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�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 bg1?qGymXmRYp`!_b>? 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%0Dek1 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 z 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 UA!c8H>i_@%07*qoM6N<$f|2}Ij{pDw literal 0 HcmV?d00001 From e6546baa6283bbfddc9e925382dc754954eb3bf8 Mon Sep 17 00:00:00 2001 From: dzhwinter Date: Mon, 27 Nov 2017 13:09:23 +0800 Subject: [PATCH 10/17] remove unused file (#5918) --- .../fluid/tests/tmp/inference_model/__model__ | Bin 1255 -> 0 bytes .../fluid/tests/tmp/inference_model/fc_0.b_0 | Bin 24 -> 0 bytes .../fluid/tests/tmp/inference_model/fc_0.w_0 | Bin 30 -> 0 bytes .../tests/test_elementwise_mod_op.py | 36 ------------------ 4 files changed, 36 deletions(-) delete mode 100644 python/paddle/v2/fluid/tests/tmp/inference_model/__model__ delete mode 100644 python/paddle/v2/fluid/tests/tmp/inference_model/fc_0.b_0 delete mode 100644 python/paddle/v2/fluid/tests/tmp/inference_model/fc_0.w_0 delete mode 100644 python/paddle/v2/framework/tests/test_elementwise_mod_op.py diff --git a/python/paddle/v2/fluid/tests/tmp/inference_model/__model__ b/python/paddle/v2/fluid/tests/tmp/inference_model/__model__ deleted file mode 100644 index e333d10da94943372b0fe4dedd9d857817ec9ca6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1255 zcmbW1;cJ^f7{)zgt-P$&m@(Sh+6`gFPeoz-IOt%|e(M+&7DhR)@zMpNsi(I3p-}pd zXLm6+rp~O)FT&k(zxTQKee^-SPmmj!W0sA6lUvG3Oe2;i>SfXkUPX+?#5>NS8{#Dz z4R*(jg$>o#Wum(QDgsopz`EhHYfd8)vUEh!j3?U{kD8*u+%ObtUOxyQK)(q-IsNhV zn}x6rnz1F`@4=ih%Hv6VO*qXM@x`K1ZCc1h_!I1>NlrN**eji1JKJ2 zra!}BXY2m&*rpZR-=S938Q5E1?{0BD19UM_buoMlYpHBpUcqmdKyj)D zJ{`r)#%}0822=`YI~XED?*J8l8;L3d=KKO3&`%o`umfmlSMw28>^}6)^UPk&)x*6g zpE|E$w<;Q^FgJW)+cwb`>9+Y|0`QXLpm75gLXLfJTc+ zRfj$&`qKZ Date: Mon, 27 Nov 2017 13:11:45 +0800 Subject: [PATCH 11/17] Fix the check in addto_layer --- python/paddle/trainer/config_parser.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/python/paddle/trainer/config_parser.py b/python/paddle/trainer/config_parser.py index 5ba0e50c6b..cfe2a34a1f 100644 --- a/python/paddle/trainer/config_parser.py +++ b/python/paddle/trainer/config_parser.py @@ -2798,19 +2798,18 @@ class AddToLayer(LayerBase): name, self.layer_type, 0, inputs=inputs, **xargs) config_assert(len(inputs) > 0, 'inputs cannot be empty for AddToLayer') - if len(self.inputs) > 1: - for input_index in xrange(len(self.inputs)): - assert self.get_input_layer(0).height == self.get_input_layer( - input_index).height - assert self.get_input_layer(0).width == self.get_input_layer( - input_index).width - assert self.get_input_layer(0).depth == self.get_input_layer( - input_index).depth + layer_size = self.get_input_layer(0).size + # To reserve heght, width, depth. + layer_with_hwc = self.get_input_layer(0) + for input_index in xrange(len(self.inputs)): + input_layer = self.get_input_layer(input_index) + assert layer_size == input_layer.size + if input_layer.height and input_layer.height and input_layer.height: + layer_with_hwc = input_layer - self.set_layer_size(self.get_input_layer(0).size) - self.set_layer_height_width(self.get_input_layer(0).height, \ - self.get_input_layer(0).width) - self.set_layer_depth(self.get_input_layer(0).depth) + self.set_layer_size(layer_with_hwc.size) + self.set_layer_height_width(layer_with_hwc.height, layer_with_hwc.width) + self.set_layer_depth(layer_with_hwc.depth) self.create_bias_parameter(bias, self.config.size) From 0ac8c74e630d3fd0c3d9cad7cf3207973e970111 Mon Sep 17 00:00:00 2001 From: Yu Yang Date: Mon, 27 Nov 2017 13:45:34 +0800 Subject: [PATCH 12/17] Unify fluid submodules to fluid module (#5924) Change books just use `import fluid`, not submodules --- python/paddle/v2/fluid/__init__.py | 52 +++++++--- python/paddle/v2/fluid/evaluator.py | 7 +- python/paddle/v2/fluid/executor.py | 6 +- python/paddle/v2/fluid/framework.py | 8 +- python/paddle/v2/fluid/initializer.py | 23 ++++- python/paddle/v2/fluid/layer_helper.py | 11 +-- python/paddle/v2/fluid/layers.py | 36 ++++--- python/paddle/v2/fluid/nets.py | 2 +- python/paddle/v2/fluid/optimizer.py | 43 ++++++--- python/paddle/v2/fluid/regularizer.py | 19 +++- .../v2/fluid/tests/book/test_fit_a_line.py | 57 +++++------ .../book/test_image_classification_train.py | 95 +++++++------------ .../tests/book/test_label_semantic_roles.py | 72 +++++++------- .../tests/book/test_recognize_digits_conv.py | 50 ++++------ .../tests/book/test_recognize_digits_mlp.py | 77 +++++++-------- .../book/test_understand_sentiment_conv.py | 54 +++++------ .../test_understand_sentiment_dynamic_lstm.py | 60 ++++++------ .../book/test_understand_sentiment_lstm.py | 49 +++++----- .../v2/fluid/tests/book/test_word2vec.py | 85 ++++++----------- 19 files changed, 381 insertions(+), 425 deletions(-) diff --git a/python/paddle/v2/fluid/__init__.py b/python/paddle/v2/fluid/__init__.py index 5df612bf35..9677c9568c 100644 --- a/python/paddle/v2/fluid/__init__.py +++ b/python/paddle/v2/fluid/__init__.py @@ -1,11 +1,41 @@ -import sys -import core -__all__ = ['proto'] -argv = [] -if core.is_compile_gpu(): - argv = list(sys.argv) + [ - "--tryfromenv=fraction_of_gpu_memory_to_use,use_pinned_memory" - ] -else: - argv = list(sys.argv) + ["--tryfromenv=use_pinned_memory"] -core.init_gflags(argv) +# import all class inside framework into fluid module +import framework +from framework import * +# import all class inside executor into fluid module +import executor +from executor import * + +import io +import evaluator +import initializer +import layers +import nets +import optimizer +import backward +import regularizer + +from core import LoDTensor, CPUPlace, GPUPlace + +Tensor = LoDTensor +__all__ = framework.__all__ + executor.__all__ + [ + 'io', 'initializer', 'layers', 'nets', 'optimizer', 'backward', + 'regularizer', 'LoDTensor', 'CPUPlace', 'GPUPlace', 'Tensor' +] + + +def __read_gflags_from_env__(): + """ + Enable reading gflags from environment variables. + + Returns: + None + """ + import sys + import core + read_env_flags = ['use_pinned_memory'] + if core.is_compile_gpu(): + read_env_flags.append('fraction_of_gpu_memory_to_use') + core.init_gflags(sys.argv + ["--tryfromenv=" + ",".join(read_env_flags)]) + + +__read_gflags_from_env__() diff --git a/python/paddle/v2/fluid/evaluator.py b/python/paddle/v2/fluid/evaluator.py index c37fca8560..bd4a6fda1f 100644 --- a/python/paddle/v2/fluid/evaluator.py +++ b/python/paddle/v2/fluid/evaluator.py @@ -1,9 +1,8 @@ import numpy as np -import paddle.v2.fluid.layers as layers -from paddle.v2.fluid.framework import Program, unique_name, \ - Variable -from paddle.v2.fluid.layer_helper import LayerHelper +import layers +from framework import Program, unique_name, Variable +from layer_helper import LayerHelper __all__ = ['Accuracy'] diff --git a/python/paddle/v2/fluid/executor.py b/python/paddle/v2/fluid/executor.py index bd98d6b154..3e26d1b983 100644 --- a/python/paddle/v2/fluid/executor.py +++ b/python/paddle/v2/fluid/executor.py @@ -1,6 +1,8 @@ import numpy as np -import paddle.v2.fluid.core as core -from paddle.v2.fluid.framework import Block, Program, g_main_program +from . import core +from framework import Program, g_main_program + +__all__ = ['Executor', 'g_scope'] g_scope = core.Scope() diff --git a/python/paddle/v2/fluid/framework.py b/python/paddle/v2/fluid/framework.py index 872c19c2f6..9a62698b86 100644 --- a/python/paddle/v2/fluid/framework.py +++ b/python/paddle/v2/fluid/framework.py @@ -1,12 +1,12 @@ -import paddle.v2.fluid.core as core -import paddle.v2.fluid.proto.framework_pb2 as framework_pb2 import collections + import numpy as np -import copy +from . import core +import proto.framework_pb2 as framework_pb2 __all__ = [ 'Block', 'Variable', 'Program', 'Operator', 'default_startup_program', - 'default_main_program' + 'default_main_program', 'g_startup_program', 'g_main_program' ] diff --git a/python/paddle/v2/fluid/initializer.py b/python/paddle/v2/fluid/initializer.py index 9f23e68a76..d3f648f846 100644 --- a/python/paddle/v2/fluid/initializer.py +++ b/python/paddle/v2/fluid/initializer.py @@ -1,10 +1,7 @@ -import paddle.v2.fluid.framework as framework +import framework import numpy as np -__all__ = [ - 'ConstantInitializer', 'UniformInitializer', 'NormalInitializer', - 'XavierInitializer' -] +__all__ = ['Constant', 'Uniform', 'Normal', 'Xavier'] class Initializer(object): @@ -368,3 +365,19 @@ class MSRAInitializer(Initializer): }) var.op = op return op + + +# We short the class name, since users will use the initializer with the package +# name. The sample code: +# +# import paddle.fluid as fluid +# +# hidden = fluid.layers.fc(..., +# param_attr=ParamAttr(fluid.initializer.Xavier())) +# +# It is no need to add an `Initializer` as the class suffix +Constant = ConstantInitializer +Uniform = UniformInitializer +Normal = NormalInitializer +Xavier = XavierInitializer +MSRA = MSRAInitializer diff --git a/python/paddle/v2/fluid/layer_helper.py b/python/paddle/v2/fluid/layer_helper.py index e0880354fb..5f88555511 100644 --- a/python/paddle/v2/fluid/layer_helper.py +++ b/python/paddle/v2/fluid/layer_helper.py @@ -1,10 +1,9 @@ import copy import itertools -from paddle.v2.fluid.framework import Variable, g_main_program, \ - g_startup_program, unique_name, Program, dtype_is_floating -from paddle.v2.fluid.initializer import ConstantInitializer, \ - UniformInitializer, XavierInitializer +from framework import Variable, g_main_program, \ + g_startup_program, unique_name, dtype_is_floating +from paddle.v2.fluid.initializer import Constant, Xavier class LayerHelper(object): @@ -209,7 +208,7 @@ class LayerHelper(object): def _get_default_initializer(self, dtype): if dtype is None or dtype_is_floating(dtype) is True: - return XavierInitializer() + return Xavier() else: # For integer and boolean types, initialize with all zeros - return ConstantInitializer() + return Constant() diff --git a/python/paddle/v2/fluid/layers.py b/python/paddle/v2/fluid/layers.py index ca0c10e700..db388c142f 100644 --- a/python/paddle/v2/fluid/layers.py +++ b/python/paddle/v2/fluid/layers.py @@ -1,9 +1,7 @@ -import paddle.v2.fluid.core as core -import paddle.v2.fluid.proto.framework_pb2 as framework_pb2 -from paddle.v2.fluid.framework import OpProtoHolder, Variable, Program, \ - Operator -from paddle.v2.fluid.initializer import ConstantInitializer, \ - NormalInitializer, XavierInitializer +from . import core +import proto.framework_pb2 as framework_pb2 +from framework import OpProtoHolder, Variable, Program, Operator +from initializer import Constant, Normal, Xavier from paddle.v2.fluid.layer_helper import LayerHelper, unique_name import re import cStringIO @@ -58,10 +56,10 @@ def fc(input, """ def _get_default_param_initializer(): - return XavierInitializer() + return Xavier() def _get_default_bias_initializer(): - return ConstantInitializer() + return Constant() helper = LayerHelper('fc', **locals()) @@ -139,7 +137,7 @@ def embedding(input, """ def _get_default_param_initializer(): - return XavierInitializer() + return Xavier() helper = LayerHelper('embedding', **locals()) w = helper.create_parameter( @@ -477,7 +475,7 @@ def linear_chain_crf(input, main_program=None, startup_program=None): def _get_default_param_initializer(): - return XavierInitializer() + return Xavier() helper = LayerHelper('linear_chain_crf', **locals()) size = input.shape[1] @@ -661,10 +659,10 @@ def sequence_conv(input, """ def _get_default_bias_initializer(): - return ConstantInitializer() + return Constant() def _get_default_param_initializer(): - return XavierInitializer() + return Xavier() # FIXME(dzh) : want to unify the argument of python layer # function. So we ignore some unecessary attributes. @@ -725,11 +723,11 @@ def conv2d(input, """ def _get_default_bias_initializer(): - return ConstantInitializer() + return Constant() def _get_default_param_initializer(filter_size, num_channels): std = (2.0 / (filter_size[0]**2 * num_channels))**0.5 - return NormalInitializer(0.0, std, 0) + return Normal(0.0, std, 0) helper = LayerHelper('conv2d', **locals()) dtype = helper.input_dtype() @@ -878,22 +876,20 @@ def batch_norm(input, attr=helper.param_attr, shape=param_shape, dtype=dtype, - initializer=ConstantInitializer(1.0)) + initializer=Constant(1.0)) bias = helper.create_parameter( attr=helper.param_attr, shape=param_shape, dtype=dtype, - initializer=ConstantInitializer(0.0)) + initializer=Constant(0.0)) mean = helper.create_global_variable( dtype=input.dtype, shape=param_shape, persistable=True) - helper.set_variable_initializer( - var=mean, initializer=ConstantInitializer(0.0)) + helper.set_variable_initializer(var=mean, initializer=Constant(0.0)) variance = helper.create_global_variable( dtype=input.dtype, shape=param_shape, persistable=True) - helper.set_variable_initializer( - var=variance, initializer=ConstantInitializer(1.0)) + helper.set_variable_initializer(var=variance, initializer=Constant(1.0)) # create output # mean and mean_out share the same memory diff --git a/python/paddle/v2/fluid/nets.py b/python/paddle/v2/fluid/nets.py index 5e14ca594b..05728ad75a 100644 --- a/python/paddle/v2/fluid/nets.py +++ b/python/paddle/v2/fluid/nets.py @@ -1,4 +1,4 @@ -import paddle.v2.fluid.layers as layers +import layers __all__ = ["simple_img_conv_pool", "sequence_conv_pool"] diff --git a/python/paddle/v2/fluid/optimizer.py b/python/paddle/v2/fluid/optimizer.py index e82f0f060d..934e024742 100644 --- a/python/paddle/v2/fluid/optimizer.py +++ b/python/paddle/v2/fluid/optimizer.py @@ -1,16 +1,13 @@ from collections import defaultdict -import paddle.v2.fluid.framework as framework -from paddle.v2.fluid.framework import unique_name, Program -from paddle.v2.fluid.backward import append_backward_ops -from paddle.v2.fluid.initializer import ConstantInitializer -from paddle.v2.fluid.regularizer import append_regularization_ops -from paddle.v2.fluid.layer_helper import LayerHelper +import framework +from backward import append_backward_ops +from framework import unique_name +from initializer import Constant +from layer_helper import LayerHelper +from regularizer import append_regularization_ops -__all__ = [ - 'SGDOptimizer', 'MomentumOptimizer', 'AdagradOptimizer', 'AdamOptimizer', - 'AdamaxOptimizer', 'DecayedAdagradOptimizer' -] +__all__ = ['SGD', 'Momentum', 'Adagrad', 'Adam', 'Adamax', 'DecayedAdagrad'] class Optimizer(object): @@ -48,7 +45,7 @@ class Optimizer(object): persistable=True) param_lr = param_lr * self._learning_rate self.helper.set_variable_initializer( - var=param_lr_var, initializer=ConstantInitializer(param_lr)) + var=param_lr_var, initializer=Constant(param_lr)) return param_lr_var def _create_accumulators(self, block, parameters): @@ -96,7 +93,7 @@ class Optimizer(object): type=param.type, shape=param.shape) self.helper.set_variable_initializer( - var, initializer=ConstantInitializer(value=float(fill_value))) + var, initializer=Constant(value=float(fill_value))) self._accumulators[name][param.name] = var def _get_accumulator(self, name, param): @@ -360,7 +357,7 @@ class AdamOptimizer(Optimizer): lod_level=0, persistable=True) self.helper.set_variable_initializer( - self._beta1_pow_acc, initializer=ConstantInitializer(self._beta1)) + self._beta1_pow_acc, initializer=Constant(self._beta1)) self._beta2_pow_acc = self.helper.create_global_variable( name=unique_name('beta2_pow_acc'), @@ -370,7 +367,7 @@ class AdamOptimizer(Optimizer): persistable=True) self.helper.set_variable_initializer( - self._beta2_pow_acc, initializer=ConstantInitializer(self._beta2)) + self._beta2_pow_acc, initializer=Constant(self._beta2)) # Create accumulator tensors for first and second moments for p in parameters: @@ -462,7 +459,7 @@ class AdamaxOptimizer(Optimizer): lod_level=0, persistable=True) self.helper.set_variable_initializer( - self._beta1_pow_acc, initializer=ConstantInitializer(self._beta1)) + self._beta1_pow_acc, initializer=Constant(self._beta1)) # Create accumulator tensors for first moment and infinity norm for p in parameters: @@ -559,3 +556,19 @@ class DecayedAdagradOptimizer(Optimizer): attrs={"epsilon": self._epsilon}) return decayed_adagrad_op + + +# We short the class name, since users will use the optimizer with the package +# name. The sample code: +# +# import paddle.fluid as fluid +# +# sgd = fluid.optimizer.SGD(...) +# +# It is no need to add an `Optimizer` as the class suffix +SGD = SGDOptimizer +Momentum = MomentumOptimizer +Adagrad = AdagradOptimizer +Adam = AdamOptimizer +Adamax = AdamaxOptimizer +DecayedAdagrad = DecayedAdagradOptimizer diff --git a/python/paddle/v2/fluid/regularizer.py b/python/paddle/v2/fluid/regularizer.py index 098cd0dd64..c2c18e1951 100644 --- a/python/paddle/v2/fluid/regularizer.py +++ b/python/paddle/v2/fluid/regularizer.py @@ -1,8 +1,6 @@ -import paddle.v2.fluid.framework as framework +import framework -__all__ = [ - 'append_regularization_ops', 'L2DecayRegularizer', 'L1DecayRegularizer' -] +__all__ = ['append_regularization_ops', 'L1Decay', 'L2Decay'] def append_regularization_ops(parameters_and_grads): @@ -139,3 +137,16 @@ class L1DecayRegularizer(WeightDecayRegularizer): attrs={"scale": self._regularization_coeff}) return decay + + +# We short the class name, since users will use the regulaizer with the package +# name. The sample code: +# +# import paddle.fluid as fluid +# +# hidden = fluid.layers.fc(..., +# param_attr=ParamAttr(fluid.regularizer.Xavier())) +# +# It is no need to add a `Regularizer` as the class suffix +L1Decay = L1DecayRegularizer +L2Decay = L2DecayRegularizer diff --git a/python/paddle/v2/fluid/tests/book/test_fit_a_line.py b/python/paddle/v2/fluid/tests/book/test_fit_a_line.py index a899f1088d..9f98493adb 100644 --- a/python/paddle/v2/fluid/tests/book/test_fit_a_line.py +++ b/python/paddle/v2/fluid/tests/book/test_fit_a_line.py @@ -1,23 +1,18 @@ import numpy as np import paddle.v2 as paddle -import paddle.v2.fluid.core as core -import paddle.v2.fluid.framework as framework -import paddle.v2.fluid.layers as layers -from paddle.v2.fluid.executor import Executor -from paddle.v2.fluid.io import save_persistables, load_persistables -from paddle.v2.fluid.optimizer import SGDOptimizer +import paddle.v2.fluid as fluid -x = layers.data(name='x', shape=[13], dtype='float32') +x = fluid.layers.data(name='x', shape=[13], dtype='float32') -y_predict = layers.fc(input=x, size=1, act=None) +y_predict = fluid.layers.fc(input=x, size=1, act=None) -y = layers.data(name='y', shape=[1], dtype='float32') +y = fluid.layers.data(name='y', shape=[1], dtype='float32') -cost = layers.square_error_cost(input=y_predict, label=y) -avg_cost = layers.mean(x=cost) +cost = fluid.layers.square_error_cost(input=y_predict, label=y) +avg_cost = fluid.layers.mean(x=cost) -sgd_optimizer = SGDOptimizer(learning_rate=0.001) -opts = sgd_optimizer.minimize(avg_cost) +sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001) +sgd_optimizer.minimize(avg_cost) BATCH_SIZE = 20 @@ -26,32 +21,24 @@ train_reader = paddle.batch( paddle.dataset.uci_housing.train(), buf_size=500), batch_size=BATCH_SIZE) -place = core.CPUPlace() -exe = Executor(place) +place = fluid.CPUPlace() +exe = fluid.Executor(place) -exe.run(framework.default_startup_program()) +exe.run(fluid.default_startup_program()) PASS_NUM = 100 for pass_id in range(PASS_NUM): - save_persistables(exe, "./fit_a_line.model/") - load_persistables(exe, "./fit_a_line.model/") + fluid.io.save_persistables(exe, "./fit_a_line.model/") + fluid.io.load_persistables(exe, "./fit_a_line.model/") for data in train_reader(): - x_data = np.array(map(lambda x: x[0], data)).astype("float32") - y_data = np.array(map(lambda x: x[1], data)).astype("float32") - - tensor_x = core.LoDTensor() - tensor_x.set(x_data, place) - # print tensor_x.get_dims() - - tensor_y = core.LoDTensor() - tensor_y.set(y_data, place) - # print tensor_y.get_dims() - outs = exe.run(framework.default_main_program(), - feed={'x': tensor_x, - 'y': tensor_y}, - fetch_list=[avg_cost]) - out = np.array(outs[0]) - - if out[0] < 10.0: + x_data = np.array(map(lambda _: _[0], data)).astype("float32") + y_data = np.array(map(lambda _: _[1], data)).astype("float32") + + avg_loss_value, = exe.run(fluid.default_main_program(), + feed={'x': x_data, + 'y': y_data}, + fetch_list=[avg_cost]) + + if avg_loss_value[0] < 10.0: exit(0) # if avg cost less than 10.0, we think our code is good. exit(1) diff --git a/python/paddle/v2/fluid/tests/book/test_image_classification_train.py b/python/paddle/v2/fluid/tests/book/test_image_classification_train.py index b555b49ab2..690c533971 100644 --- a/python/paddle/v2/fluid/tests/book/test_image_classification_train.py +++ b/python/paddle/v2/fluid/tests/book/test_image_classification_train.py @@ -1,18 +1,12 @@ +from __future__ import print_function import numpy as np import paddle.v2 as paddle -import paddle.v2.fluid.core as core -import paddle.v2.fluid.framework as framework -import paddle.v2.fluid.layers as layers -import paddle.v2.fluid.nets as nets -import paddle.v2.fluid.evaluator as evaluator -from paddle.v2.fluid.executor import Executor -from paddle.v2.fluid.initializer import XavierInitializer -from paddle.v2.fluid.optimizer import AdamOptimizer +import paddle.v2.fluid as fluid def resnet_cifar10(input, depth=32): def conv_bn_layer(input, ch_out, filter_size, stride, padding, act='relu'): - tmp = layers.conv2d( + tmp = fluid.layers.conv2d( input=input, filter_size=filter_size, num_filters=ch_out, @@ -20,12 +14,11 @@ def resnet_cifar10(input, depth=32): padding=padding, act=None, bias_attr=False) - return layers.batch_norm(input=tmp, act=act) + return fluid.layers.batch_norm(input=tmp, act=act) - def shortcut(input, ch_in, ch_out, stride, program, init_program): + def shortcut(input, ch_in, ch_out, stride): if ch_in != ch_out: - return conv_bn_layer(input, ch_out, 1, stride, 0, None, program, - init_program) + return conv_bn_layer(input, ch_out, 1, stride, 0, None) else: return input @@ -33,7 +26,7 @@ def resnet_cifar10(input, depth=32): tmp = conv_bn_layer(input, ch_out, 3, stride, 1) tmp = conv_bn_layer(tmp, ch_out, 3, 1, 1, act=None) short = shortcut(input, ch_in, ch_out, stride) - return layers.elementwise_add(x=tmp, y=short, act='relu') + return fluid.layers.elementwise_add(x=tmp, y=short, act='relu') def layer_warp(block_func, input, ch_in, ch_out, count, stride): tmp = block_func(input, ch_in, ch_out, stride) @@ -48,14 +41,14 @@ def resnet_cifar10(input, depth=32): res1 = layer_warp(basicblock, conv1, 16, 16, n, 1) res2 = layer_warp(basicblock, res1, 16, 32, n, 2) res3 = layer_warp(basicblock, res2, 32, 64, n, 2) - pool = layers.pool2d( + pool = fluid.layers.pool2d( input=res3, pool_size=8, pool_type='avg', pool_stride=1) return pool def vgg16_bn_drop(input): def conv_block(input, num_filter, groups, dropouts): - return nets.img_conv_group( + return fluid.nets.img_conv_group( input=input, pool_size=2, pool_stride=2, @@ -72,26 +65,20 @@ def vgg16_bn_drop(input): conv4 = conv_block(conv3, 512, 3, [0.4, 0.4, 0]) conv5 = conv_block(conv4, 512, 3, [0.4, 0.4, 0]) - drop = layers.dropout(x=conv5, dropout_prob=0.5) - fc1 = layers.fc(input=drop, - size=512, - act=None, - param_attr={"initializer": XavierInitializer()}) - reshape1 = layers.reshape(x=fc1, shape=list(fc1.shape + (1, 1))) - bn = layers.batch_norm(input=reshape1, act='relu') - drop2 = layers.dropout(x=bn, dropout_prob=0.5) - fc2 = layers.fc(input=drop2, - size=512, - act=None, - param_attr={"initializer": XavierInitializer()}) + drop = fluid.layers.dropout(x=conv5, dropout_prob=0.5) + fc1 = fluid.layers.fc(input=drop, size=512, act=None) + reshape1 = fluid.layers.reshape(x=fc1, shape=list(fc1.shape + (1, 1))) + bn = fluid.layers.batch_norm(input=reshape1, act='relu') + drop2 = fluid.layers.dropout(x=bn, dropout_prob=0.5) + fc2 = fluid.layers.fc(input=drop2, size=512, act=None) return fc2 classdim = 10 data_shape = [3, 32, 32] -images = layers.data(name='pixel', shape=data_shape, dtype='float32') -label = layers.data(name='label', shape=[1], dtype='int64') +images = fluid.layers.data(name='pixel', shape=data_shape, dtype='float32') +label = fluid.layers.data(name='label', shape=[1], dtype='int64') # Add neural network config # option 1. resnet @@ -99,17 +86,14 @@ label = layers.data(name='label', shape=[1], dtype='int64') # option 2. vgg net = vgg16_bn_drop(images) -# print(program) +predict = fluid.layers.fc(input=net, size=classdim, act='softmax') +cost = fluid.layers.cross_entropy(input=predict, label=label) +avg_cost = fluid.layers.mean(x=cost) -predict = layers.fc(input=net, size=classdim, act='softmax') -cost = layers.cross_entropy(input=predict, label=label) -avg_cost = layers.mean(x=cost) - -# optimizer = SGDOptimizer(learning_rate=0.001) -optimizer = AdamOptimizer(learning_rate=0.001) +optimizer = fluid.optimizer.Adam(learning_rate=0.001) opts = optimizer.minimize(avg_cost) -accuracy = evaluator.Accuracy(input=predict, label=label) +accuracy = fluid.evaluator.Accuracy(input=predict, label=label) BATCH_SIZE = 128 PASS_NUM = 1 @@ -119,13 +103,12 @@ train_reader = paddle.batch( paddle.dataset.cifar.train10(), buf_size=128 * 10), batch_size=BATCH_SIZE) -place = core.CPUPlace() -exe = Executor(place) +place = fluid.CPUPlace() +exe = fluid.Executor(place) -exe.run(framework.default_startup_program()) +exe.run(fluid.default_startup_program()) for pass_id in range(PASS_NUM): - batch_id = 0 accuracy.reset(exe) for data in train_reader(): img_data = np.array(map(lambda x: x[0].reshape(data_shape), @@ -136,25 +119,13 @@ for pass_id in range(PASS_NUM): batch_size = batch_size * i y_data = y_data.reshape([batch_size, 1]) - tensor_img = core.LoDTensor() - tensor_y = core.LoDTensor() - tensor_img.set(img_data, place) - tensor_y.set(y_data, place) - - outs = exe.run(framework.default_main_program(), - feed={"pixel": tensor_img, - "label": tensor_y}, - fetch_list=[avg_cost] + accuracy.metrics) - - loss = np.array(outs[0]) - acc = np.array(outs[1]) + loss, acc = exe.run(fluid.default_main_program(), + feed={"pixel": img_data, + "label": y_data}, + fetch_list=[avg_cost] + accuracy.metrics) pass_acc = accuracy.eval(exe) - print("pass_id:" + str(pass_id) + " batch_id:" + str(batch_id) + - " loss:" + str(loss) + " acc:" + str(acc) + " pass_acc:" + str( - pass_acc)) - batch_id = batch_id + 1 - - if batch_id > 1: - # this model is slow, so if we can train two mini batch, we think it works properly. - exit(0) + print("loss:" + str(loss) + " acc:" + str(acc) + " pass_acc:" + str( + pass_acc)) + # this model is slow, so if we can train two mini batch, we think it works properly. + exit(0) exit(1) diff --git a/python/paddle/v2/fluid/tests/book/test_label_semantic_roles.py b/python/paddle/v2/fluid/tests/book/test_label_semantic_roles.py index 9c9064ba96..93987a2b80 100644 --- a/python/paddle/v2/fluid/tests/book/test_label_semantic_roles.py +++ b/python/paddle/v2/fluid/tests/book/test_label_semantic_roles.py @@ -1,11 +1,7 @@ import numpy as np import paddle.v2 as paddle import paddle.v2.dataset.conll05 as conll05 -import paddle.v2.fluid.core as core -import paddle.v2.fluid.framework as framework -import paddle.v2.fluid.layers as layers -from paddle.v2.fluid.executor import Executor, g_scope -from paddle.v2.fluid.optimizer import SGDOptimizer +import paddle.v2.fluid as fluid word_dict, verb_dict, label_dict = conll05.get_dict() word_dict_len = len(word_dict) @@ -34,23 +30,23 @@ def load_parameter(file_name, h, w): def db_lstm(): # 8 features - word = layers.data(name='word_data', shape=[1], dtype='int64') - predicate = layers.data(name='verb_data', shape=[1], dtype='int64') - ctx_n2 = layers.data(name='ctx_n2_data', shape=[1], dtype='int64') - ctx_n1 = layers.data(name='ctx_n1_data', shape=[1], dtype='int64') - ctx_0 = layers.data(name='ctx_0_data', shape=[1], dtype='int64') - ctx_p1 = layers.data(name='ctx_p1_data', shape=[1], dtype='int64') - ctx_p2 = layers.data(name='ctx_p2_data', shape=[1], dtype='int64') - mark = layers.data(name='mark_data', shape=[1], dtype='int64') - - predicate_embedding = layers.embedding( + word = fluid.layers.data(name='word_data', shape=[1], dtype='int64') + predicate = fluid.layers.data(name='verb_data', shape=[1], dtype='int64') + ctx_n2 = fluid.layers.data(name='ctx_n2_data', shape=[1], dtype='int64') + ctx_n1 = fluid.layers.data(name='ctx_n1_data', shape=[1], dtype='int64') + ctx_0 = fluid.layers.data(name='ctx_0_data', shape=[1], dtype='int64') + ctx_p1 = fluid.layers.data(name='ctx_p1_data', shape=[1], dtype='int64') + ctx_p2 = fluid.layers.data(name='ctx_p2_data', shape=[1], dtype='int64') + mark = fluid.layers.data(name='mark_data', shape=[1], dtype='int64') + + predicate_embedding = fluid.layers.embedding( input=predicate, size=[pred_len, word_dim], dtype='float32', is_sparse=IS_SPARSE, param_attr={'name': 'vemb'}) - mark_embedding = layers.embedding( + mark_embedding = fluid.layers.embedding( input=mark, size=[mark_dict_len, mark_dim], dtype='float32', @@ -58,7 +54,7 @@ def db_lstm(): word_input = [word, ctx_n2, ctx_n1, ctx_0, ctx_p1, ctx_p2] emb_layers = [ - layers.embedding( + fluid.layers.embedding( size=[word_dict_len, word_dim], input=x, param_attr={'name': embedding_name, @@ -68,12 +64,12 @@ def db_lstm(): emb_layers.append(mark_embedding) hidden_0_layers = [ - layers.fc(input=emb, size=hidden_dim) for emb in emb_layers + fluid.layers.fc(input=emb, size=hidden_dim) for emb in emb_layers ] - hidden_0 = layers.sums(input=hidden_0_layers) + hidden_0 = fluid.layers.sums(input=hidden_0_layers) - lstm_0 = layers.dynamic_lstm( + lstm_0 = fluid.layers.dynamic_lstm( input=hidden_0, size=hidden_dim, candidate_activation='relu', @@ -84,12 +80,12 @@ def db_lstm(): input_tmp = [hidden_0, lstm_0] for i in range(1, depth): - mix_hidden = layers.sums(input=[ - layers.fc(input=input_tmp[0], size=hidden_dim), - layers.fc(input=input_tmp[1], size=hidden_dim) + mix_hidden = fluid.layers.sums(input=[ + fluid.layers.fc(input=input_tmp[0], size=hidden_dim), + fluid.layers.fc(input=input_tmp[1], size=hidden_dim) ]) - lstm = layers.dynamic_lstm( + lstm = fluid.layers.dynamic_lstm( input=mix_hidden, size=hidden_dim, candidate_activation='relu', @@ -99,9 +95,9 @@ def db_lstm(): input_tmp = [mix_hidden, lstm] - feature_out = layers.sums(input=[ - layers.fc(input=input_tmp[0], size=label_dict_len), - layers.fc(input=input_tmp[1], size=label_dict_len) + feature_out = fluid.layers.sums(input=[ + fluid.layers.fc(input=input_tmp[0], size=label_dict_len), + fluid.layers.fc(input=input_tmp[1], size=label_dict_len) ]) return feature_out @@ -116,7 +112,7 @@ def to_lodtensor(data, place): lod.append(cur_len) flattened_data = np.concatenate(data, axis=0).astype("int64") flattened_data = flattened_data.reshape([len(flattened_data), 1]) - res = core.LoDTensor() + res = fluid.LoDTensor() res.set(flattened_data, place) res.set_lod([lod]) return res @@ -125,29 +121,29 @@ def to_lodtensor(data, place): def main(): # define network topology feature_out = db_lstm() - target = layers.data(name='target', shape=[1], dtype='int64') - crf_cost = layers.linear_chain_crf( + target = fluid.layers.data(name='target', shape=[1], dtype='int64') + crf_cost = fluid.layers.linear_chain_crf( input=feature_out, label=target, param_attr={"name": 'crfw', "learning_rate": mix_hidden_lr}) - avg_cost = layers.mean(x=crf_cost) + avg_cost = fluid.layers.mean(x=crf_cost) # TODO(qiao) # 1. add crf_decode_layer and evaluator # 2. use other optimizer and check why out will be NAN - sgd_optimizer = SGDOptimizer(learning_rate=0.0001) - opts = sgd_optimizer.minimize(avg_cost) + sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.0001) + sgd_optimizer.minimize(avg_cost) train_data = paddle.batch( paddle.reader.shuffle( paddle.dataset.conll05.test(), buf_size=8192), batch_size=BATCH_SIZE) - place = core.CPUPlace() - exe = Executor(place) + place = fluid.CPUPlace() + exe = fluid.Executor(place) - exe.run(framework.default_startup_program()) + exe.run(fluid.default_startup_program()) - embedding_param = g_scope.find_var(embedding_name).get_tensor() + embedding_param = fluid.g_scope.find_var(embedding_name).get_tensor() embedding_param.set( load_parameter(conll05.get_embedding(), word_dict_len, word_dim), place) @@ -164,7 +160,7 @@ def main(): mark_data = to_lodtensor(map(lambda x: x[7], data), place) target = to_lodtensor(map(lambda x: x[8], data), place) - outs = exe.run(framework.default_main_program(), + outs = exe.run(fluid.default_main_program(), feed={ 'word_data': word_data, 'ctx_n2_data': ctx_n2_data, diff --git a/python/paddle/v2/fluid/tests/book/test_recognize_digits_conv.py b/python/paddle/v2/fluid/tests/book/test_recognize_digits_conv.py index 97f1f12724..ba686b56f8 100644 --- a/python/paddle/v2/fluid/tests/book/test_recognize_digits_conv.py +++ b/python/paddle/v2/fluid/tests/book/test_recognize_digits_conv.py @@ -1,23 +1,18 @@ +from __future__ import print_function import numpy as np import paddle.v2 as paddle -import paddle.v2.fluid.core as core -import paddle.v2.fluid.evaluator as evaluator -import paddle.v2.fluid.framework as framework -import paddle.v2.fluid.layers as layers -import paddle.v2.fluid.nets as nets -from paddle.v2.fluid.executor import Executor -from paddle.v2.fluid.optimizer import AdamOptimizer +import paddle.v2.fluid as fluid -images = layers.data(name='pixel', shape=[1, 28, 28], dtype='float32') -label = layers.data(name='label', shape=[1], dtype='int64') -conv_pool_1 = nets.simple_img_conv_pool( +images = fluid.layers.data(name='pixel', shape=[1, 28, 28], dtype='float32') +label = fluid.layers.data(name='label', shape=[1], dtype='int64') +conv_pool_1 = fluid.nets.simple_img_conv_pool( input=images, filter_size=5, num_filters=20, pool_size=2, pool_stride=2, act="relu") -conv_pool_2 = nets.simple_img_conv_pool( +conv_pool_2 = fluid.nets.simple_img_conv_pool( input=conv_pool_1, filter_size=5, num_filters=50, @@ -25,13 +20,13 @@ conv_pool_2 = nets.simple_img_conv_pool( pool_stride=2, act="relu") -predict = layers.fc(input=conv_pool_2, size=10, act="softmax") -cost = layers.cross_entropy(input=predict, label=label) -avg_cost = layers.mean(x=cost) -optimizer = AdamOptimizer(learning_rate=0.01, beta1=0.9, beta2=0.999) -opts = optimizer.minimize(avg_cost) +predict = fluid.layers.fc(input=conv_pool_2, size=10, act="softmax") +cost = fluid.layers.cross_entropy(input=predict, label=label) +avg_cost = fluid.layers.mean(x=cost) +optimizer = fluid.optimizer.Adam(learning_rate=0.01) +optimizer.minimize(avg_cost) -accuracy = evaluator.Accuracy(input=predict, label=label) +accuracy = fluid.evaluator.Accuracy(input=predict, label=label) BATCH_SIZE = 50 PASS_NUM = 3 @@ -40,10 +35,10 @@ train_reader = paddle.batch( paddle.dataset.mnist.train(), buf_size=500), batch_size=BATCH_SIZE) -place = core.CPUPlace() -exe = Executor(place) +place = fluid.CPUPlace() +exe = fluid.Executor(place) -exe.run(framework.default_startup_program()) +exe.run(fluid.default_startup_program()) for pass_id in range(PASS_NUM): accuracy.reset(exe) @@ -53,17 +48,10 @@ for pass_id in range(PASS_NUM): y_data = np.array(map(lambda x: x[1], data)).astype("int64") y_data = y_data.reshape([BATCH_SIZE, 1]) - tensor_img = core.LoDTensor() - tensor_y = core.LoDTensor() - tensor_img.set(img_data, place) - tensor_y.set(y_data, place) - - outs = exe.run(framework.default_main_program(), - feed={"pixel": tensor_img, - "label": tensor_y}, - fetch_list=[avg_cost] + accuracy.metrics) - loss = np.array(outs[0]) - acc = np.array(outs[1]) + loss, acc = exe.run(fluid.default_main_program(), + feed={"pixel": img_data, + "label": y_data}, + fetch_list=[avg_cost] + accuracy.metrics) pass_acc = accuracy.eval(exe) print("pass_id=" + str(pass_id) + " acc=" + str(acc) + " pass_acc=" + str(pass_acc)) diff --git a/python/paddle/v2/fluid/tests/book/test_recognize_digits_mlp.py b/python/paddle/v2/fluid/tests/book/test_recognize_digits_mlp.py index 7dbb34f5da..c96d186ffe 100644 --- a/python/paddle/v2/fluid/tests/book/test_recognize_digits_mlp.py +++ b/python/paddle/v2/fluid/tests/book/test_recognize_digits_mlp.py @@ -1,42 +1,39 @@ +from __future__ import print_function import numpy as np import paddle.v2 as paddle -import paddle.v2.fluid.core as core -import paddle.v2.fluid.framework as framework -import paddle.v2.fluid.layers as layers -import paddle.v2.fluid.evaluator as evaluator -from paddle.v2.fluid.io import get_inference_program -from paddle.v2.fluid.executor import Executor -from paddle.v2.fluid.initializer import UniformInitializer -from paddle.v2.fluid.optimizer import MomentumOptimizer -from paddle.v2.fluid.regularizer import L2DecayRegularizer +import paddle.v2.fluid as fluid BATCH_SIZE = 128 -image = layers.data(name='x', shape=[784], dtype='float32') +image = fluid.layers.data(name='x', shape=[784], dtype='float32') param_attr = { 'name': None, - 'initializer': UniformInitializer( - low=-1.0, high=1.0), - 'regularization': L2DecayRegularizer(0.0005 * BATCH_SIZE) + 'regularization': fluid.regularizer.L2Decay(0.0005 * BATCH_SIZE) } -hidden1 = layers.fc(input=image, size=128, act='relu', param_attr=param_attr) -hidden2 = layers.fc(input=hidden1, size=64, act='relu', param_attr=param_attr) +hidden1 = fluid.layers.fc(input=image, + size=128, + act='relu', + param_attr=param_attr) +hidden2 = fluid.layers.fc(input=hidden1, + size=64, + act='relu', + param_attr=param_attr) -predict = layers.fc(input=hidden2, - size=10, - act='softmax', - param_attr=param_attr) +predict = fluid.layers.fc(input=hidden2, + size=10, + act='softmax', + param_attr=param_attr) -label = layers.data(name='y', shape=[1], dtype='int64') +label = fluid.layers.data(name='y', shape=[1], dtype='int64') -cost = layers.cross_entropy(input=predict, label=label) -avg_cost = layers.mean(x=cost) +cost = fluid.layers.cross_entropy(input=predict, label=label) +avg_cost = fluid.layers.mean(x=cost) -optimizer = MomentumOptimizer(learning_rate=0.001, momentum=0.9) +optimizer = fluid.optimizer.Momentum(learning_rate=0.001, momentum=0.9) opts = optimizer.minimize(avg_cost) -accuracy = evaluator.Accuracy(input=predict, label=label) +accuracy = fluid.evaluator.Accuracy(input=predict, label=label) train_reader = paddle.batch( paddle.reader.shuffle( @@ -45,10 +42,10 @@ train_reader = paddle.batch( test_reader = paddle.batch(paddle.dataset.mnist.test(), batch_size=128) -place = core.CPUPlace() -exe = Executor(place) +place = fluid.CPUPlace() +exe = fluid.Executor(place) -exe.run(framework.default_startup_program()) +exe.run(fluid.default_startup_program()) PASS_NUM = 100 for pass_id in range(PASS_NUM): @@ -58,13 +55,13 @@ for pass_id in range(PASS_NUM): y_data = np.array(map(lambda x: x[1], data)).astype("int64") y_data = np.expand_dims(y_data, axis=1) - tensor_x = core.LoDTensor() + tensor_x = fluid.LoDTensor() tensor_x.set(x_data, place) - tensor_y = core.LoDTensor() + tensor_y = fluid.LoDTensor() tensor_y.set(y_data, place) - outs = exe.run(framework.default_main_program(), + outs = exe.run(fluid.default_main_program(), feed={'x': tensor_x, 'y': tensor_y}, fetch_list=[avg_cost] + accuracy.metrics) @@ -72,10 +69,10 @@ for pass_id in range(PASS_NUM): acc = np.array(outs[1]) pass_acc = accuracy.eval(exe) - test_accuracy = evaluator.Accuracy(input=predict, label=label) + test_accuracy = fluid.evaluator.Accuracy(input=predict, label=label) test_target = [avg_cost] + test_accuracy.metrics + test_accuracy.states - inference_program = get_inference_program(test_target) + inference_program = fluid.io.get_inference_program(test_target) test_accuracy.reset(exe) for data in test_reader(): @@ -83,18 +80,10 @@ for pass_id in range(PASS_NUM): y_data = np.array(map(lambda x: x[1], data)).astype("int64") y_data = np.expand_dims(y_data, axis=1) - tensor_x = core.LoDTensor() - tensor_x.set(x_data, place) - - tensor_y = core.LoDTensor() - tensor_y.set(y_data, place) - - outs = exe.run(inference_program, - feed={'x': tensor_x, - 'y': tensor_y}, - fetch_list=[avg_cost] + test_accuracy.metrics) - out = np.array(outs[0]) - acc = np.array(outs[1]) + out, acc = exe.run(inference_program, + feed={'x': x_data, + 'y': y_data}, + fetch_list=[avg_cost] + test_accuracy.metrics) test_pass_acc = test_accuracy.eval(exe) print("pass_id=" + str(pass_id) + " train_cost=" + str( diff --git a/python/paddle/v2/fluid/tests/book/test_understand_sentiment_conv.py b/python/paddle/v2/fluid/tests/book/test_understand_sentiment_conv.py index 054cdb324c..be875a952b 100644 --- a/python/paddle/v2/fluid/tests/book/test_understand_sentiment_conv.py +++ b/python/paddle/v2/fluid/tests/book/test_understand_sentiment_conv.py @@ -1,39 +1,34 @@ +from __future__ import print_function import numpy as np import paddle.v2 as paddle -import paddle.v2.fluid.core as core -import paddle.v2.fluid.evaluator as evaluator -import paddle.v2.fluid.framework as framework -import paddle.v2.fluid.layers as layers -import paddle.v2.fluid.nets as nets -from paddle.v2.fluid.executor import Executor -from paddle.v2.fluid.optimizer import AdamOptimizer +import paddle.v2.fluid as fluid def convolution_net(input_dim, class_dim=2, emb_dim=32, hid_dim=32): - data = layers.data(name="words", shape=[1], dtype="int64") - label = layers.data(name="label", shape=[1], dtype="int64") + data = fluid.layers.data(name="words", shape=[1], dtype="int64") + label = fluid.layers.data(name="label", shape=[1], dtype="int64") - emb = layers.embedding(input=data, size=[input_dim, emb_dim]) - conv_3 = nets.sequence_conv_pool( + emb = fluid.layers.embedding(input=data, size=[input_dim, emb_dim]) + conv_3 = fluid.nets.sequence_conv_pool( input=emb, num_filters=hid_dim, filter_size=3, act="tanh", pool_type="sqrt") - conv_4 = nets.sequence_conv_pool( + conv_4 = fluid.nets.sequence_conv_pool( input=emb, num_filters=hid_dim, filter_size=4, act="tanh", pool_type="sqrt") - prediction = layers.fc(input=[conv_3, conv_4], - size=class_dim, - act="softmax") - cost = layers.cross_entropy(input=prediction, label=label) - avg_cost = layers.mean(x=cost) - adam_optimizer = AdamOptimizer(learning_rate=0.002) + prediction = fluid.layers.fc(input=[conv_3, conv_4], + size=class_dim, + act="softmax") + cost = fluid.layers.cross_entropy(input=prediction, label=label) + avg_cost = fluid.layers.mean(x=cost) + adam_optimizer = fluid.optimizer.Adam(learning_rate=0.002) adam_optimizer.minimize(avg_cost) - accuracy = evaluator.Accuracy(input=prediction, label=label) + accuracy = fluid.evaluator.Accuracy(input=prediction, label=label) return avg_cost, accuracy, accuracy.metrics[0] @@ -46,7 +41,7 @@ def to_lodtensor(data, place): lod.append(cur_len) flattened_data = np.concatenate(data, axis=0).astype("int64") flattened_data = flattened_data.reshape([len(flattened_data), 1]) - res = core.LoDTensor() + res = fluid.LoDTensor() res.set(flattened_data, place) res.set_lod([lod]) return res @@ -67,10 +62,10 @@ def main(): paddle.reader.shuffle( paddle.dataset.imdb.train(word_dict), buf_size=1000), batch_size=BATCH_SIZE) - place = core.CPUPlace() - exe = Executor(place) + place = fluid.CPUPlace() + exe = fluid.Executor(place) - exe.run(framework.default_startup_program()) + exe.run(fluid.default_startup_program()) for pass_id in xrange(PASS_NUM): accuracy.reset(exe) @@ -80,15 +75,14 @@ def main(): label = np.array(map(lambda x: x[1], data)).astype("int64") label = label.reshape([BATCH_SIZE, 1]) - tensor_label = core.LoDTensor() + tensor_label = fluid.LoDTensor() tensor_label.set(label, place) - outs = exe.run(framework.default_main_program(), - feed={"words": tensor_words, - "label": tensor_label}, - fetch_list=[cost, acc_out]) - cost_val = np.array(outs[0]) - acc_val = np.array(outs[1]) + cost_val, acc_val = exe.run( + fluid.default_main_program(), + feed={"words": tensor_words, + "label": tensor_label}, + fetch_list=[cost, acc_out]) pass_acc = accuracy.eval(exe) print("cost=" + str(cost_val) + " acc=" + str(acc_val) + " pass_acc=" + str(pass_acc)) diff --git a/python/paddle/v2/fluid/tests/book/test_understand_sentiment_dynamic_lstm.py b/python/paddle/v2/fluid/tests/book/test_understand_sentiment_dynamic_lstm.py index 854ef82614..094a3cdcda 100644 --- a/python/paddle/v2/fluid/tests/book/test_understand_sentiment_dynamic_lstm.py +++ b/python/paddle/v2/fluid/tests/book/test_understand_sentiment_dynamic_lstm.py @@ -1,11 +1,6 @@ import numpy as np import paddle.v2 as paddle -import paddle.v2.fluid.core as core -import paddle.v2.fluid.evaluator as evaluator -import paddle.v2.fluid.framework as framework -import paddle.v2.fluid.layers as layers -from paddle.v2.fluid.executor import Executor -from paddle.v2.fluid.optimizer import AdamOptimizer +import paddle.v2.fluid as fluid def stacked_lstm_net(input_dim, @@ -14,35 +9,35 @@ def stacked_lstm_net(input_dim, hid_dim=512, stacked_num=3): assert stacked_num % 2 == 1 - data = layers.data(name="words", shape=[1], dtype="int64") - label = layers.data(name="label", shape=[1], dtype="int64") + data = fluid.layers.data(name="words", shape=[1], dtype="int64") + label = fluid.layers.data(name="label", shape=[1], dtype="int64") - emb = layers.embedding(input=data, size=[input_dim, emb_dim]) + emb = fluid.layers.embedding(input=data, size=[input_dim, emb_dim]) # add bias attr # TODO(qijun) linear act - fc1 = layers.fc(input=emb, size=hid_dim) - lstm1, cell1 = layers.dynamic_lstm(input=fc1, size=hid_dim) + fc1 = fluid.layers.fc(input=emb, size=hid_dim) + lstm1, cell1 = fluid.layers.dynamic_lstm(input=fc1, size=hid_dim) inputs = [fc1, lstm1] for i in range(2, stacked_num + 1): - fc = layers.fc(input=inputs, size=hid_dim) - lstm, cell = layers.dynamic_lstm( + fc = fluid.layers.fc(input=inputs, size=hid_dim) + lstm, cell = fluid.layers.dynamic_lstm( input=fc, size=hid_dim, is_reverse=(i % 2) == 0) inputs = [fc, lstm] - fc_last = layers.sequence_pool(input=inputs[0], pool_type='max') - lstm_last = layers.sequence_pool(input=inputs[1], pool_type='max') + fc_last = fluid.layers.sequence_pool(input=inputs[0], pool_type='max') + lstm_last = fluid.layers.sequence_pool(input=inputs[1], pool_type='max') - prediction = layers.fc(input=[fc_last, lstm_last], - size=class_dim, - act='softmax') - cost = layers.cross_entropy(input=prediction, label=label) - avg_cost = layers.mean(x=cost) - adam_optimizer = AdamOptimizer(learning_rate=0.002) + prediction = fluid.layers.fc(input=[fc_last, lstm_last], + size=class_dim, + act='softmax') + cost = fluid.layers.cross_entropy(input=prediction, label=label) + avg_cost = fluid.layers.mean(x=cost) + adam_optimizer = fluid.optimizer.Adam(learning_rate=0.002) adam_optimizer.minimize(avg_cost) - accuracy = evaluator.Accuracy(input=prediction, label=label) + accuracy = fluid.evaluator.Accuracy(input=prediction, label=label) return avg_cost, accuracy, accuracy.metrics[0] @@ -55,7 +50,7 @@ def to_lodtensor(data, place): lod.append(cur_len) flattened_data = np.concatenate(data, axis=0).astype("int64") flattened_data = flattened_data.reshape([len(flattened_data), 1]) - res = core.LoDTensor() + res = fluid.LoDTensor() res.set(flattened_data, place) res.set_lod([lod]) return res @@ -77,10 +72,10 @@ def main(): paddle.reader.shuffle( paddle.dataset.imdb.train(word_dict), buf_size=1000), batch_size=BATCH_SIZE) - place = core.CPUPlace() - exe = Executor(place) + place = fluid.CPUPlace() + exe = fluid.Executor(place) - exe.run(framework.default_startup_program()) + exe.run(fluid.default_startup_program()) for pass_id in xrange(PASS_NUM): accuracy.reset(exe) @@ -90,15 +85,14 @@ def main(): label = np.array(map(lambda x: x[1], data)).astype("int64") label = label.reshape([BATCH_SIZE, 1]) - tensor_label = core.LoDTensor() + tensor_label = fluid.LoDTensor() tensor_label.set(label, place) - outs = exe.run(framework.default_main_program(), - feed={"words": tensor_words, - "label": tensor_label}, - fetch_list=[cost, acc_out]) - cost_val = np.array(outs[0]) - acc_val = np.array(outs[1]) + cost_val, acc_val = exe.run( + fluid.default_main_program(), + feed={"words": tensor_words, + "label": tensor_label}, + fetch_list=[cost, acc_out]) pass_acc = accuracy.eval(exe) print("cost=" + str(cost_val) + " acc=" + str(acc_val) + " pass_acc=" + str(pass_acc)) diff --git a/python/paddle/v2/fluid/tests/book/test_understand_sentiment_lstm.py b/python/paddle/v2/fluid/tests/book/test_understand_sentiment_lstm.py index 8aebeba653..b247932033 100644 --- a/python/paddle/v2/fluid/tests/book/test_understand_sentiment_lstm.py +++ b/python/paddle/v2/fluid/tests/book/test_understand_sentiment_lstm.py @@ -1,40 +1,39 @@ import numpy as np import paddle.v2 as paddle -import paddle.v2.fluid.core as core -import paddle.v2.fluid.framework as framework -import paddle.v2.fluid.layers as layers -from paddle.v2.fluid.executor import Executor -from paddle.v2.fluid.optimizer import AdamOptimizer +import paddle.v2.fluid as fluid def lstm_net(dict_dim, class_dim=2, emb_dim=32, seq_len=80, batch_size=50): - data = layers.data( + data = fluid.layers.data( name="words", shape=[seq_len * batch_size, 1], append_batch_size=False, dtype="int64") - label = layers.data( + label = fluid.layers.data( name="label", shape=[batch_size, 1], append_batch_size=False, dtype="int64") - emb = layers.embedding(input=data, size=[dict_dim, emb_dim]) - emb = layers.reshape(x=emb, shape=[batch_size, seq_len, emb_dim]) - emb = layers.transpose(x=emb, axis=[1, 0, 2]) + emb = fluid.layers.embedding(input=data, size=[dict_dim, emb_dim]) + emb = fluid.layers.reshape(x=emb, shape=[batch_size, seq_len, emb_dim]) + emb = fluid.layers.transpose(x=emb, axis=[1, 0, 2]) - c_pre_init = layers.fill_constant( + c_pre_init = fluid.layers.fill_constant( dtype=emb.dtype, shape=[batch_size, emb_dim], value=0.0) - layer_1_out = layers.lstm(emb, c_pre_init=c_pre_init, hidden_dim=emb_dim) - layer_1_out = layers.transpose(x=layer_1_out, axis=[1, 0, 2]) + layer_1_out = fluid.layers.lstm( + emb, c_pre_init=c_pre_init, hidden_dim=emb_dim) + layer_1_out = fluid.layers.transpose(x=layer_1_out, axis=[1, 0, 2]) - prediction = layers.fc(input=layer_1_out, size=class_dim, act="softmax") - cost = layers.cross_entropy(input=prediction, label=label) + prediction = fluid.layers.fc(input=layer_1_out, + size=class_dim, + act="softmax") + cost = fluid.layers.cross_entropy(input=prediction, label=label) - avg_cost = layers.mean(x=cost) - adam_optimizer = AdamOptimizer(learning_rate=0.002) - opts = adam_optimizer.minimize(avg_cost) - acc = layers.accuracy(input=prediction, label=label) + avg_cost = fluid.layers.mean(x=cost) + adam_optimizer = fluid.optimizer.Adam(learning_rate=0.002) + adam_optimizer.minimize(avg_cost) + acc = fluid.layers.accuracy(input=prediction, label=label) return avg_cost, acc @@ -48,7 +47,7 @@ def to_lodtensor(data, place): lod.append(cur_len) flattened_data = np.concatenate(data, axis=0).astype("int64") flattened_data = flattened_data.reshape([len(flattened_data), 1]) - res = core.LoDTensor() + res = fluid.LoDTensor() res.set(flattened_data, place) res.set_lod([lod]) return res @@ -65,7 +64,7 @@ def prepare_feed_data(data, place): label = np.array(map(lambda x: x[1], data)).astype("int64") label = label.reshape([len(label), 1]) - tensor_label = core.LoDTensor() + tensor_label = fluid.LoDTensor() tensor_label.set(label, place) return tensor_words, tensor_label @@ -86,17 +85,17 @@ def main(): paddle.reader.shuffle( paddle.dataset.imdb.train(word_dict), buf_size=BATCH_SIZE * 10), batch_size=BATCH_SIZE) - place = core.CPUPlace() - exe = Executor(place) + place = fluid.CPUPlace() + exe = fluid.Executor(place) - exe.run(framework.default_startup_program()) + exe.run(fluid.default_startup_program()) for pass_id in xrange(PASS_NUM): for data in train_data(): chopped_data = chop_data(data) tensor_words, tensor_label = prepare_feed_data(chopped_data, place) - outs = exe.run(framework.default_main_program(), + outs = exe.run(fluid.default_main_program(), feed={"words": tensor_words, "label": tensor_label}, fetch_list=[cost, acc]) diff --git a/python/paddle/v2/fluid/tests/book/test_word2vec.py b/python/paddle/v2/fluid/tests/book/test_word2vec.py index 0629e1cab7..b0cd1a518c 100644 --- a/python/paddle/v2/fluid/tests/book/test_word2vec.py +++ b/python/paddle/v2/fluid/tests/book/test_word2vec.py @@ -1,10 +1,6 @@ import numpy as np import paddle.v2 as paddle -import paddle.v2.fluid.core as core -import paddle.v2.fluid.framework as framework -import paddle.v2.fluid.layers as layers -from paddle.v2.fluid.executor import Executor -from paddle.v2.fluid.optimizer import SGDOptimizer +import paddle.v2.fluid as fluid PASS_NUM = 100 EMBED_SIZE = 32 @@ -16,57 +12,57 @@ IS_SPARSE = True word_dict = paddle.dataset.imikolov.build_dict() dict_size = len(word_dict) -first_word = layers.data(name='firstw', shape=[1], dtype='int64') -second_word = layers.data(name='secondw', shape=[1], dtype='int64') -third_word = layers.data(name='thirdw', shape=[1], dtype='int64') -forth_word = layers.data(name='forthw', shape=[1], dtype='int64') -next_word = layers.data(name='nextw', shape=[1], dtype='int64') +first_word = fluid.layers.data(name='firstw', shape=[1], dtype='int64') +second_word = fluid.layers.data(name='secondw', shape=[1], dtype='int64') +third_word = fluid.layers.data(name='thirdw', shape=[1], dtype='int64') +forth_word = fluid.layers.data(name='forthw', shape=[1], dtype='int64') +next_word = fluid.layers.data(name='nextw', shape=[1], dtype='int64') -embed_first = layers.embedding( +embed_first = fluid.layers.embedding( input=first_word, size=[dict_size, EMBED_SIZE], dtype='float32', is_sparse=IS_SPARSE, param_attr={'name': 'shared_w'}) -embed_second = layers.embedding( +embed_second = fluid.layers.embedding( input=second_word, size=[dict_size, EMBED_SIZE], dtype='float32', is_sparse=IS_SPARSE, param_attr={'name': 'shared_w'}) -embed_third = layers.embedding( +embed_third = fluid.layers.embedding( input=third_word, size=[dict_size, EMBED_SIZE], dtype='float32', is_sparse=IS_SPARSE, param_attr={'name': 'shared_w'}) -embed_forth = layers.embedding( +embed_forth = fluid.layers.embedding( input=forth_word, size=[dict_size, EMBED_SIZE], dtype='float32', is_sparse=IS_SPARSE, param_attr={'name': 'shared_w'}) -concat_embed = layers.concat( +concat_embed = fluid.layers.concat( input=[embed_first, embed_second, embed_third, embed_forth], axis=1) -hidden1 = layers.fc(input=concat_embed, size=HIDDEN_SIZE, act='sigmoid') -predict_word = layers.fc(input=hidden1, size=dict_size, act='softmax') -cost = layers.cross_entropy(input=predict_word, label=next_word) -avg_cost = layers.mean(x=cost) -sgd_optimizer = SGDOptimizer(learning_rate=0.001) -opts = sgd_optimizer.minimize(avg_cost) +hidden1 = fluid.layers.fc(input=concat_embed, size=HIDDEN_SIZE, act='sigmoid') +predict_word = fluid.layers.fc(input=hidden1, size=dict_size, act='softmax') +cost = fluid.layers.cross_entropy(input=predict_word, label=next_word) +avg_cost = fluid.layers.mean(x=cost) +sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001) +sgd_optimizer.minimize(avg_cost) train_reader = paddle.batch( paddle.dataset.imikolov.train(word_dict, N), BATCH_SIZE) -place = core.CPUPlace() -exe = Executor(place) +place = fluid.CPUPlace() +exe = fluid.Executor(place) # fix https://github.com/PaddlePaddle/Paddle/issues/5434 then remove # below exit line. exit(0) -exe.run(framework.default_startup_program()) +exe.run(fluid.default_startup_program()) for pass_id in range(PASS_NUM): for data in train_reader(): @@ -74,36 +70,15 @@ for pass_id in range(PASS_NUM): input_data = map(lambda x: np.array(x).astype("int64"), input_data) input_data = map(lambda x: np.expand_dims(x, axis=1), input_data) - first_data = input_data[0] - first_tensor = core.LoDTensor() - first_tensor.set(first_data, place) - - second_data = input_data[1] - second_tensor = core.LoDTensor() - second_tensor.set(second_data, place) - - third_data = input_data[2] - third_tensor = core.LoDTensor() - third_tensor.set(third_data, place) - - forth_data = input_data[3] - forth_tensor = core.LoDTensor() - forth_tensor.set(forth_data, place) - - next_data = input_data[4] - next_tensor = core.LoDTensor() - next_tensor.set(next_data, place) - - outs = exe.run(framework.default_main_program(), - feed={ - 'firstw': first_tensor, - 'secondw': second_tensor, - 'thirdw': third_tensor, - 'forthw': forth_tensor, - 'nextw': next_tensor - }, - fetch_list=[avg_cost]) - out = np.array(outs[0]) - if out[0] < 10.0: + avg_cost_np = exe.run(fluid.default_main_program(), + feed={ + 'firstw': input_data[0], + 'secondw': input_data[1], + 'thirdw': input_data[2], + 'forthw': input_data[3], + 'nextw': input_data[4] + }, + fetch_list=[avg_cost]) + if avg_cost_np[0] < 10.0: exit(0) # if avg cost less than 10.0, we think our code is good. exit(1) From 33fa2dfbdeb1f1a2f10b50960a914582bfcb9276 Mon Sep 17 00:00:00 2001 From: fengjiayi Date: Mon, 27 Nov 2017 14:17:36 +0800 Subject: [PATCH 13/17] Compelete max_sequence_len_op (#5913) --- paddle/operators/CMakeLists.txt | 2 + paddle/operators/max_sequence_len_op.cc | 66 +++++++++++++++++++ python/paddle/v2/fluid/layers.py | 14 ++++ .../fluid/tests/test_lod_tensor_array_ops.py | 47 ++++++++++--- 4 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 paddle/operators/max_sequence_len_op.cc diff --git a/paddle/operators/CMakeLists.txt b/paddle/operators/CMakeLists.txt index 05d4ea2606..a4c4374cf2 100644 --- a/paddle/operators/CMakeLists.txt +++ b/paddle/operators/CMakeLists.txt @@ -200,6 +200,7 @@ set(DEPS_OPS lod_rank_table_op lod_tensor_to_array_op array_to_lod_tensor_op + max_sequence_len_op lstm_op tensor_array_read_write_op gru_op @@ -222,6 +223,7 @@ op_library(pool_with_index_op DEPS pooling) op_library(lod_rank_table_op SRCS lod_rank_table_op.cc DEPS lod_rank_table) op_library(lod_tensor_to_array_op SRCS lod_tensor_to_array_op.cc DEPS lod_rank_table_op) op_library(array_to_lod_tensor_op SRCS array_to_lod_tensor_op.cc DEPS lod_rank_table_op) +op_library(max_sequence_len_op SRCS max_sequence_len_op.cc DEPS lod_rank_table) op_library(tensor_array_read_write_op SRCS tensor_array_read_write_op.cc) if(WITH_GPU) op_library(nccl_op DEPS nccl_common) diff --git a/paddle/operators/max_sequence_len_op.cc b/paddle/operators/max_sequence_len_op.cc new file mode 100644 index 0000000000..798022c9dd --- /dev/null +++ b/paddle/operators/max_sequence_len_op.cc @@ -0,0 +1,66 @@ +/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +#include "paddle/framework/lod_rank_table.h" +#include "paddle/framework/op_registry.h" +#include "paddle/framework/operator.h" + +namespace paddle { +namespace operators { + +class MaxSeqenceLenOp : public framework::OperatorBase { + public: + MaxSeqenceLenOp(const std::string &type, + const framework::VariableNameMap &inputs, + const framework::VariableNameMap &outputs, + const framework::AttributeMap &attrs) + : OperatorBase(type, inputs, outputs, attrs) {} + + void Run(const framework::Scope &scope, + const platform::DeviceContext &dev_ctx) const override { + auto &rank_table = + scope.FindVar(Input("RankTable"))->Get(); + auto *out = + scope.FindVar(Output("Out"))->GetMutable(); + int64_t *out_ptr = out->mutable_data({1}, platform::CPUPlace()); + *out_ptr = rank_table.items()[0].length; + } +}; + +class MaxSeqenceLenOpProtoMaker : public framework::OpProtoAndCheckerMaker { + public: + MaxSeqenceLenOpProtoMaker(framework::OpProto *proto, + framework::OpAttrChecker *op_checker) + : OpProtoAndCheckerMaker(proto, op_checker) { + AddInput("RankTable", "The lod_rank_table."); + AddOutput("Out", "The max sequence length."); + AddComment( + R"DOC(Calculate the max sequence length through lod_rank_table.)DOC"); + } +}; + +class MaxSeqenceLenInferShape : public framework::InferShapeBase { + public: + void operator()(framework::InferShapeContext *context) const override { + PADDLE_ENFORCE(context->HasInput("RankTable")); + context->SetOutputDim("Out", {1}); + } +}; +} // namespace operators +} // namespace paddle + +REGISTER_OPERATOR(max_sequence_len, paddle::operators::MaxSeqenceLenOp, + paddle::operators::MaxSeqenceLenOpProtoMaker, + paddle::operators::MaxSeqenceLenInferShape, + paddle::framework::EmptyGradOpMaker); diff --git a/python/paddle/v2/fluid/layers.py b/python/paddle/v2/fluid/layers.py index db388c142f..28bc3d214b 100644 --- a/python/paddle/v2/fluid/layers.py +++ b/python/paddle/v2/fluid/layers.py @@ -1354,6 +1354,20 @@ def lod_rank_table(x, level=0, main_program=None): return table +def max_sequence_len(rank_table, main_program=None): + """ + This function creates an operator to calculate the length of + max seqence through input rank_table(should be a lod_rank_table) + """ + helper = LayerHelper("max_seqence_len", **locals()) + res = helper.create_tmp_variable(dtype="int64") + helper.append_op( + type="max_sequence_len", + inputs={"RankTable": rank_table}, + outputs={"Out": res}) + return res + + def topk(input, k, main_program=None, startup_program=None): helper = LayerHelper('topk', **locals()) topk_out = helper.create_tmp_variable(dtype=input.data_type) diff --git a/python/paddle/v2/fluid/tests/test_lod_tensor_array_ops.py b/python/paddle/v2/fluid/tests/test_lod_tensor_array_ops.py index 032922a08a..0a916a55bc 100644 --- a/python/paddle/v2/fluid/tests/test_lod_tensor_array_ops.py +++ b/python/paddle/v2/fluid/tests/test_lod_tensor_array_ops.py @@ -18,7 +18,11 @@ class TestCPULoDTensorArrayOps(unittest.TestCase): tensor.set_lod([[0, 3, 9, 10]]) expect = map(lambda x: numpy.array(x).astype('int32'), [[3, 0, 9], [4, 1], [5, 2], [6], [7], [8]]) - self.main(tensor=tensor, expect_array=expect, expect_lod=[] * 6) + self.main( + tensor=tensor, + expect_array=expect, + expect_lod=[] * 6, + expect_max_len=6) def test_lod_tensor_to_array_level_0_empty_seq(self): tensor = core.LoDTensor() @@ -27,7 +31,11 @@ class TestCPULoDTensorArrayOps(unittest.TestCase): tensor.set_lod([[0, 3, 9, 9, 10]]) expect = map(lambda x: numpy.array(x).astype('int32'), [[3, 0, 9], [4, 1], [5, 2], [6], [7], [8]]) - self.main(tensor=tensor, expect_array=expect, expect_lod=[] * 6) + self.main( + tensor=tensor, + expect_array=expect, + expect_lod=[] * 6, + expect_max_len=6) def test_lod_tensor_to_array_level_1(self): tensor = core.LoDTensor() @@ -44,7 +52,11 @@ class TestCPULoDTensorArrayOps(unittest.TestCase): ] lod = [[[0, 2, 5]], [[0, 6, 12]], [[0, 3]]] - self.main(tensor=tensor, expect_array=expect, expect_lod=lod) + self.main( + tensor=tensor, + expect_array=expect, + expect_lod=lod, + expect_max_len=3) def test_lod_tensor_to_array_level_1_empty_seq(self): tensor = core.LoDTensor() @@ -63,7 +75,11 @@ class TestCPULoDTensorArrayOps(unittest.TestCase): ] lod = [[[0, 5, 8, 8, 15]], [[0, 2, 6, 7, 8]], [[0, 2, 6]], [[0, 2]]] - self.main(tensor=tensor, expect_array=expect, expect_lod=lod) + self.main( + tensor=tensor, + expect_array=expect, + expect_lod=lod, + expect_max_len=4) def test_lod_tensor_to_array_level_2(self): tensor = core.LoDTensor() @@ -80,7 +96,11 @@ class TestCPULoDTensorArrayOps(unittest.TestCase): ] lod = [[[0, 1, 3, 4], [0, 1, 4, 8, 12]], [[0, 4, 7], [0, 1, 5, 9, 17, 21, 27, 31]], [[0, 2], [0, 6, 7]]] - self.main(tensor=tensor, expect_array=expect, expect_lod=lod) + self.main( + tensor=tensor, + expect_array=expect, + expect_lod=lod, + expect_max_len=3) def test_lod_tensor_to_array_level_2_skip_level(self): tensor = core.LoDTensor() @@ -88,14 +108,21 @@ class TestCPULoDTensorArrayOps(unittest.TestCase): numpy.arange(50).reshape(50, 1).astype('int32'), self.place()) tensor.set_lod([[0, 2, 5, 6], [0, 2, 5, 6, 10, 12, 13], [0, 3, 7, 11, 17, 21, 22, 23, 27, 31, 39, 45, 46, 50]]) - self.main(tensor=tensor, expect_array=None, expect_lod=None, level=1) - - def main(self, tensor, expect_array, expect_lod, level=0): + self.main( + tensor=tensor, + expect_array=None, + expect_lod=None, + expect_max_len=4, + level=1) + + def main(self, tensor, expect_array, expect_lod, expect_max_len, level=0): place = self.place() program = Program() x = layers.data(name='x', shape=[10], main_program=program) x.persistable = True table = layers.lod_rank_table(x, level=level, main_program=program) + max_len = layers.max_sequence_len(table, main_program=program) + max_len.persistable = True array = layers.lod_tensor_to_array(x, table, main_program=program) array.persistable = True @@ -110,6 +137,10 @@ class TestCPULoDTensorArrayOps(unittest.TestCase): self.check_array_same(array, expect_array, expect_lod) self.check_tensor_same(scope.find_var(result.name).get_tensor(), tensor) + self.assertEqual( + numpy.array(scope.find_var(max_len.name).get_tensor())[0], + expect_max_len) + def check_array_same(self, array, expect_tensor, expect_lod): self.assertEqual(len(expect_tensor), len(array)) for i, exp in enumerate(zip(expect_tensor, expect_lod)): From c9a96575d5aa89d143025d36ce105b05ed572be3 Mon Sep 17 00:00:00 2001 From: Qiao Longfei Date: Mon, 27 Nov 2017 16:42:08 +0800 Subject: [PATCH 14/17] py_test and test_image_classification_train support argument (#5934) * py_test support argument, test_image_classification_train support argument * use REMOVE_ITEM to rm item from list in cmake --- cmake/generic.cmake | 6 +++--- .../paddle/v2/fluid/tests/book/CMakeLists.txt | 6 ++++++ .../book/test_image_classification_train.py | 19 ++++++++++++++----- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/cmake/generic.cmake b/cmake/generic.cmake index 404717187d..7b82d409a3 100644 --- a/cmake/generic.cmake +++ b/cmake/generic.cmake @@ -459,11 +459,11 @@ function(py_test TARGET_NAME) if(WITH_TESTING) set(options STATIC static SHARED shared) set(oneValueArgs "") - set(multiValueArgs SRCS DEPS) - cmake_parse_arguments(py_test "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + set(multiValueArgs SRCS DEPS ARGS) + cmake_parse_arguments(py_test "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) add_test(NAME ${TARGET_NAME} COMMAND env PYTHONPATH=${PADDLE_PYTHON_BUILD_DIR}/lib-python - ${PYTHON_EXECUTABLE} ${py_test_SRCS} + ${PYTHON_EXECUTABLE} -u ${py_test_SRCS} ${py_test_ARGS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endif() endfunction() diff --git a/python/paddle/v2/fluid/tests/book/CMakeLists.txt b/python/paddle/v2/fluid/tests/book/CMakeLists.txt index 4d7664469e..a35abe3e0c 100644 --- a/python/paddle/v2/fluid/tests/book/CMakeLists.txt +++ b/python/paddle/v2/fluid/tests/book/CMakeLists.txt @@ -1,5 +1,11 @@ file(GLOB TEST_OPS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "test_*.py") string(REPLACE ".py" "" TEST_OPS "${TEST_OPS}") + +list(REMOVE_ITEM TEST_OPS test_image_classification_train) +py_test(test_image_classification_train_resnet SRCS test_image_classification_train.py ARGS resnet) +py_test(test_image_classification_train_vgg SRCS test_image_classification_train.py ARGS vgg) + +# default test foreach(src ${TEST_OPS}) py_test(${src} SRCS ${src}.py) endforeach() diff --git a/python/paddle/v2/fluid/tests/book/test_image_classification_train.py b/python/paddle/v2/fluid/tests/book/test_image_classification_train.py index 690c533971..cc45b10b90 100644 --- a/python/paddle/v2/fluid/tests/book/test_image_classification_train.py +++ b/python/paddle/v2/fluid/tests/book/test_image_classification_train.py @@ -1,7 +1,9 @@ from __future__ import print_function + import numpy as np import paddle.v2 as paddle import paddle.v2.fluid as fluid +import sys def resnet_cifar10(input, depth=32): @@ -80,11 +82,18 @@ data_shape = [3, 32, 32] images = fluid.layers.data(name='pixel', shape=data_shape, dtype='float32') label = fluid.layers.data(name='label', shape=[1], dtype='int64') -# Add neural network config -# option 1. resnet -# net = resnet_cifar10(images, 32) -# option 2. vgg -net = vgg16_bn_drop(images) +net_type = "vgg" +if len(sys.argv) >= 2: + net_type = sys.argv[1] + +if net_type == "vgg": + print("train vgg net") + net = vgg16_bn_drop(images) +elif net_type == "resnet": + print("train resnet") + net = resnet_cifar10(images, 32) +else: + raise ValueError("%s network is not supported" % net_type) predict = fluid.layers.fc(input=net, size=classdim, act='softmax') cost = fluid.layers.cross_entropy(input=predict, label=label) From d89ff5b6144461a967bd73fa739d251691f2a8bc Mon Sep 17 00:00:00 2001 From: Yu Yang Date: Mon, 27 Nov 2017 17:09:07 +0800 Subject: [PATCH 15/17] Restore the param infos in Program.clone() (#5873) * Restore the param infos in Program.clone() The Program.clone only clone the variables and ops in the program into a new program. However, the information of Parameter is not clone. So we need restore the information of Parameters. Fix #5871 * Follow comments * Fix CI * Fix CI * Fix CI --- python/paddle/v2/fluid/framework.py | 56 +++++++++++++++++++- python/paddle/v2/fluid/tests/test_program.py | 24 +++++++-- 2 files changed, 75 insertions(+), 5 deletions(-) diff --git a/python/paddle/v2/fluid/framework.py b/python/paddle/v2/fluid/framework.py index 9a62698b86..6d6ea23f55 100644 --- a/python/paddle/v2/fluid/framework.py +++ b/python/paddle/v2/fluid/framework.py @@ -395,7 +395,11 @@ class Block(object): return v def all_parameters(self): - return {v for k, v in self.vars.iteritems() if isinstance(v, Parameter)} + return list(self.iter_parameters()) + + def iter_parameters(self): + return (item[1] for item in self.vars.iteritems() + if isinstance(item[1], Parameter)) def create_var(self, *args, **kwargs): var = Variable(self, *args, **kwargs) @@ -469,6 +473,37 @@ class Block(object): for index in range(len(self.ops)): assert self.ops[index].desc == ops_in_cpp[index] + def copy_param_info_from(self, other): + """ + Copy the information of parameters from other block + Args: + other(Block): other block + + Returns: + None + """ + if not isinstance(other, Block): + raise TypeError("copy_param_info_from should be invoked with Block") + for p in other.iter_parameters(): + assert isinstance(p, Parameter) + v = self.vars.get(p.name, None) + if v is None: + raise ValueError("copy_param_info_from should be invoked with " + "same topology") + assert isinstance(v, Variable) + new_p = Parameter( + block=self, + shape=v.shape, + dtype=v.dtype, + type=v.type, + lod_level=v.lod_level, + stop_gradient=p.stop_gradient, + trainable=p.trainable, + optimize_attr=p.optimize_attr, + regularizer=p.regularizer, + name=v.name) + self.vars[new_p.name] = new_p + class Program(object): def __init__(self): @@ -489,6 +524,7 @@ class Program(object): p.desc = core.ProgramDesc(self.desc) p.blocks = [Block(p, i) for i in xrange(self.desc.num_blocks())] p.sync_with_cpp() + p.copy_param_info_from(self) return p def prune(self, targets): @@ -572,6 +608,24 @@ class Program(object): for block in self.blocks: block.sync_with_cpp() + def copy_param_info_from(self, other): + """ + Copy the information of parameters from other program. + Args: + other(Program): Other program + + Returns: + None + """ + if not isinstance(other, Program): + raise TypeError("copy_param_info_from should be invoked with " + "Program") + + if len(self.blocks) != len(other.blocks): + raise ValueError("copy_param_info_from should be invoked with two " + "program, with represent the same topology") + self.global_block().copy_param_info_from(other.global_block()) + def list_vars(self): for each_block in self.blocks: for each_var in each_block.vars.itervalues(): diff --git a/python/paddle/v2/fluid/tests/test_program.py b/python/paddle/v2/fluid/tests/test_program.py index e9bcefd215..15653a1dbf 100644 --- a/python/paddle/v2/fluid/tests/test_program.py +++ b/python/paddle/v2/fluid/tests/test_program.py @@ -1,7 +1,9 @@ +from __future__ import print_function import unittest from paddle.v2.fluid.framework import Program from paddle.v2.fluid.framework import g_main_program +import paddle.v2.fluid.layers as layers class TestProgram(unittest.TestCase): @@ -48,8 +50,8 @@ class TestProgram(unittest.TestCase): # FIXME(yuyang18): We manual compare the output string, since the order # of variable could be changed. - print prog - print prog.clone() + print(prog) + print(prog.clone()) def test_parse_program_from_string(self): prog = Program() @@ -67,8 +69,8 @@ class TestProgram(unittest.TestCase): binary_str = prog.desc.serialize_to_string() prog_restored = Program.parse_from_string(binary_str) - print prog - print prog_restored + print(prog) + print(prog_restored) def test_append_backward(self): prog = Program() @@ -123,6 +125,20 @@ class TestProgram(unittest.TestCase): actual_ops.append(op.type) self.assertEqual(actual_ops, expect_ops) + def test_program_clone_with_parameter(self): + main_program = Program() + startup_program = Program() + kwargs = { + 'main_program': main_program, + 'startup_program': startup_program + } + d = layers.data(name='x', shape=[784], dtype='float32', **kwargs) + hidden = layers.fc(input=d, size=100, **kwargs) + layers.fc(input=hidden, size=100, **kwargs) + + new_program = main_program.clone() + self.assertNotEqual(0, len(new_program.blocks[0].all_parameters())) + if __name__ == '__main__': unittest.main() From b28b2f172b2763dd8917833c2708309f98299a0a Mon Sep 17 00:00:00 2001 From: QI JUN Date: Mon, 27 Nov 2017 18:35:57 +0800 Subject: [PATCH 16/17] refine test_recognize_digits_mlp and format codes (#5937) --- paddle/capi/Matrix.cpp | 4 +- paddle/capi/matrix.h | 8 +- paddle/framework/tensor_util.h | 9 +- paddle/operators/math/maxouting.cc | 31 ++- paddle/operators/math/maxouting.cu | 80 ++++--- paddle/operators/math/maxouting.h | 8 +- paddle/operators/maxout_op.cc | 38 ++- paddle/operators/maxout_op.cu.cc | 8 +- paddle/operators/maxout_op.h | 2 +- paddle/operators/roi_pool_op.cc | 24 +- paddle/operators/roi_pool_op.cu | 216 ++++++++---------- paddle/operators/roi_pool_op.h | 3 +- paddle/operators/sequence_slice_op.cc | 5 +- python/paddle/v2/dataset/uci_housing.py | 4 +- .../tests/book/test_recognize_digits_mlp.py | 12 +- .../paddle/v2/fluid/tests/test_maxout_op.py | 4 +- .../paddle/v2/fluid/tests/test_roi_pool_op.py | 48 ++-- 17 files changed, 231 insertions(+), 273 deletions(-) mode change 100755 => 100644 paddle/operators/roi_pool_op.cc mode change 100755 => 100644 paddle/operators/roi_pool_op.cu mode change 100755 => 100644 paddle/operators/roi_pool_op.h mode change 100755 => 100644 paddle/operators/sequence_slice_op.cc diff --git a/paddle/capi/Matrix.cpp b/paddle/capi/Matrix.cpp index d5b55e1c95..30f3a766f0 100644 --- a/paddle/capi/Matrix.cpp +++ b/paddle/capi/Matrix.cpp @@ -55,7 +55,7 @@ paddle_error paddle_matrix_set_row(paddle_matrix mat, } PD_API paddle_error paddle_matrix_set_value(paddle_matrix mat, - paddle_real* value) { + paddle_real* value) { if (mat == nullptr || value == nullptr) return kPD_NULLPTR; auto ptr = cast(mat); if (ptr->mat == nullptr) return kPD_NULLPTR; @@ -75,7 +75,7 @@ PD_API paddle_error paddle_matrix_set_value(paddle_matrix mat, } PD_API paddle_error paddle_matrix_get_value(paddle_matrix mat, - paddle_real* result) { + paddle_real* result) { if (mat == nullptr || result == nullptr) return kPD_NULLPTR; auto ptr = cast(mat); if (ptr->mat == nullptr) return kPD_NULLPTR; diff --git a/paddle/capi/matrix.h b/paddle/capi/matrix.h index 01b8bad2ee..8cc3e0034e 100644 --- a/paddle/capi/matrix.h +++ b/paddle/capi/matrix.h @@ -79,7 +79,7 @@ PD_API paddle_error paddle_matrix_set_row(paddle_matrix mat, * @note value should contain enough element of data to init the mat */ PD_API paddle_error paddle_matrix_set_value(paddle_matrix mat, - paddle_real* value); + paddle_real* value); /** * @brief PDMatGetRow Get raw row buffer from matrix @@ -93,14 +93,14 @@ PD_API paddle_error paddle_matrix_get_row(paddle_matrix mat, paddle_real** rawRowBuffer); /** - * @brief copy data from the matrix + * @brief copy data from the matrix * @param [in] mat Target matrix - * @param [out] result pointer to store the matrix data + * @param [out] result pointer to store the matrix data * @return paddle_error * @note the space of the result should allocated before invoke this API */ PD_API paddle_error paddle_matrix_get_value(paddle_matrix mat, - paddle_real* result); + paddle_real* result); /** * @brief PDMatCreateNone Create None Matrix * @return diff --git a/paddle/framework/tensor_util.h b/paddle/framework/tensor_util.h index 8ee2e15a59..4e34b90d57 100644 --- a/paddle/framework/tensor_util.h +++ b/paddle/framework/tensor_util.h @@ -135,18 +135,17 @@ inline void CopyToVector(const Tensor& src, const platform::DeviceContext& ctx, auto dst_ptr = static_cast(dst->data()); if (platform::is_cpu_place(src.place())) { - memory::Copy(dst_place, dst_ptr, boost::get(src.place()), - src_ptr, size); + memory::Copy(dst_place, dst_ptr, + boost::get(src.place()), src_ptr, size); } #ifdef PADDLE_WITH_CUDA else if (platform::is_gpu_place(src.place())) { // NOLINT memory::Copy( - dst_place, dst_ptr, boost::get(src.place()), src_ptr, - size, + dst_place, dst_ptr, boost::get(src.place()), + src_ptr, size, reinterpret_cast(ctx).stream()); } #endif - } } // namespace framework diff --git a/paddle/operators/math/maxouting.cc b/paddle/operators/math/maxouting.cc index e5168ce7af..c9003962d3 100644 --- a/paddle/operators/math/maxouting.cc +++ b/paddle/operators/math/maxouting.cc @@ -23,8 +23,7 @@ template class MaxOutFunctor { public: void operator()(const platform::DeviceContext& context, - const framework::Tensor& input, - framework::Tensor * output, + const framework::Tensor& input, framework::Tensor* output, int groups) { const int batch_size = input.dims()[0]; const int input_height = input.dims()[2]; @@ -37,34 +36,30 @@ class MaxOutFunctor { T* output_data = output->mutable_data(context.GetPlace()); for (int i = 0; i < batch_size; ++i) { - int new_bindex = c_size * i; + int new_bindex = c_size * i; for (int c = 0; c < output_channels; ++c) { int new_cindex = fea_size * c; for (int f = 0; f < fea_size; ++f) { T ele = static_cast(-FLT_MAX); for (int ph = 0; ph < groups; ++ph) { - T x = input_data[(new_bindex + new_cindex) * groups - + ph * fea_size + f]; + T x = input_data[(new_bindex + new_cindex) * groups + + ph * fea_size + f]; ele = ele > x ? ele : x; } - output_data[(new_bindex+new_cindex+f)] = ele; + output_data[(new_bindex + new_cindex + f)] = ele; } } } } }; - - template class MaxOutGradFunctor { -public: + public: void operator()(const platform::DeviceContext& context, - const framework::Tensor& input, - framework::Tensor * input_grad, + const framework::Tensor& input, framework::Tensor* input_grad, const framework::Tensor& output, - const framework::Tensor& output_grad, - int groups) { + const framework::Tensor& output_grad, int groups) { const int batch_size = input.dims()[0]; const int input_height = input.dims()[2]; const int input_width = input.dims()[3]; @@ -84,11 +79,11 @@ public: bool continue_match = true; int output_idx = blen + clen + f; for (int g = 0; g < groups && continue_match; ++g) { - int input_idx = input_idx0 + fea_size * g; - if (input_data[input_idx] == output_data[output_idx]) { - input_grad_data[input_idx] += output_grad_data[output_idx]; - continue_match = false; - } + int input_idx = input_idx0 + fea_size * g; + if (input_data[input_idx] == output_data[output_idx]) { + input_grad_data[input_idx] += output_grad_data[output_idx]; + continue_match = false; + } } } } diff --git a/paddle/operators/math/maxouting.cu b/paddle/operators/math/maxouting.cu index 7c698577b8..c3fabcae08 100644 --- a/paddle/operators/math/maxouting.cu +++ b/paddle/operators/math/maxouting.cu @@ -21,9 +21,9 @@ namespace math { template __global__ void KernelMaxOut(const int nthreads, const T* input_data, - const int channels, - const int input_height, const int input_width, - int groups, T* output_data ) { + const int channels, const int input_height, + const int input_width, int groups, + T* output_data) { const int size = input_height * input_width * channels / groups; const int feat_len = input_height * input_width; int index = blockIdx.x * blockDim.x + threadIdx.x; @@ -34,7 +34,7 @@ __global__ void KernelMaxOut(const int nthreads, const T* input_data, int channel_idx = batch_offset / feat_len; int feat_idx = batch_offset % feat_len; int data_idx = - (batch_idx * size + channel_idx * feat_len) * groups + feat_idx; + (batch_idx * size + channel_idx * feat_len) * groups + feat_idx; T ele = static_cast(-FLT_MAX); for (int g = 0; g < groups; ++g) { T x = input_data[data_idx + g * feat_len]; @@ -44,34 +44,35 @@ __global__ void KernelMaxOut(const int nthreads, const T* input_data, } } template -__global__ void KernelMaxoutGrad( - const int nthreads, const T* input_data, const T* output_data, - const T* output_grad, T* input_grad, const int channels, - const int input_height, const int input_width, int groups) { - const int size = input_height * input_width * channels / groups; - const int feat_len = input_height * input_width; - int index = blockIdx.x * blockDim.x + threadIdx.x; - int offset = blockDim.x * gridDim.x; - for (int i = index; i < nthreads; i += offset) { - int batch_idx = i / size; - int batch_offset = i % size; - int channel_idx = batch_offset / feat_len; - int feat_idx = batch_offset % feat_len; - int data_idx = +__global__ void KernelMaxoutGrad(const int nthreads, const T* input_data, + const T* output_data, const T* output_grad, + T* input_grad, const int channels, + const int input_height, const int input_width, + int groups) { + const int size = input_height * input_width * channels / groups; + const int feat_len = input_height * input_width; + int index = blockIdx.x * blockDim.x + threadIdx.x; + int offset = blockDim.x * gridDim.x; + for (int i = index; i < nthreads; i += offset) { + int batch_idx = i / size; + int batch_offset = i % size; + int channel_idx = batch_offset / feat_len; + int feat_idx = batch_offset % feat_len; + int data_idx = (batch_idx * size + channel_idx * feat_len) * groups + feat_idx; - int max_index = -1; - bool continue_match = true; - for (int g = 0; g < groups && continue_match; ++g) { - if (input_data[data_idx + g * feat_len] == output_data[i]) { - max_index = data_idx + g * feat_len; - continue_match = false; - break; - } - } - if (max_index != -1) { - input_grad[max_index] += output_grad[index]; + int max_index = -1; + bool continue_match = true; + for (int g = 0; g < groups && continue_match; ++g) { + if (input_data[data_idx + g * feat_len] == output_data[i]) { + max_index = data_idx + g * feat_len; + continue_match = false; + break; } } + if (max_index != -1) { + input_grad[max_index] += output_grad[index]; + } + } } /* * All tensors are in NCHW format. @@ -80,7 +81,7 @@ template class MaxOutFunctor { public: void operator()(const platform::DeviceContext& context, - const framework::Tensor& input, framework::Tensor * output, + const framework::Tensor& input, framework::Tensor* output, int groups) { const int batch_size = input.dims()[0]; const int input_channels = input.dims()[1]; @@ -92,7 +93,7 @@ class MaxOutFunctor { const T* input_data = input.data(); T* output_data = output->mutable_data(context.GetPlace()); - int nthreads = output->numel(); + int nthreads = output->numel(); int blocks = (nthreads + 1024 - 1) / 1024; dim3 threads(1024, 1); dim3 grid(blocks, 1); @@ -101,8 +102,7 @@ class MaxOutFunctor { T><<(context) .stream()>>>(nthreads, input_data, input_channels, - input_height, input_width, groups, - output_data); + input_height, input_width, groups, output_data); } }; /* @@ -112,11 +112,9 @@ template class MaxOutGradFunctor { public: void operator()(const platform::DeviceContext& context, - const framework::Tensor& input, - framework::Tensor * input_grad, + const framework::Tensor& input, framework::Tensor* input_grad, const framework::Tensor& output, - const framework::Tensor& output_grad, - int groups) { + const framework::Tensor& output_grad, int groups) { const int batch_size = input.dims()[0]; const int input_channels = input.dims()[1]; const int input_height = input.dims()[2]; @@ -129,7 +127,7 @@ class MaxOutGradFunctor { const T* output_data = output.data(); const T* output_grad_data = output_grad.data(); T* input_grad_data = input_grad->mutable_data(context.GetPlace()); - int nthreads = output.numel(); + int nthreads = output.numel(); int blocks = (nthreads + 1024 - 1) / 1024; dim3 threads(1024, 1); dim3 grid(blocks, 1); @@ -137,9 +135,9 @@ class MaxOutGradFunctor { KernelMaxoutGrad< T><<(context) - .stream()>>>( - nthreads, input_data, output_data, output_grad_data, input_grad_data, - input_channels, input_height, input_width, groups); + .stream()>>>(nthreads, input_data, output_data, + output_grad_data, input_grad_data, input_channels, + input_height, input_width, groups); } }; diff --git a/paddle/operators/math/maxouting.h b/paddle/operators/math/maxouting.h index d4c9da38ab..2d9069b0b3 100644 --- a/paddle/operators/math/maxouting.h +++ b/paddle/operators/math/maxouting.h @@ -21,15 +21,14 @@ namespace paddle { namespace operators { namespace math { -#define FLT_MAX \ - __FLT_MAX__ +#define FLT_MAX __FLT_MAX__ template class MaxOutFunctor { public: void operator()(const platform::DeviceContext& context, - const framework::Tensor& input, framework::Tensor * output, + const framework::Tensor& input, framework::Tensor* output, int groups); }; @@ -37,8 +36,7 @@ template class MaxOutGradFunctor { public: void operator()(const platform::DeviceContext& context, - const framework::Tensor& input, - framework::Tensor * input_grad, + const framework::Tensor& input, framework::Tensor* input_grad, const framework::Tensor& output, const framework::Tensor& output_grad, int groups); }; diff --git a/paddle/operators/maxout_op.cc b/paddle/operators/maxout_op.cc index 95467f2e69..e203a25d54 100644 --- a/paddle/operators/maxout_op.cc +++ b/paddle/operators/maxout_op.cc @@ -22,16 +22,17 @@ class MaxOutOpMaker : public framework::OpProtoAndCheckerMaker { public: MaxOutOpMaker(framework::OpProto* proto, framework::OpAttrChecker* op_checker) : OpProtoAndCheckerMaker(proto, op_checker) { - AddInput("X", + AddInput( + "X", "(Tensor) The input tensor of maxout operator. " "The format of input tensor is NCHW. Where N is batch size, C is the " "number of channels, H and W is the height and width of feature."); AddOutput("Out", - "(Tensor) The output tensor of maxout operator." - "The format of output tensor is also NCHW." - "Where N is batch size, C is " - "the number of channels, H and W is the height and " - "width of feature."); + "(Tensor) The output tensor of maxout operator." + "The format of output tensor is also NCHW." + "Where N is batch size, C is " + "the number of channels, H and W is the height and " + "width of feature."); AddAttr( "groups", R"DOC("Specifies how many groups the input tensor will be split" @@ -59,21 +60,19 @@ class MaxOutOpMaker : public framework::OpProtoAndCheckerMaker { } }; - class MaxOutOp : public framework::OperatorWithKernel { public: using framework::OperatorWithKernel::OperatorWithKernel; void InferShape(framework::InferShapeContext* ctx) const override { - PADDLE_ENFORCE(ctx->HasInput("X"), "Input(X) of MaxoutOp" + PADDLE_ENFORCE(ctx->HasInput("X"), + "Input(X) of MaxoutOp" "should not be null."); PADDLE_ENFORCE(ctx->HasOutput("Out"), "Output(Out) of MaxoutOp should not be null."); auto in_x_dims = ctx->GetInputDim("X"); int groups = ctx->Attrs().Get("groups"); // check groups > 1 - PADDLE_ENFORCE_GT( - groups, 1, - "groups should be larger than 1 in maxoutop"); + PADDLE_ENFORCE_GT(groups, 1, "groups should be larger than 1 in maxoutop"); std::vector output_shape({in_x_dims[0], in_x_dims[1] / groups}); output_shape.push_back(in_x_dims[2]); output_shape.push_back(in_x_dims[3]); @@ -87,18 +86,17 @@ class MaxOutOpGrad : public framework::OperatorWithKernel { void InferShape(framework::InferShapeContext* ctx) const override { PADDLE_ENFORCE(ctx->HasInput("X"), "Input(X) must not be null."); PADDLE_ENFORCE(ctx->HasOutput(framework::GradVarName("X")), - "Input(X@GRAD) should not be null."); + "Input(X@GRAD) should not be null."); ctx->SetOutputDim(framework::GradVarName("X"), ctx->GetInputDim("X")); } }; -} // namespace operators -} // namespace paddle +} // namespace operators +} // namespace paddle namespace ops = paddle::operators; REGISTER_OP(maxout, ops::MaxOutOp, ops::MaxOutOpMaker, maxout_grad, - ops::MaxOutOpGrad); -REGISTER_OP_CPU_KERNEL(maxout, ops::MaxOutKernel); -REGISTER_OP_CPU_KERNEL(maxout_grad, - ops::MaxOutGradKernel); + ops::MaxOutOpGrad); +REGISTER_OP_CPU_KERNEL(maxout, + ops::MaxOutKernel); +REGISTER_OP_CPU_KERNEL( + maxout_grad, ops::MaxOutGradKernel); diff --git a/paddle/operators/maxout_op.cu.cc b/paddle/operators/maxout_op.cu.cc index a5823fba68..decd43913d 100644 --- a/paddle/operators/maxout_op.cu.cc +++ b/paddle/operators/maxout_op.cu.cc @@ -18,8 +18,6 @@ namespace ops = paddle::operators; REGISTER_OP_GPU_KERNEL(maxout, ops::MaxOutKernel, ops::MaxOutKernel); -REGISTER_OP_GPU_KERNEL(maxout_grad, - ops::MaxOutGradKernel, - ops::MaxOutGradKernel); +REGISTER_OP_GPU_KERNEL( + maxout_grad, ops::MaxOutGradKernel, + ops::MaxOutGradKernel); diff --git a/paddle/operators/maxout_op.h b/paddle/operators/maxout_op.h index c404cd16a9..44a0d073dd 100644 --- a/paddle/operators/maxout_op.h +++ b/paddle/operators/maxout_op.h @@ -53,7 +53,7 @@ class MaxOutGradKernel : public framework::OpKernel { zero(device_ctx, in_x_grad, static_cast(0.0)); math::MaxOutGradFunctor maxout_backward; maxout_backward(context.device_context(), *in_x, in_x_grad, *out, - *out_grad, groups); + *out_grad, groups); } } }; diff --git a/paddle/operators/roi_pool_op.cc b/paddle/operators/roi_pool_op.cc old mode 100755 new mode 100644 index 156db93586..2b5e66c96b --- a/paddle/operators/roi_pool_op.cc +++ b/paddle/operators/roi_pool_op.cc @@ -43,8 +43,8 @@ class ROIPoolOp : public framework::OperatorWithKernel { "ROIs should be a 2-D tensor of shape (num_rois, 5)" "given as [[batch_id, x1, y1, x2, y2], …]."); PADDLE_ENFORCE(rois_dims[1] == kROISize, - "ROIs should be a 2-D tensor of shape (num_rois, 5)" - "given as [[batch_id, x1, y1, x2, y2], …]."); + "ROIs should be a 2-D tensor of shape (num_rois, 5)" + "given as [[batch_id, x1, y1, x2, y2], …]."); int pooled_height = ctx->Attrs().Get("pooled_height"); int pooled_width = ctx->Attrs().Get("pooled_width"); @@ -65,7 +65,7 @@ class ROIPoolOp : public framework::OperatorWithKernel { ctx->SetOutputDim("Out", out_dims); ctx->SetOutputDim("Argmax", out_dims); - } + } protected: framework::OpKernelType GetKernelType( @@ -100,7 +100,7 @@ class ROIPoolGradOp : public framework::OperatorWithKernel { class ROIPoolOpMaker : public framework::OpProtoAndCheckerMaker { public: ROIPoolOpMaker(framework::OpProto* proto, - framework::OpAttrChecker* op_checker) + framework::OpAttrChecker* op_checker) : OpProtoAndCheckerMaker(proto, op_checker) { AddInput("X", "(Tensor), " @@ -125,21 +125,22 @@ class ROIPoolOpMaker : public framework::OpProtoAndCheckerMaker { "(Tensor), " "Argmaxes corresponding to indices in X used " "for gradient computation. Only output " - "if arg “is_test” is false.").AsIntermediate(); + "if arg “is_test” is false.") + .AsIntermediate(); AddAttr("spatial_scale", "(float, default 1.0), " "Multiplicative spatial scale factor " "to translate ROI coords from their input scale " "to the scale used when pooling.") - .SetDefault(1.0); + .SetDefault(1.0); AddAttr("pooled_height", "(int, default 1), " "The pooled output height.") - .SetDefault(1); + .SetDefault(1); AddAttr("pooled_width", "(int, default 1), " "The pooled output width.") - .SetDefault(1); + .SetDefault(1); AddComment(R"DOC( ROIPool operator @@ -153,11 +154,10 @@ https://stackoverflow.com/questions/43430056/what-is-roi-layer-in-fast-rcnn } // namespace paddle namespace ops = paddle::operators; -REGISTER_OP(roi_pool, ops::ROIPoolOp, ops::ROIPoolOpMaker, - roi_pool_grad, ops::ROIPoolGradOp); +REGISTER_OP(roi_pool, ops::ROIPoolOp, ops::ROIPoolOpMaker, roi_pool_grad, + ops::ROIPoolGradOp); REGISTER_OP_CPU_KERNEL( - roi_pool, - ops::CPUROIPoolOpKernel, + roi_pool, ops::CPUROIPoolOpKernel, ops::CPUROIPoolOpKernel); REGISTER_OP_CPU_KERNEL( roi_pool_grad, diff --git a/paddle/operators/roi_pool_op.cu b/paddle/operators/roi_pool_op.cu old mode 100755 new mode 100644 index 97df45f1b5..9a4c8ca752 --- a/paddle/operators/roi_pool_op.cu +++ b/paddle/operators/roi_pool_op.cu @@ -29,101 +29,95 @@ static inline int NumBlocks(const int N) { kNumMaxinumNumBlocks); } - template - __global__ void GPUROIPoolForward( - const int nthreads, const T* input_data, const int64_t* input_rois, - const float spatial_scale, const int channels, const int height, - const int width, const int pooled_height, const int pooled_width, - T* output_data, int64_t* argmax_data) { - int index = blockIdx.x * blockDim.x + threadIdx.x; - int offset = blockDim.x * gridDim.x; - for (size_t i = index; i < nthreads; i += offset) { - int pw = index % pooled_width; - int ph = (index / pooled_width) % pooled_height; - int c = (index / pooled_width / pooled_height) % channels; - int n = index / pooled_width / pooled_height / channels; - - const int64_t* offset_input_rois = input_rois + n * kROISize; - int roi_batch_ind = offset_input_rois[0]; - int roi_start_w = round(offset_input_rois[1] * spatial_scale); - int roi_start_h = round(offset_input_rois[2] * spatial_scale); - int roi_end_w = round(offset_input_rois[3] * spatial_scale); - int roi_end_h = round(offset_input_rois[4] * spatial_scale); - - int roi_width = max(roi_end_w - roi_start_w + 1, 1); - int roi_height = max(roi_end_h - roi_start_h + 1, 1); - T bin_size_h = static_cast(roi_height) / static_cast(pooled_height); - T bin_size_w = static_cast(roi_width) / static_cast(pooled_width); - - int hstart = static_cast(floor(static_cast(ph) * bin_size_h)); - int wstart = static_cast(floor(static_cast(pw) * bin_size_w)); - int hend = static_cast(ceil(static_cast(ph + 1) * bin_size_h)); - int wend = static_cast(ceil(static_cast(pw + 1) * bin_size_w)); - - hstart = min(max(hstart + roi_start_h, 0), height); - hend = min(max(hend + roi_start_h, 0), height); - wstart = min(max(wstart + roi_start_w, 0), width); - wend = min(max(wend + roi_start_w, 0), width); - bool is_empty = (hend <= hstart) || (wend <= wstart); - - T maxval = is_empty ? 0 : -std::numeric_limits::max(); - int maxidx = -1; - const T* offset_input_data = - input_data + (roi_batch_ind * channels + c) * height * width; - for (int h = hstart; h < hend; ++h) { - for (int w = wstart; w < wend; ++w) { - int input_data_index = h * width + w; - if (offset_input_data[input_data_index] > maxval) { - maxval = offset_input_data[input_data_index]; - maxidx = input_data_index; - } +template +__global__ void GPUROIPoolForward(const int nthreads, const T* input_data, + const int64_t* input_rois, + const float spatial_scale, const int channels, + const int height, const int width, + const int pooled_height, + const int pooled_width, T* output_data, + int64_t* argmax_data) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + int offset = blockDim.x * gridDim.x; + for (size_t i = index; i < nthreads; i += offset) { + int pw = index % pooled_width; + int ph = (index / pooled_width) % pooled_height; + int c = (index / pooled_width / pooled_height) % channels; + int n = index / pooled_width / pooled_height / channels; + + const int64_t* offset_input_rois = input_rois + n * kROISize; + int roi_batch_ind = offset_input_rois[0]; + int roi_start_w = round(offset_input_rois[1] * spatial_scale); + int roi_start_h = round(offset_input_rois[2] * spatial_scale); + int roi_end_w = round(offset_input_rois[3] * spatial_scale); + int roi_end_h = round(offset_input_rois[4] * spatial_scale); + + int roi_width = max(roi_end_w - roi_start_w + 1, 1); + int roi_height = max(roi_end_h - roi_start_h + 1, 1); + T bin_size_h = static_cast(roi_height) / static_cast(pooled_height); + T bin_size_w = static_cast(roi_width) / static_cast(pooled_width); + + int hstart = static_cast(floor(static_cast(ph) * bin_size_h)); + int wstart = static_cast(floor(static_cast(pw) * bin_size_w)); + int hend = static_cast(ceil(static_cast(ph + 1) * bin_size_h)); + int wend = static_cast(ceil(static_cast(pw + 1) * bin_size_w)); + + hstart = min(max(hstart + roi_start_h, 0), height); + hend = min(max(hend + roi_start_h, 0), height); + wstart = min(max(wstart + roi_start_w, 0), width); + wend = min(max(wend + roi_start_w, 0), width); + bool is_empty = (hend <= hstart) || (wend <= wstart); + + T maxval = is_empty ? 0 : -std::numeric_limits::max(); + int maxidx = -1; + const T* offset_input_data = + input_data + (roi_batch_ind * channels + c) * height * width; + for (int h = hstart; h < hend; ++h) { + for (int w = wstart; w < wend; ++w) { + int input_data_index = h * width + w; + if (offset_input_data[input_data_index] > maxval) { + maxval = offset_input_data[input_data_index]; + maxidx = input_data_index; } } - output_data[index] = maxval; - if (argmax_data) { - argmax_data[index] = maxidx; - } + } + output_data[index] = maxval; + if (argmax_data) { + argmax_data[index] = maxidx; } } +} template __global__ void GPUROIPoolBackward( - const int nthreads, - const int64_t* input_rois, - const T* output_grad, - const int64_t* argmax_data, - const int num_rois, - const float spatial_scale, - const int channels, - const int height, - const int width, - const int pooled_height, - const int pooled_width, - T* input_grad) { - int index = blockIdx.x * blockDim.x + threadIdx.x; - int offset = blockDim.x * gridDim.x; - for (int i = index; i < nthreads; i += offset) { - int pw = index % pooled_width; - int ph = (index / pooled_width) % pooled_height; - int c = (index / pooled_width / pooled_height) % channels; - int n = index / pooled_width / pooled_height / channels; - - const int64_t* offset_input_rois = input_rois + n * kROISize; - int roi_batch_ind = offset_input_rois[0]; - int input_offset = (roi_batch_ind * channels + c) * height * width; - int output_offset = (n * channels + c) * pooled_height * pooled_width; - const T* offset_output_grad = output_grad + output_offset; - T* offset_input_grad = input_grad + input_offset; - const int64_t* offset_argmax_data = argmax_data + output_offset; - - int argmax = offset_argmax_data[ph * pooled_width + pw]; - if (argmax != -1) { - platform::CudaAtomicAdd(offset_input_grad + argmax, + const int nthreads, const int64_t* input_rois, const T* output_grad, + const int64_t* argmax_data, const int num_rois, const float spatial_scale, + const int channels, const int height, const int width, + const int pooled_height, const int pooled_width, T* input_grad) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + int offset = blockDim.x * gridDim.x; + for (int i = index; i < nthreads; i += offset) { + int pw = index % pooled_width; + int ph = (index / pooled_width) % pooled_height; + int c = (index / pooled_width / pooled_height) % channels; + int n = index / pooled_width / pooled_height / channels; + + const int64_t* offset_input_rois = input_rois + n * kROISize; + int roi_batch_ind = offset_input_rois[0]; + int input_offset = (roi_batch_ind * channels + c) * height * width; + int output_offset = (n * channels + c) * pooled_height * pooled_width; + const T* offset_output_grad = output_grad + output_offset; + T* offset_input_grad = input_grad + input_offset; + const int64_t* offset_argmax_data = argmax_data + output_offset; + + int argmax = offset_argmax_data[ph * pooled_width + pw]; + if (argmax != -1) { + platform::CudaAtomicAdd( + offset_input_grad + argmax, static_cast(offset_output_grad[ph * pooled_width + pw])); - } } } - +} template class GPUROIPoolOpKernel : public framework::OpKernel { @@ -145,25 +139,18 @@ class GPUROIPoolOpKernel : public framework::OpKernel { int width = in_dims[3]; size_t rois_num = rois->dims()[0]; - if (rois_num== 0) return; + if (rois_num == 0) return; int output_size = out->numel(); int blocks = NumBlocks(output_size); int threads = kNumCUDAThreads; - GPUROIPoolForward - <<>>( - output_size, - in->data(), - rois->data(), - spatial_scale, - channels, - height, - width, - pooled_height, - pooled_width, - out->mutable_data(ctx.GetPlace()), - argmax->mutable_data(ctx.GetPlace())); + GPUROIPoolForward< + T><<>>( + output_size, in->data(), rois->data(), spatial_scale, + channels, height, width, pooled_height, pooled_width, + out->mutable_data(ctx.GetPlace()), + argmax->mutable_data(ctx.GetPlace())); } }; @@ -175,10 +162,8 @@ class GPUROIPoolGradOpKernel : public framework::OpKernel { auto* rois = ctx.Input("ROIs"); auto* argmax = ctx.Input("Argmax"); - auto* out_grad = - ctx.Input(framework::GradVarName("Out")); - auto* x_grad = - ctx.Output(framework::GradVarName("X")); + auto* out_grad = ctx.Input(framework::GradVarName("Out")); + auto* x_grad = ctx.Output(framework::GradVarName("X")); auto pooled_height = ctx.Attr("pooled_height"); auto pooled_width = ctx.Attr("pooled_width"); @@ -199,21 +184,13 @@ class GPUROIPoolGradOpKernel : public framework::OpKernel { int threads = kNumCUDAThreads; if (output_grad_size > 0) { - GPUROIPoolBackward - <<>>( - output_grad_size, - rois->data(), - out_grad->data(), - argmax->data(), - rois_num, - spatial_scale, - channels, - height, - width, - pooled_height, - pooled_width, - x_grad->mutable_data(ctx.GetPlace())); - } + GPUROIPoolBackward< + T><<>>( + output_grad_size, rois->data(), out_grad->data(), + argmax->data(), rois_num, spatial_scale, channels, height, + width, pooled_height, pooled_width, + x_grad->mutable_data(ctx.GetPlace())); + } } } }; @@ -223,8 +200,7 @@ class GPUROIPoolGradOpKernel : public framework::OpKernel { namespace ops = paddle::operators; REGISTER_OP_GPU_KERNEL( - roi_pool, - ops::GPUROIPoolOpKernel, + roi_pool, ops::GPUROIPoolOpKernel, ops::GPUROIPoolOpKernel); REGISTER_OP_GPU_KERNEL( roi_pool_grad, diff --git a/paddle/operators/roi_pool_op.h b/paddle/operators/roi_pool_op.h old mode 100755 new mode 100644 index bd7736d631..1691eb482b --- a/paddle/operators/roi_pool_op.h +++ b/paddle/operators/roi_pool_op.h @@ -136,8 +136,7 @@ class CPUROIPoolGradOpKernel : public framework::OpKernel { auto* out_grad = ctx.Input(framework::GradVarName("Out")); - auto* x_grad = - ctx.Output(framework::GradVarName("X")); + auto* x_grad = ctx.Output(framework::GradVarName("X")); auto pooled_height = ctx.Attr("pooled_height"); auto pooled_width = ctx.Attr("pooled_width"); diff --git a/paddle/operators/sequence_slice_op.cc b/paddle/operators/sequence_slice_op.cc old mode 100755 new mode 100644 index cbe0b42331..255683a572 --- a/paddle/operators/sequence_slice_op.cc +++ b/paddle/operators/sequence_slice_op.cc @@ -45,7 +45,7 @@ class SequenceSliceOp : public framework::OperatorWithKernel { // Initialize the output's dims to maximum, // and re-set to real dims by the value of Offset and Length at kernel ctx->SetOutputDim("Out", input_dims); - } + } protected: framework::OpKernelType GetKernelType( @@ -93,8 +93,7 @@ class SequenceSliceOpMaker : public framework::OpProtoAndCheckerMaker { "(Tensor), " "a vector to describe the length of every input sequence for " "sub sequence item."); - AddOutput("Out", - "(LoDTensor), the output of SequenceSliceOp."); + AddOutput("Out", "(LoDTensor), the output of SequenceSliceOp."); AddComment(R"DOC( Sequence slice operator diff --git a/python/paddle/v2/dataset/uci_housing.py b/python/paddle/v2/dataset/uci_housing.py index 98b97c75ca..f10bf7e42a 100644 --- a/python/paddle/v2/dataset/uci_housing.py +++ b/python/paddle/v2/dataset/uci_housing.py @@ -38,6 +38,7 @@ UCI_TEST_DATA = None URL_MODEL = 'https://github.com/PaddlePaddle/book/raw/develop/01.fit_a_line/fit_a_line.tar' MD5_MODEL = '52fc3da8ef3937822fcdd87ee05c0c9b' + def feature_range(maximums, minimums): import matplotlib matplotlib.use('Agg') @@ -114,7 +115,8 @@ def test(): def model(): - tar_file = paddle.v2.dataset.common.download(URL_MODEL, 'fit_a_line.tar', MD5_MODEL) + tar_file = paddle.v2.dataset.common.download(URL_MODEL, 'fit_a_line.tar', + MD5_MODEL) with open(tar_file, 'r') as f: parameters = Parameters.from_tar(f) return parameters diff --git a/python/paddle/v2/fluid/tests/book/test_recognize_digits_mlp.py b/python/paddle/v2/fluid/tests/book/test_recognize_digits_mlp.py index c96d186ffe..8ca45134dc 100644 --- a/python/paddle/v2/fluid/tests/book/test_recognize_digits_mlp.py +++ b/python/paddle/v2/fluid/tests/book/test_recognize_digits_mlp.py @@ -35,6 +35,13 @@ opts = optimizer.minimize(avg_cost) accuracy = fluid.evaluator.Accuracy(input=predict, label=label) +inference_program = fluid.default_main_program().clone() +test_accuracy = fluid.evaluator.Accuracy( + input=predict, label=label, main_program=inference_program) +test_target = [avg_cost] + test_accuracy.metrics + test_accuracy.states +inference_program = fluid.io.get_inference_program( + test_target, main_program=inference_program) + train_reader = paddle.batch( paddle.reader.shuffle( paddle.dataset.mnist.train(), buf_size=8192), @@ -69,11 +76,6 @@ for pass_id in range(PASS_NUM): acc = np.array(outs[1]) pass_acc = accuracy.eval(exe) - test_accuracy = fluid.evaluator.Accuracy(input=predict, label=label) - - test_target = [avg_cost] + test_accuracy.metrics + test_accuracy.states - inference_program = fluid.io.get_inference_program(test_target) - test_accuracy.reset(exe) for data in test_reader(): x_data = np.array(map(lambda x: x[0], data)).astype("float32") diff --git a/python/paddle/v2/fluid/tests/test_maxout_op.py b/python/paddle/v2/fluid/tests/test_maxout_op.py index 05e42f3158..5fbed43e25 100644 --- a/python/paddle/v2/fluid/tests/test_maxout_op.py +++ b/python/paddle/v2/fluid/tests/test_maxout_op.py @@ -30,9 +30,7 @@ class TestMaxOutOp(OpTest): def init_test_case(self): self.MaxOut_forward_naive = maxout_forward_naive self.shape = [100, 6, 2, 2] - self.groups=2 - - + self.groups = 2 if __name__ == '__main__': diff --git a/python/paddle/v2/fluid/tests/test_roi_pool_op.py b/python/paddle/v2/fluid/tests/test_roi_pool_op.py index 7cedb930ca..a28d9c7f82 100644 --- a/python/paddle/v2/fluid/tests/test_roi_pool_op.py +++ b/python/paddle/v2/fluid/tests/test_roi_pool_op.py @@ -4,24 +4,22 @@ import math import sys from op_test import OpTest + class TestROIPoolOp(OpTest): def set_data(self): self.init_test_case() self.make_rois() self.calc_roi_pool() - self.inputs = { - 'X': self.x, - 'ROIs': self.rois} - + self.inputs = {'X': self.x, 'ROIs': self.rois} + self.attrs = { 'spatial_scale': self.spatial_scale, 'pooled_height': self.pooled_height, - 'pooled_width': self.pooled_width} + 'pooled_width': self.pooled_width + } - self.outputs = { - 'Out': self.outs, - 'Argmax': self.argmaxes} + self.outputs = {'Out': self.outs, 'Argmax': self.argmaxes} def init_test_case(self): self.batch_size = 5 @@ -30,10 +28,9 @@ class TestROIPoolOp(OpTest): self.width = 4 # n, c, h, w - self.x_dim = (self.batch_size, self.channels, - self.height, self.width) + self.x_dim = (self.batch_size, self.channels, self.height, self.width) - self.spatial_scale = 1.0/4.0 + self.spatial_scale = 1.0 / 4.0 self.pooled_height = 2 self.pooled_width = 2 self.rois_num = 2 @@ -41,13 +38,11 @@ class TestROIPoolOp(OpTest): self.x = np.random.random(self.x_dim).astype('float32') def calc_roi_pool(self): - out_data = np.zeros( - (self.rois_num, self.channels, - self.pooled_height, self.pooled_width)) - argmax_data = np.zeros( - (self.rois_num, self.channels, - self.pooled_height, self.pooled_width)) - + out_data = np.zeros((self.rois_num, self.channels, self.pooled_height, + self.pooled_width)) + argmax_data = np.zeros((self.rois_num, self.channels, + self.pooled_height, self.pooled_width)) + for i in range(self.rois_num): roi = self.rois[i] roi_batch_id = roi[0] @@ -56,8 +51,8 @@ class TestROIPoolOp(OpTest): roi_end_w = int(round(roi[3] * self.spatial_scale)) roi_end_h = int(round(roi[4] * self.spatial_scale)) - roi_height = int(max(roi_end_h - roi_start_h + 1, 1)); - roi_width = int(max(roi_end_w - roi_start_w + 1, 1)); + roi_height = int(max(roi_end_h - roi_start_h + 1, 1)) + roi_width = int(max(roi_end_w - roi_start_w + 1, 1)) x_i = self.x[roi_batch_id] @@ -84,7 +79,7 @@ class TestROIPoolOp(OpTest): out_data[i, c, ph, pw] = -sys.float_info.max argmax_data[i, c, ph, pw] = -1 - + for h in range(hstart, hend): for w in range(wstart, wend): if x_i[c, h, w] > out_data[i, c, ph, pw]: @@ -104,11 +99,11 @@ class TestROIPoolOp(OpTest): y1 = np.random.random_integers( 0, self.height / self.spatial_scale - self.pooled_height) - x2 = np.random.random_integers( - x1 + self.pooled_width, self.width / self.spatial_scale) - y2 = np.random.random_integers( - y1 + self.pooled_height, self.height / self.spatial_scale) - + x2 = np.random.random_integers(x1 + self.pooled_width, + self.width / self.spatial_scale) + y2 = np.random.random_integers(y1 + self.pooled_height, + self.height / self.spatial_scale) + roi = [batch_ids[i], x1, y1, x2, y2] rois.append(roi) self.rois = np.array(rois).astype("int64") @@ -123,5 +118,6 @@ class TestROIPoolOp(OpTest): def test_check_grad(self): self.check_grad(['X'], 'Out') + if __name__ == '__main__': unittest.main() From 90fc4a6cd5c47eff93fc5554f0c456841fec1272 Mon Sep 17 00:00:00 2001 From: fengjiayi Date: Mon, 27 Nov 2017 19:34:11 +0800 Subject: [PATCH 17/17] Complete shrink_rnn_memory_op comments (#5935) * Complete shrink_rnn_memory_op comments * Update --- paddle/operators/shrink_rnn_memory_op.cc | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/paddle/operators/shrink_rnn_memory_op.cc b/paddle/operators/shrink_rnn_memory_op.cc index 48597c1d2a..c380e60686 100644 --- a/paddle/operators/shrink_rnn_memory_op.cc +++ b/paddle/operators/shrink_rnn_memory_op.cc @@ -57,11 +57,21 @@ class ShrinkRNNMemoryOpProtoMaker : public framework::OpProtoAndCheckerMaker { ShrinkRNNMemoryOpProtoMaker(framework::OpProto *proto, framework::OpAttrChecker *op_checker) : OpProtoAndCheckerMaker(proto, op_checker) { - AddInput("X", ""); - AddInput("RankTable", ""); - AddInput("I", ""); - AddOutput("Out", ""); - AddComment(""); + AddInput("X", "(LoDTensor) The RNN step memory to be shrinked."); + AddInput("RankTable", "(LoDRankTable) The lod_rank_table of dynamic RNN."); + AddInput("I", + "(LoDTensor) The step index. The RNN step memory 'X' will be " + "shrinked to match the size of the input of the index'th step."); + AddOutput("Out", "(LoDTensor) The shrinked RNN step memory."); + AddComment( + R"DOC( + In dynamic RNN, we are able to handle sequences of different lengths. + Because of the multiple lengths, the size of each step input can be + different, which may lead to a mismatching between the input of + the current step and the memory generated by the previous one. This + operator shrinks memory according to the size of the next step input, + to make sure that they can match each other. + )DOC"); } };