Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Serving
提交
a750f93f
S
Serving
项目概览
PaddlePaddle
/
Serving
大约 1 年 前同步成功
通知
185
Star
833
Fork
253
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
105
列表
看板
标记
里程碑
合并请求
10
Wiki
2
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Serving
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
105
Issue
105
列表
看板
标记
里程碑
合并请求
10
合并请求
10
Pages
分析
分析
仓库分析
DevOps
Wiki
2
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a750f93f
编写于
8月 29, 2019
作者:
W
wangguibao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add entries for newly added configure options
上级
17691f01
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
47 addition
and
37 deletion
+47
-37
doc/SERVING_CONFIGURE.md
doc/SERVING_CONFIGURE.md
+47
-37
未找到文件。
doc/SERVING_CONFIGURE.md
浏览文件 @
a750f93f
...
@@ -18,9 +18,8 @@ services {
...
@@ -18,9 +18,8 @@ services {
其中
其中
port: 该字段标明本机serving实例启动的监听端口。默认为8010。还可以通过--port=8010命令行参数指定。
-
port: 该字段标明本机serving实例启动的监听端口。默认为8010。还可以通过--port=8010命令行参数指定。
-
services: 可以配置多个services。Paddle Serving被设计为单个Serving实例可以同时承载多个预测服务,服务间通过service name进行区分。例如以下代码配置2个预测服务:
services: 可以配置多个services。Paddle Serving被设计为单个Serving实例可以同时承载多个预测服务,服务间通过service name进行区分。例如以下代码配置2个预测服务:
```
JSON
```
JSON
port: 8010
port: 8010
services {
services {
...
@@ -33,7 +32,7 @@ services {
...
@@ -33,7 +32,7 @@ services {
}
}
```
```
service.name: 请填写serving/proto/xx.proto文件的service名称,例如,在serving/proto/image_class.proto中,service名称如下声明:
-
service.name: 请填写serving/proto/xx.proto文件的service名称,例如,在serving/proto/image_class.proto中,service名称如下声明:
```
JSON
```
JSON
service ImageClassifyService {
service ImageClassifyService {
rpc inference(Request) returns (Response);
rpc inference(Request) returns (Response);
...
@@ -43,11 +42,11 @@ service ImageClassifyService {
...
@@ -43,11 +42,11 @@ service ImageClassifyService {
```
```
则service name就是
`ImageClassifyService`
则service name就是
`ImageClassifyService`
service.workflows: 用于指定该service下所配的workflow列表。可以配置多个workflow。在本例中,为
`ImageClassifyService`
配置了一个workflow:
`workflow1`
。
`workflow1`
的具体定义在workflow.prototxt
-
service.workflows: 用于指定该service下所配的workflow列表。可以配置多个workflow。在本例中,为
`ImageClassifyService`
配置了一个workflow:
`workflow1`
。
`workflow1`
的具体定义在workflow.prototxt
## 2. workflow.prototxt
## 2. workflow.prototxt
workflow.prototxt用来描述每一个具体的workflow,他的protobuf格式可参考
`configure/server_configure.protobuf`
的
`Workflow`
类型。具体的磁盘文件路径可通过
--workflow_path和--workflow_file
指定。一个例子如下:
workflow.prototxt用来描述每一个具体的workflow,他的protobuf格式可参考
`configure/server_configure.protobuf`
的
`Workflow`
类型。具体的磁盘文件路径可通过
`--workflow_path`
和
`--workflow_file`
指定。一个例子如下:
```
JSON
```
JSON
workflows {
workflows {
...
@@ -86,32 +85,32 @@ workflows {
...
@@ -86,32 +85,32 @@ workflows {
```
```
以上样例配置了2个workflow:
`workflow1`
和
`workflow2`
。以
`workflow1`
为例:
以上样例配置了2个workflow:
`workflow1`
和
`workflow2`
。以
`workflow1`
为例:
name: workflow名称,用于从service.prototxt索引到具体的workflow
-
name: workflow名称,用于从service.prototxt索引到具体的workflow
-
workflow_type: 可选"Sequence", "Parallel",表示本workflow下节点所代表的OP是否可并行。
**当前只支持Sequence类型,如配置了Parallel类型,则该workflow不会被执行**
workflow_type: 可选"Sequence", "Parallel",表示本workflow下节点所代表的OP是否可并行。
**当前只支持Sequence类型,如配置了Parallel类型,则该workflow不会被执行**
-
nodes: 用于串联成workflow的所有节点,可配置多个nodes。nodes间通过配置dependencies串联起来
-
node.name: 随意,建议取一个能代表当前node所执行OP的类
nodes: 用于串联成workflow的所有节点,可配置多个nodes。nodes间通过配置dependencies串联起来
-
node.type: 当前node所执行OP的类名称,与serving/op/下每个具体的OP类的名称对应
-
node.dependencies: 依赖的上游node列表
node.name: 随意,建议取一个能代表当前node所执行OP的类
-
node.dependencies.name: 与workflow内节点的name保持一致
-
node.dependencies.mode: RO-Read Only, RW-Read Write
node.type: 当前node所执行OP的类名称,与serving/op/下每个具体的OP类的名称对应
node.dependencies: 依赖的上游node列表
node.dependencies.name: 与workflow内节点的name保持一致
node.dependencies.mode: RO-Read Only, RW-Read Write
# 3. resource.prototxt
# 3. resource.prototxt
Serving端resource配置的入口是resource.prototxt,用于配置模型信息。它的protobuf格式参考
`configure/proto/server_configure.proto`
的ResourceConf。具体的磁盘文件路径可用
--resource_path和--resource_file
指定。样例如下:
Serving端resource配置的入口是resource.prototxt,用于配置模型信息。它的protobuf格式参考
`configure/proto/server_configure.proto`
的ResourceConf。具体的磁盘文件路径可用
`--resource_path`
和
`--resource_file`
指定。样例如下:
```
JSON
```
JSON
model_manager_path: ./conf
model_toolkit_path: "./conf"
model_manager_file: model_toolkit.prototxt
model_toolkit_file: "model_toolkit.prototxt"
cube_config_file: "./conf/cube.conf"
```
```
主要用来指定model_toolkit.prototxt路径
其中:
-
model_toolkit_path:用来指定model_toolkit.prototxt所在的目录
-
model_toolkit_file: 用来指定model_toolkit.prototxt所在的文件名
-
cube_config_file: 用来指定cube配置文件所在路径与文件名
Cube是Paddle Serving中用于大规模稀疏参数的组件。
# 4. model_toolkit.prototxt
# 4. model_toolkit.prototxt
...
@@ -127,14 +126,18 @@ engines {
...
@@ -127,14 +126,18 @@ engines {
runtime_thread_num: 0
runtime_thread_num: 0
batch_infer_size: 0
batch_infer_size: 0
enable_batch_align: 0
enable_batch_align: 0
sparse_param_service_type: LOCAL
sparse_param_service_table_name: "local_kv"
enable_memory_optimization: true
static_optimization: false
force_update_static_cache: false
}
}
```
```
其中
其中
name: 模型名称。InferManager通过此名称,找到要使用的模型和预测引擎。可参考serving/op/classify_op.h与serving/op/classify_op.cpp的InferManager::instance().infer()方法的参数来了解。
-
name: 模型名称。InferManager通过此名称,找到要使用的模型和预测引擎。可参考serving/op/classify_op.h与serving/op/classify_op.cpp的InferManager::instance().infer()方法的参数来了解。
-
type: 预测引擎的类型。可在inferencer-fluid-cpu/src/fluid_cpu_engine.cpp找到当前注册的预测引擎列表
type: 预测引擎的类型。可在inferencer-fluid-cpu/src/fluid_cpu_engine.cpp找到当前注册的预测引擎列表
|预测引擎|含义|
|预测引擎|含义|
|--------|----|
|--------|----|
...
@@ -152,9 +155,8 @@ type: 预测引擎的类型。可在inferencer-fluid-cpu/src/fluid_cpu_engine.cp
...
@@ -152,9 +155,8 @@ type: 预测引擎的类型。可在inferencer-fluid-cpu/src/fluid_cpu_engine.cp
Analysis API在模型加载过程中,会对模型计算逻辑进行多种优化,包括但不限于zero copy tensor,相邻OP的fuse等。
**但优化逻辑不是一定对所有模型都有加速作用,有时甚至会有反作用,请以实测结果为准**
。
Analysis API在模型加载过程中,会对模型计算逻辑进行多种优化,包括但不限于zero copy tensor,相邻OP的fuse等。
**但优化逻辑不是一定对所有模型都有加速作用,有时甚至会有反作用,请以实测结果为准**
。
reloadable_meta: 目前实际内容无意义,用来通过对该文件的mtime判断是否超过reload时间阈值
-
reloadable_meta: 目前实际内容无意义,用来通过对该文件的mtime判断是否超过reload时间阈值
-
reloadable_type: 检查reload条件:timestamp_ne/timestamp_gt/md5sum/revision/none
reloadable_type: 检查reload条件:timestamp_ne/timestamp_gt/md5sum/revision/none
|reloadable_type|含义|
|reloadable_type|含义|
|---------------|----|
|---------------|----|
...
@@ -163,13 +165,22 @@ reloadable_type: 检查reload条件:timestamp_ne/timestamp_gt/md5sum/revision/
...
@@ -163,13 +165,22 @@ reloadable_type: 检查reload条件:timestamp_ne/timestamp_gt/md5sum/revision/
|md5sum|目前无用,配置后永远不reload|
|md5sum|目前无用,配置后永远不reload|
|revision|目前无用,配置后用于不reload|
|revision|目前无用,配置后用于不reload|
model_data_path: 模型文件路径
-
model_data_path: 模型文件路径
-
runtime_thread_num: 若大于0, 则启用bsf多线程调度框架,在每个预测bthread worker内启动多线程预测。要注意的是,当启用worker内多线程预测,workflow中OP需要用Serving框架的BatchTensor类做预测的输入和输出 (predictor/framework/infer_data.h,
`class BatchTensor`
)。
runtime_thread_num: 若大于0, 则启用bsf多线程调度框架,在每个预测bthread worker内启动多线程预测。要注意的是,当启用worker内多线程预测,workflow中OP需要用Serving框架的BatchTensor类做预测的输入和输出 (predictor/framework/infer_data.h,
`class BatchTensor`
)。
-
batch_infer_size: 启用bsf多线程预测时,每个预测线程的batch size
-
enable_batch_align:
-
sparse_param_service_type: 枚举类型,可选参数,大规模稀疏参数服务类型
batch_infer_size: 启用bsf多线程预测时,每个预测线程的batch size
|sparse_param_service_type|含义|
|-------------------------|--|
|NONE|不使用大规模稀疏参数服务|
|LOCAL|单机本地大规模稀疏参数服务,以rocksdb作为引擎|
|REMOTE|分布式大规模稀疏参数服务,以Cube作为引擎|
enable_batch_align:
-
sparse_param_service_table_name: 可选参数,大规模稀疏参数服务承载本模型所用参数的表名。
-
enable_memory_optimization: bool类型,可选参数,是否启用内存优化。只在使用fluid Analysis预测API时有意义。需要说明的是,在GPU预测时,会执行显存优化
-
static_optimization: bool类型,是否执行静态优化。只有当启用内存优化时有意义。
-
force_update_static_cache: bool类型,是否强制更新静态优化cache。只有当启用内存优化时有意义。
## 5. 命令行配置参数
## 5. 命令行配置参数
...
@@ -211,4 +222,3 @@ enable_batch_align:
...
@@ -211,4 +222,3 @@ enable_batch_align:
```
shell
```
shell
bin/serving
--g
=
true
--flagfile
=
conf/gflags.conf.new
bin/serving
--g
=
true
--flagfile
=
conf/gflags.conf.new
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录