Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Serving
  • Issue
  • #488

S
Serving
  • 项目概览

PaddlePaddle / Serving
大约 2 年 前同步成功

通知 187
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看板
已关闭
开放中
Opened 4月 26, 2020 by saxon_zh@saxon_zhGuest

新版serving client端性能需优化点

Created by: wangxicoding

新版client采用numpy,从下面的distill_reader的profile结果可以看出,目前reader所占耗时比例很低。主要耗时集中在real_predict也就是client端的耗时。

外层阶段 内层阶段 耗时 耗时占比
get_ready(获取就绪memory)   0.117ms 0.026%
predict(预测阶段,分三阶段)耗时439.54ms preprocess(准备数据,memory->list) 0.056ms 0.013%
real_predict 438.717ms 99.77%
postprocess(复制predict到memory) 0.694ms 0.157%
put_complete(放回完成memory)   0.062ms 0.014%

画出paddle-serving-client的profile图,两个step的数据和client端时间吻合。中间的gap有一大部分时间是client没有profile到的,见问题https://github.com/PaddlePaddle/Serving/issues/486 image

分析目前可以优化的点

  1. batch_predict增加numpy的接口,减少client python端preprocess和postprocess的numpy与list间的数据拷贝转化。 现batch_predict c++端的接口可以不变,针对Python端再封装一层numpy的c++接口,这样就可以减少python层面的数据转换损耗。

preprocess的numpy到list数据转换(TODO时间占比profile) https://github.com/PaddlePaddle/Serving/blob/f54717396f7cc161046e38b117458ccd5729957b/python/paddle_serving_client/__init__.py#L241 batch_predict的input数据list到c++ vector的数据转换,返回数据从vector到list的转换 https://github.com/PaddlePaddle/Serving/blob/f54717396f7cc161046e38b117458ccd5729957b/python/paddle_serving_client/__init__.py#L260-L262 返回数据从list到numpy的转换(TODO时间占比profile) https://github.com/PaddlePaddle/Serving/blob/f54717396f7cc161046e38b117458ccd5729957b/python/paddle_serving_client/__init__.py#L284-L285

  1. 从client到serving发送数据和接收数据 可以优化成流式数据,尽量减少gap。
指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/Serving#488
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7