From 635a69ba4be15c924541f8d222ba1183b793e4c2 Mon Sep 17 00:00:00 2001 From: ying Date: Wed, 6 Dec 2017 17:50:38 +0800 Subject: [PATCH] add doc for how to use C-API. --- doc/howto/index_cn.rst | 1 + doc/howto/usage/capi/a_simple_example.md | 211 ++++++++++++++++++ doc/howto/usage/capi/compile_paddle_lib.md | 68 ++++++ doc/howto/usage/capi/core_concepts.md | 0 doc/howto/usage/capi/images/csr.png | Bin 0 -> 174346 bytes .../usage/capi/organization_of_the_inputs.md | 154 +++++++++++++ doc/howto/usage/capi/overview.md | 5 + .../examples/model_inference/dense/main.c | 60 +++-- .../model_inference/dense/merge_v2_model.py | 8 + .../model_inference/dense/mnist_v2.py | 117 ++++++++++ .../model_inference/sparse_binary/main.c | 11 +- python/paddle/utils/dump_v2_config.py | 62 +++++ python/paddle/utils/merge_model.py | 3 +- 13 files changed, 677 insertions(+), 23 deletions(-) create mode 100644 doc/howto/usage/capi/a_simple_example.md create mode 100644 doc/howto/usage/capi/compile_paddle_lib.md create mode 100644 doc/howto/usage/capi/core_concepts.md create mode 100644 doc/howto/usage/capi/images/csr.png create mode 100644 doc/howto/usage/capi/organization_of_the_inputs.md create mode 100644 doc/howto/usage/capi/overview.md create mode 100644 paddle/capi/examples/model_inference/dense/merge_v2_model.py create mode 100644 paddle/capi/examples/model_inference/dense/mnist_v2.py create mode 100644 python/paddle/utils/dump_v2_config.py diff --git a/doc/howto/index_cn.rst b/doc/howto/index_cn.rst index 991b9e2596a..174fb7a0744 100644 --- a/doc/howto/index_cn.rst +++ b/doc/howto/index_cn.rst @@ -12,6 +12,7 @@ usage/k8s/k8s_basis_cn.md usage/k8s/k8s_cn.md usage/k8s/k8s_distributed_cn.md + usage/capi/overview.md 开发标准 -------- diff --git a/doc/howto/usage/capi/a_simple_example.md b/doc/howto/usage/capi/a_simple_example.md new file mode 100644 index 00000000000..efcae3518ee --- /dev/null +++ b/doc/howto/usage/capi/a_simple_example.md @@ -0,0 +1,211 @@ +## 使用 C-API 开发预测程序 + +这篇文档通过一个最简单的例子:手写数字识别,来介绍 CPU 下单线程使用 PaddlePaddle C-API 开发预测服务,完整代码见[此目录](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/capi/examples/model_inference/dense/)。 + +### 使用流程 + +使用 C-API 分为:准备工作和预测程序开发两部分。 +- 准备 + 1. 将神经网络模型结构进行序列化。 + - 调用C-API预测时,需要提供序列化之后的网络结构和训练好的模型参数文件。 + 1. 将PaddlePaddle训练出的模型参数文件(多个)合并成一个文件。 + - 神经网络模型结构和训练好的模型将被序列化合并入一个文件。 + - 预测时只需加载这一个文件,便于发布。 + - **注意**:以上两种方式只需选择其一即可。 +- 调用 PaddlePaddle C-API 开发预测序 + 1. 初始化PaddlePaddle运行环境。 + 1. 创建神经网络的输入,组织输入数据。 + 1. 加载模型。 + 1. 进行前向计算,获得计算结果。 + 1. 清理。 + + +这里我们以手写数字识别任务为例,介绍如何使用 C-API 进行预测,完整代码请查看[此目录](https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/capi/examples/model_inference/dense)。 + +运行目录下的 `python mnist_v2.py` 可以使用 PaddlePaddle 内置的 [MNIST 数据集](http://yann.lecun.com/exdb/mnist/)进行训练。脚本中的模型定义了一个简单的含有[两个隐层的全连接网络](https://github.com/PaddlePaddle/book/blob/develop/02.recognize_digits/README.cn.md#softmax回归softmax-regression),网络接受一幅图片作为输入,将图片分类到 0 ~ 9 类别标签之一。训练好的模型默认保存在当前运行目录下的`models`目录中。下面,我们将调用 C-API 加载训练好的模型进行预测。 + + +### 外部准备 + +1. 序列化神经网络模型配置 + + PaddlePaddle 使用 protobuf 来传输网络配置文件中定义的网络结构和相关参数,在使用 C-API 进行预测时,也需将网络结构使用 protobuf 进行序列化,写入文件中。 + + 调用`paddle.utils.dump_v2_config`中的`dump_v2_config`函数能够将使用 PaddlePaddle V2 API 定义的神经网络结构 dump 到指定文件中。示例代码如下: + + ```python + from paddle.utils.dump_v2_config import dump_v2_config + from mnist_v2 import network + + predict = network(is_infer=True) + dump_v2_config(predict, "trainer_config.bin", True) + ``` + + 对本例,或运行 `python mnist_v2.py --task dump_config`,会对示例中的网络结构进行序列化,并将结果写入当前目录下的`trainer_config.bin`文件中。 + + 当选择使用这种方式调用 C-API 时,如果神经网络有多个可学习参数,请将它们全部放在同一文件夹内,C-API会从指定的目录寻找并加载训练好的模型。 + +2. 合并模型文件(可选) + + 一些情况下为了便于发布,希望能够将序列化后的神经网络结构和训练好的模型参数打包进一个文件,这时可以使用`paddle.utils.merge_model`中的`merge_v2_model`接口对神经网络结构和训练好的参数进行序列化,将序列化结果写入一个文件内,调用C-API时直接只需加载这一个文件。 + + 代码示例如下: + + ```python + from paddle.utils.merge_model import merge_v2_model + + from mnist_v2 import network + + net = network(is_infer=True) + param_file = "models/params_pass_4.tar" + output_file = "output.paddle.model" + merge_v2_model(net, param_file, output_file) + ``` + 对本例,或者直接运行 `python merge_v2_model.py`,序列化结果将会写入当前目录下的`output.paddle.model`文件中,该文件在调用C-API时,可被直接加载。 + +#### 注意事项 +1. C-API 需要序列化之后神经网络结构,在调用`dump_v2_config`时,参数`binary`必须指定为`True`。 +1. **预测使用的网络结构往往不同于训练**,通常需要去掉网络中的:(1)类别标签层;(2)损失函数层;(3)`evaluator`等,只留下核心计算层,请注意是否需要修改网络结构。 +1. 预测时,可以获取网络中定义的任意多个(大于等于一个)层前向计算的结果,需要哪些层的计算结果作为输出,就将这些层加入一个Python list中,作为调用`dump_v2_config`的第一个参数。 + +### 编写预测代码 + +#### step 1. 初始化及加载模型 + +1. 初始化PaddlePaddle运行环境。 + ```c + // Initalize the PaddlePaddle runtime environment. + char* argv[] = {"--use_gpu=False"}; + CHECK(paddle_init(1, (char**)argv)); + ``` + +1. 加载训练好的模型。 + + 这里需要介绍C-API使用中的一个重要概念:Gradient Machine。概念上,在 PaddlePaddle 内部,一个GradientMachine类的对象管理着一组计算层(PaddlePaddle Layers)来完成前向和反向计算,并处理与之相关的所有细节。特别的,在调用C-API预测时只需进行前向计算。这篇文档的之后部分我们会使用`gradient machine`来特指调用PaddlePaddle C-API创建的GradientMachine类的对象。 + + 每一个 `gradient machine` 都会管理维护一份训练好的模型,模型可以通过以下两种方式获取: + 1. 从磁盘加载;这时`gradient machine`会独立拥有一份训练好的模型; + 1. 共享自其它`gradient machine`的模型;这种情况多出现在使用多线程预测时; + + 下面的代码片段创建 `gradient machine`,并从指定路径加载训练好的模型。 + + ```c + // Read the binary configuration file generated by `convert_protobin.sh` + long size; + void* buf = read_config(CONFIG_BIN, &size); + + // Create the gradient machine for inference. + paddle_gradient_machine machine; + CHECK(paddle_gradient_machine_create_for_inference(&machine, buf, (int)size)); + + // Load the trained model. Modify the parameter MODEL_PATH to set the correct + // path of the trained model. + CHECK(paddle_gradient_machine_load_parameter_from_disk(machine, MODEL_PATH)); + ``` + +##### 注意事项 +1. 以上代码片段使用“仅序列化神经网络结构”的方式加载模型,需要同时指定模型参数存储的路径。 + - 使用PaddlePaddle V2 API训练,模型中所有可学习参数会被存为一个压缩文件,需要手动进行解压,将它们放在同一目录中,C-API不会直接加载 V2 API 存储的压缩文件。 +1. 如果使用`merge model`方式将神经网络结构和训练好的参数序列化到一个文件,请参考此[示例](https://github.com/PaddlePaddle/Mobile/blob/develop/Demo/linux/paddle_image_recognizer.cpp#L59)。 + +#### step 2. 创建神经网络输入,组织输入数据 + +基本使用概念: +- 在PaddlePaddle内部,神经网络中一个计算层的输入/输出被组织为一个 `Argument` 结构体,如果神经网络有多个输入或者多个输入,每一个输入/输入都会对应有自己的`Argument`。 +- `Argument` 并不真正“存储”数据,而是将输入/输出数据有机地组织在一起。 +- 在`Argument`内部由:1. `Matrix`(二维矩阵,存储浮点类型输入/输出);2. `IVector`(一维数组,**仅用于存储整型值**,多用于自然语言处理任务)来实际存储数据。 + +*注:这篇文档使用的示例任务手写数字识别不涉及一维整型序列输入/输出,因此不讨论一维整型输入/输出数据相关的内容。更多信息请参考:[输入数据组织](organization_of_the_inputs.md)。* + +在这篇文档的后面部分,我们会使用`argument`来**特指** PaddlePaddle C-API中神经网的一个输入/输出,使用`matrix`**特指**`argument`中用于存储数据的`Matrix`类的对象,用`ivector`特指`argument`中用于存储数据的`IVector`类的对象。 + +于是,在组织神经网络输入,获取输出时,需要思考完成以下工作: +1. 为每一个输入/输出创建`argument`; +1. 为每一个`argument`创建`matrix`或者`ivector`来存储数据; + +与输入不同的是,输出`argument`的`matrix`变量并不需在使用C-API时为之要分配存储空间。PaddlePaddle内部,神经网络进行前向计算时会自己分配/管理每个计算层的存储空间;这些细节C-API会代为处理,只需在概念上理解,并按照约定调用相关的 C-API 接口即可。 + +下面是示例代码片段。在这段代码中,生成了一条随机输入数据作为测试样本。 +```c +// Inputs and outputs of the network are organized as paddle_arguments object +// in C-API. In the comments below, "argument" specifically means one input of +// the neural network in PaddlePaddle C-API. +paddle_arguments in_args = paddle_arguments_create_none(); + +// There is only one data layer in this demo MNIST network, invoke this +// function to create one argument. +CHECK(paddle_arguments_resize(in_args, 1)); + +// Each argument needs one matrix or one ivector (integer vector, for sparse +// index input, usually used in NLP task) to holds the real input data. +// In the comments below, "matrix" specifically means the object needed by +// argument to hold the data. Here we create the matrix for the above created +// agument to store the testing samples. +paddle_matrix mat = + paddle_matrix_create(/* height = batch size */ 1, + /* width = dimensionality of the data layer */ 784, + /* whether to use GPU */ false); + +paddle_real* array; +// Get the pointer pointing to the start address of the first row of the +// created matrix. +CHECK(paddle_matrix_get_row(mat, 0, &array)); + +// Fill the matrix with a randomly generated test sample. +srand(time(0)); +for (int i = 0; i < 784; ++i) { + array[i] = rand() / ((float)RAND_MAX); +} + +// Assign the matrix to the argument. +CHECK(paddle_arguments_set_value(in_args, 0, mat)); +``` + +#### step 3. 前向计算 + +完成上述准备之后,通过调用 `paddle_gradient_machine_forward` 接口完成神经网络的前向计算。 +示例代码片段如下: + +```c +// Create the output argument. +paddle_arguments out_args = paddle_arguments_create_none(); + +// Invoke the forward computation. +CHECK(paddle_gradient_machine_forward(machine, + in_args, + out_args, + /* is train taks or not */ false)); + +// Create the matrix to hold the forward result of the neural network. +paddle_matrix prob = paddle_matrix_create_none(); +// Access the matrix of the output argument, the predicted result is stored in +// which. +CHECK(paddle_arguments_get_value(out_args, 0, prob)); + +uint64_t height; +uint64_t width; +CHECK(paddle_matrix_get_shape(prob, &height, &width)); +CHECK(paddle_matrix_get_row(prob, 0, &array)); + +printf("Prob: \n"); +for (int i = 0; i < height * width; ++i) { + printf("%.4f ", array[i]); + if ((i + 1) % width == 0) { + printf("\n"); + } +} +printf("\n"); +``` + +#### step 4. 清理 + +结束预测之后,对使用的中间变量和资源进行清理和释放: + +```c +// The cleaning up. +CHECK(paddle_matrix_destroy(prob)); +CHECK(paddle_arguments_destroy(out_args)); +CHECK(paddle_matrix_destroy(mat)); +CHECK(paddle_arguments_destroy(in_args)); +CHECK(paddle_gradient_machine_destroy(machine)); +``` diff --git a/doc/howto/usage/capi/compile_paddle_lib.md b/doc/howto/usage/capi/compile_paddle_lib.md new file mode 100644 index 00000000000..1ad5b906812 --- /dev/null +++ b/doc/howto/usage/capi/compile_paddle_lib.md @@ -0,0 +1,68 @@ +## 编译 PaddlePaddle 链接库 + +使用 C-API 进行预测依赖于将 PaddlePaddle 核心代码编译成链接库,只需在编译时指定编译选项:`-DWITH_C_API=ON`。同时,**建议将:`DWITH_PYTHON`,`DWITH_SWIG_PY`,`DWITH_GOLANG`,均设置为`OFF`**,以避免链接不必要的库。其它编译选项按需进行设定。 + +```shell +INSTALL_PREFIX=/path/of/capi/ +PADDLE_ROOT=/path/of/paddle_source/ +cmake $PADDLE_ROOT -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \ + -DCMAKE_BUILD_TYPE=Release \ + -DWITH_C_API=ON \ + -DWITH_SWIG_PY=OFF \ + -DWITH_GOLANG=OFF \ + -DWITH_PYTHON=OFF \ + -DWITH_MKLML=OFF \ + -DWITH_MKLDNN=OFF \ + -DWITH_GPU=OFF \ + ... +``` +在上面的代码片段中,`PADDLE_ROOT` 表示 PaddlePaddle 源码所在目录,生成Makefile文件后执行:`make && make install`。成功执行后,使用CAPI所需的依赖(包括:(1)编译出的PaddlePaddle 链接和头文件;(2)第三方链接库和头文件)均会存放于`INSTALL_PREFIX`目录中。 + +编译成功后在 `INSTALL_PREFIX` 下会看到如下目录结构(包括了编译出的PaddlePaddle头文件和链接库,以及第三方依赖链接库和头文件(如果需要,由链接方式决定)): + +```text +├── include +│   └── paddle +│   ├── arguments.h +│   ├── capi.h +│   ├── capi_private.h +│   ├── config.h +│   ├── error.h +│   ├── gradient_machine.h +│   ├── main.h +│   ├── matrix.h +│   ├── paddle_capi.map +│   └── vector.h +├── lib +│   ├── libpaddle_capi_engine.a +│   ├── libpaddle_capi_layers.a +│   ├── libpaddle_capi_shared.dylib +│   └── libpaddle_capi_whole.a +└── third_party + ├── ...... +``` + +## 链接方式说明 + +目前提供三种链接方式: + +1. 链接`libpaddle_capi_shared.so` 动态库 + - 使用 PaddlePaddle C-API 开发预测程序链接`libpaddle_capi_shared.so`时,需注意: + 1. 如果编译时指定编译CPU版本,且使用`OpenBLAS`矩阵库,在使用CAPI开发预测程序时,只需要链接`libpaddle_capi_shared.so`这一个库。 + 1. 如果是用编译时指定CPU版本,且使用`MKL`矩阵库,由于`MKL`库有自己独立的动态库文件,在使用PaddlePaddle CAPI开发预测程序时,需要自己链接MKL链接库。 + 1. 如果编译时指定编译GPU版本,CUDA相关库会在预测程序运行时动态装载,需要将CUDA相关的库设置到`LD_LIBRARY_PATH`环境变量中。 + - 这种方式最为简便,链接相对容易,**在无特殊需求情况下,推荐使用此方式**。 + +2. 链接静态库 `libpaddle_capi_whole.a` + - 使用PaddlePaddle C-API 开发预测程序链接`libpaddle_capi_whole.a`时,需注意: + 1. 需要指定`-Wl,--whole-archive`链接选项。 + 1. 需要显式地链接 `gflags`、`glog`、`libz`、`protobuf` 等第三方库,可在`INSTALL_PREFIX\third_party`下找到。 + 1. 如果在编译 C-API 时使用OpenBLAS矩阵库,需要显示地链接`libopenblas.a`。 + 1. 如果在编译 C-API 是使用 MKL 矩阵库,需要显示地链接 MKL 的动态库。 + +3. 链接静态库 `libpaddle_capi_layers.a`和`libpaddle_capi_engine.a` + - 使用PaddlePaddle C-API 开发预测程序链接`libpaddle_capi_whole.a`时,需注意: + 1. 这种链接方式主要用于移动端预测。 + 1. 为了减少生成链接库的大小把`libpaddle_capi_whole.a`拆成以上两个静态链接库。 + 1. 需指定`-Wl,--whole-archive -lpaddle_capi_layers` 和 `-Wl,--no-whole-archive -lpaddle_capi_engine` 进行链接。 + 1. 第三方依赖库需要按照与方式2同样方法显示地进行链接。 diff --git a/doc/howto/usage/capi/core_concepts.md b/doc/howto/usage/capi/core_concepts.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/doc/howto/usage/capi/images/csr.png b/doc/howto/usage/capi/images/csr.png new file mode 100644 index 0000000000000000000000000000000000000000..16454e9261872e9ab337f2d95d1143b77b554ecb GIT binary patch literal 174346 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 z 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

g~%JBrZuR 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

q+i})N767L3xx;ldYfnTtiUYQ3S?K>XW^< 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 mLfkl +
图1. CSR存储示意图. +

+ + 在PaddlePaddle C-API中通过以下接口创建稀疏矩阵: + ```cpp + PD_API paddle_matrix paddle_matrix_create_sparse( + uint64_t height, uint64_t width, uint64_t nnz, bool isBinary, bool useGpu); + ``` + 1. 创建稀疏矩阵时需要显示地指定矩阵的(1)高度(`height`,在神经网络中等于一次预测处理的样本数)(2)宽度(`width`,`paddle.layer.data`的`size`)以及(3)非零元个数(`nnz`)。 + 1. 当上述接口第4个参数`isBinary`指定为`true`时,**只需要设置行偏移(`row_offset`)和列号(`colum indices`),不需要提供元素值(`values`)**,这时行偏移和列号指定的元素默认其值为1。 + + - 下面的代码片段创建了一个CPU上的二值稀疏矩阵: + + ```cpp + paddle_matrix mat = paddle_matrix_create_sparse(1, layer_size, nnz, true, false); + int colIndices[] = {9, 93, 109}; // layer_size here is greater than 109. + int rowOffset[] = {0, sizeof(colIndices) / sizeof(int)}; + + CHECK(paddle_matrix_sparse_copy_from(mat, + rowOffset, + sizeof(rowOffset) / sizeof(int), + colIndices, + sizeof(colIndices) / sizeof(int), + NULL /*values array is NULL.*/, + 0 /*size of the value arrary is 0.*/)); + CHECK(paddle_arguments_set_value(in_args, 0, mat)); + ``` + - 下面的代码片段在创建了一个CPU上的带元素值的稀疏矩阵: + ```cpp + paddle_matrix mat = paddle_matrix_create_sparse(1, layer_size, nnz, false, false); + int colIndices[] = {9, 93, 109}; // layer_size here is greater than 109. + int rowOffset[] = {0, sizeof(colIndices) / sizeof(int)}; + float values[] = {0.5, 0.5, 0.5}; + + CHECK(paddle_matrix_sparse_copy_from(mat, + rowOffset, + sizeof(rowOffset) / sizeof(int), + colIndices, + sizeof(colIndices) / sizeof(int), + values, + sizeof(values) / sizeof(float))); + ``` + +### 组织序列数据 + + + +### Python 端数据类型说明 + +下表列出了Python端训练接口暴露的数据类型(`paddle.layer.data`函数`type`字段的取值)对应于调用C-API时需要创建的数据类型: + + +Python 端数据类型 | C-API 输入数据类型| +:-------------: | :-------------: +`paddle.data_type.integer_value` |一维整型数组,无需附加序列信息| +`paddle.data_type.dense_vector` |二维浮点型稠密矩阵,无需附加序列信息| +`paddle.data_type.sparse_binary_vector` |二维浮点型稀疏矩阵,无需提供非零元的值,默认为1,无需附加序列信息| +`paddle.data_type.sparse_vector` |二维浮点型稀疏矩阵,需提供非零元的值,无需附加序列信息| +`paddle.data_type.integer_value_sequence` |一维整型数组,需附加序列信息| +`paddle.data_type.dense_vector_sequence` |二维浮点型稠密矩阵,需附加序列信息| +`paddle.data_type.sparse_binary_vector_sequence` |二维浮点型稀疏矩阵,无需提供非零元的值,默认为1,需附加序列信息| +`paddle.data_type.sparse_vector_sequence` |二维浮点型稀疏矩阵,需提供非零元的值,需附加序列信息| +`paddle.data_type.integer_value_sub_sequence` |一维整型数组,需附加双层序列信息| +`paddle.data_type.dense_vector_sub_sequence` |二维浮点型稠密矩阵,需附加双层序列信息| +`paddle.data_type.sparse_binary_vector_sub_sequence` |二维浮点型稀疏矩阵,无需提供非零元的值,默认为1,需附加双层序列信息| +`paddle.data_type.sparse_vector_sub_sequence` |二维浮点型稀疏矩阵,需提供非零元的值,需附加双层序列信息| diff --git a/doc/howto/usage/capi/overview.md b/doc/howto/usage/capi/overview.md new file mode 100644 index 00000000000..5ec3bd02849 --- /dev/null +++ b/doc/howto/usage/capi/overview.md @@ -0,0 +1,5 @@ +- [编译 PaddlePaddle 链接库](compile_paddle_lib.md) +- [C-API 使用示例](a_simple_example.md) +- [输入数据组织](organize_input_data.md) +- [核心概念介绍](core_concepts.md) +- [F&Q]() diff --git a/paddle/capi/examples/model_inference/dense/main.c b/paddle/capi/examples/model_inference/dense/main.c index 5eeaf7e31fa..376cd46fb09 100644 --- a/paddle/capi/examples/model_inference/dense/main.c +++ b/paddle/capi/examples/model_inference/dense/main.c @@ -3,59 +3,82 @@ #include "../common/common.h" +// Modify this path as needed. #define CONFIG_BIN "./trainer_config.bin" +// Modify this path as needed. +// This demo assumes that merged model is not used, then this path is the +// directory storing all the trained parameters. +// If the model is trained by PaddlePaddle V2 API, the model is saved as +// a compressed file. You need to uncompress the compressed file first. +#define MODEL_PATH "models/pass_4" int main() { - // Initalize Paddle + // Initalize the PaddlePaddle runtime environment. char* argv[] = {"--use_gpu=False"}; CHECK(paddle_init(1, (char**)argv)); - // Reading config binary file. It is generated by `convert_protobin.sh` + // Read the binary configuration file generated by `convert_protobin.sh` long size; void* buf = read_config(CONFIG_BIN, &size); - // Create a gradient machine for inference. + // Create the gradient machine for inference. paddle_gradient_machine machine; CHECK(paddle_gradient_machine_create_for_inference(&machine, buf, (int)size)); - CHECK(paddle_gradient_machine_randomize_param(machine)); - // Loading parameter. Uncomment the following line and change the directory. - // CHECK(paddle_gradient_machine_load_parameter_from_disk(machine, - // "./some_where_to_params")); + // Load the trained model. Modify the parameter MODEL_PATH to set the correct + // path of the trained model. + CHECK(paddle_gradient_machine_load_parameter_from_disk(machine, MODEL_PATH)); + + // Inputs and outputs of the network are organized as paddle_arguments object + // in C-API. In the comments below, "argument" specifically means one input of + // the neural network in PaddlePaddle C-API. paddle_arguments in_args = paddle_arguments_create_none(); - // There is only one input of this network. + // There is only one data layer in this demo MNIST network, invoke this + // function to create one argument. CHECK(paddle_arguments_resize(in_args, 1)); - // Create input matrix. - paddle_matrix mat = paddle_matrix_create(/* sample_num */ 1, - /* size */ 784, - /* useGPU */ false); - srand(time(0)); + // Each argument needs one matrix or one ivector (integer vector, for sparse + // index input, usually used in NLP task) to holds the real input data. + // In the comments below, "matrix" specifically means the object needed by + // argument to hold the data. Here we create the matrix for the above created + // agument to store the testing samples. + paddle_matrix mat = + paddle_matrix_create(/* height = batch size */ 1, + /* width = dimensionality of the data layer */ 784, + /* whether to use GPU */ false); paddle_real* array; - - // Get First row. + // Get the pointer pointing to the start address of the first row of the + // created matrix. CHECK(paddle_matrix_get_row(mat, 0, &array)); + // Fill the matrix with a randomly generated test sample. + srand(time(0)); for (int i = 0; i < 784; ++i) { array[i] = rand() / ((float)RAND_MAX); } + // Assign the matrix to the argument. CHECK(paddle_arguments_set_value(in_args, 0, mat)); + // Create the output argument. paddle_arguments out_args = paddle_arguments_create_none(); + + // Invoke the forward computation. CHECK(paddle_gradient_machine_forward(machine, in_args, out_args, - /* isTrain */ false)); - paddle_matrix prob = paddle_matrix_create_none(); + /* is train taks or not */ false)); + // Create the matrix to hold the forward result of the neural network. + paddle_matrix prob = paddle_matrix_create_none(); + // Access the matrix of the output argument, the predicted result is stored in + // which. CHECK(paddle_arguments_get_value(out_args, 0, prob)); uint64_t height; uint64_t width; - CHECK(paddle_matrix_get_shape(prob, &height, &width)); CHECK(paddle_matrix_get_row(prob, 0, &array)); @@ -68,6 +91,7 @@ int main() { } printf("\n"); + // The cleaning up. CHECK(paddle_matrix_destroy(prob)); CHECK(paddle_arguments_destroy(out_args)); CHECK(paddle_matrix_destroy(mat)); diff --git a/paddle/capi/examples/model_inference/dense/merge_v2_model.py b/paddle/capi/examples/model_inference/dense/merge_v2_model.py new file mode 100644 index 00000000000..c030d572cbd --- /dev/null +++ b/paddle/capi/examples/model_inference/dense/merge_v2_model.py @@ -0,0 +1,8 @@ +from paddle.utils.merge_model import merge_v2_model + +from mnist_v2 import network + +net = network(is_infer=True) +param_file = "models/params_pass_4.tar" +output_file = "output.paddle.model" +merge_v2_model(net, param_file, output_file) diff --git a/paddle/capi/examples/model_inference/dense/mnist_v2.py b/paddle/capi/examples/model_inference/dense/mnist_v2.py new file mode 100644 index 00000000000..ee28111153c --- /dev/null +++ b/paddle/capi/examples/model_inference/dense/mnist_v2.py @@ -0,0 +1,117 @@ +import os +import sys +import gzip +import logging +import argparse +from PIL import Image +import numpy as np + +import paddle.v2 as paddle +from paddle.utils.dump_v2_config import dump_v2_config + +logger = logging.getLogger("paddle") +logger.setLevel(logging.INFO) + + +def multilayer_perceptron(img, layer_size, lbl_dim): + for idx, size in enumerate(layer_size): + hidden = paddle.layer.fc(input=(img if not idx else hidden), + size=size, + act=paddle.activation.Relu()) + return paddle.layer.fc(input=hidden, + size=lbl_dim, + act=paddle.activation.Softmax()) + + +def network(input_dim=784, lbl_dim=10, is_infer=False): + images = paddle.layer.data( + name='pixel', type=paddle.data_type.dense_vector(input_dim)) + + predict = multilayer_perceptron( + images, layer_size=[128, 64], lbl_dim=lbl_dim) + + if is_infer: + return predict + else: + label = paddle.layer.data( + name='label', type=paddle.data_type.integer_value(lbl_dim)) + return paddle.layer.classification_cost(input=predict, label=label) + + +def main(task="train", use_gpu=False, trainer_count=1, save_dir="models"): + if task == "train": + if not os.path.exists(save_dir): + os.mkdir(save_dir) + + paddle.init(use_gpu=use_gpu, trainer_count=trainer_count) + cost = network() + parameters = paddle.parameters.create(cost) + optimizer = paddle.optimizer.Momentum( + learning_rate=0.1 / 128.0, + momentum=0.9, + regularization=paddle.optimizer.L2Regularization(rate=0.0005 * 128)) + + trainer = paddle.trainer.SGD(cost=cost, + parameters=parameters, + update_equation=optimizer) + + def event_handler(event): + if isinstance(event, paddle.event.EndIteration): + if event.batch_id % 100 == 0: + logger.info("Pass %d, Batch %d, Cost %f, %s" % + (event.pass_id, event.batch_id, event.cost, + event.metrics)) + if isinstance(event, paddle.event.EndPass): + with gzip.open( + os.path.join(save_dir, "params_pass_%d.tar" % + event.pass_id), "w") as f: + trainer.save_parameter_to_tar(f) + + trainer.train( + reader=paddle.batch( + paddle.reader.shuffle( + paddle.dataset.mnist.train(), buf_size=8192), + batch_size=128), + event_handler=event_handler, + num_passes=5) + elif task == "dump_config": + predict = network(is_infer=True) + dump_v2_config(predict, "trainer_config.bin", True) + else: + raise RuntimeError(("Error value for parameter task. " + "Available options are: train and dump_config.")) + + +def parse_cmd(): + parser = argparse.ArgumentParser( + description="PaddlePaddle MNIST demo for CAPI.") + parser.add_argument( + "--task", + type=str, + required=False, + help=("A string indicating the taks type. " + "Available options are: \"train\", \"dump_config\"."), + default="train") + parser.add_argument( + "--use_gpu", + type=bool, + help=("A bool flag indicating whether to use GPU device or not."), + default=False) + parser.add_argument( + "--trainer_count", + type=int, + help=("This parameter is only used in training task. It indicates " + "how many computing threads are created in training."), + default=1) + parser.add_argument( + "--save_dir", + type=str, + help=("This parameter is only used in training task. It indicates " + "path of the directory to save the trained models."), + default="models") + return parser.parse_args() + + +if __name__ == "__main__": + args = parse_cmd() + main(args.task, args.use_gpu, args.trainer_count, args.save_dir) diff --git a/paddle/capi/examples/model_inference/sparse_binary/main.c b/paddle/capi/examples/model_inference/sparse_binary/main.c index 8ba67aee560..029b94ee63b 100644 --- a/paddle/capi/examples/model_inference/sparse_binary/main.c +++ b/paddle/capi/examples/model_inference/sparse_binary/main.c @@ -1,5 +1,6 @@ #include #include + #include "../common/common.h" #define CONFIG_BIN "./trainer_config.bin" @@ -9,16 +10,18 @@ int main() { char* argv[] = {"--use_gpu=False"}; CHECK(paddle_init(1, (char**)argv)); - // Reading config binary file. It is generated by `convert_protobin.sh` + // Read the binary configuration file which is generated by + // `convert_protobin.sh` long size; void* buf = read_config(CONFIG_BIN, &size); - // Create a gradient machine for inference. + // Create the gradient machine for inference. paddle_gradient_machine machine; CHECK(paddle_gradient_machine_create_for_inference(&machine, buf, (int)size)); CHECK(paddle_gradient_machine_randomize_param(machine)); - // Loading parameter. Uncomment the following line and change the directory. + // Load the trained parameters. Uncomment the following line and change the + // directory as needed. // CHECK(paddle_gradient_machine_load_parameter_from_disk(machine, // "./some_where_to_params")); paddle_arguments in_args = paddle_arguments_create_none(); @@ -26,7 +29,7 @@ int main() { // There is only one input of this network. CHECK(paddle_arguments_resize(in_args, 1)); - // Create input matrix. + // Create the input matrix. paddle_matrix mat = paddle_matrix_create_sparse(1, 784, 3, true, false); srand(time(0)); paddle_real* array; diff --git a/python/paddle/utils/dump_v2_config.py b/python/paddle/utils/dump_v2_config.py new file mode 100644 index 00000000000..5dc2111e379 --- /dev/null +++ b/python/paddle/utils/dump_v2_config.py @@ -0,0 +1,62 @@ +# 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. +import collections + +from paddle.trainer_config_helpers.layers import LayerOutput +from paddle.v2.layer import parse_network +from paddle.proto import TrainerConfig_pb2 + +__all__ = ["dump_v2_config"] + + +def dump_v2_config(topology, save_path, binary=False): + """ Dump the network topology to a specified file. + + This function is only used to dump network defined by using PaddlePaddle V2 + APIs. This function will NOT dump configurations related to PaddlePaddle + optimizer. + + :param topology: The output layers (can be more than one layers given in a + Python List or Tuple) of the entire network. Using the + specified layers (if more than one layer is given) as root, + traversing back to the data layer(s), all the layers + connected to the specified output layers will be dumped. + Layers not connceted to the specified will not be dumped. + :type topology: LayerOutput|List|Tuple + :param save_path: The path to save the dumped network topology. + :type save_path: str + :param binary: Whether to dump the serialized network topology or not. + The default value is false. NOTE that, if you call this + function to generate network topology for PaddlePaddle C-API, + a serialized version of network topology is required. When + using PaddlePaddle C-API, this flag MUST be set to True. + :type binary: bool + """ + + if isinstance(topology, LayerOutput): + topology = [topology] + elif isinstance(topology, collections.Sequence): + for out_layer in topology: + assert isinstance(out_layer, LayerOutput), ( + "The type of each element in the parameter topology " + "should be LayerOutput.") + else: + raise RuntimeError("Error input type for parameter topology.") + + model_str = parse_network(topology) + with open(save_path, "w") as fout: + if binary: + fout.write(model_str.SerializeToString()) + else: + fout.write(str(model_str)) diff --git a/python/paddle/utils/merge_model.py b/python/paddle/utils/merge_model.py index 421e953d277..2b100207728 100644 --- a/python/paddle/utils/merge_model.py +++ b/python/paddle/utils/merge_model.py @@ -30,7 +30,8 @@ def merge_v2_model(net, param_file, output_file): which ends with .tar.gz. @param net The output layer of the network for inference. - @param param_file Path of the parameters (.tar.gz) which is stored by v2 api. + @param param_file Path of the parameters (.tar.gz) which is stored by + v2 api. @param output_file Path of the merged file which will be generated. Usage: -- GitLab