Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Serving
  • 合并请求
  • !714

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看板

update pipeline2 !714

  • Report abuse
!714 已合并 7月 03, 2020 由 saxon_zh@saxon_zh 创建
#<User:0x00007fed52575cf0>
  • 概览 5
  • 提交 82
  • 变更 23

Created by: barrierye

更新

  1. 去除了pipeline profiler对用户无用的信息

    • 各个op的get data、push data耗时信息
    • virtual op操作耗时信息
    • pipeline service push data、fetch data的耗时信息

    这些信息不应该由用户感知(可能会让用户感到困惑),而是仅作为框架优化使用。

  2. pipeline.yml 添加 channel size 配置的支持

  3. 【接口改动】 op添加 load_private_obj 接口,让每个op线程创建单独的实例资源。同时preprocess、process、postprocess添加入参 private_obj 我们不建议在线程版中开op并发

  4. 【代码结构改动】 重构pipeline server,将dag部分分离出来,便于后续进程化service;并修改了一些变量名以增强易读性

  5. 【接口改动】 init_op函数添加concurrency_idx入参(为了让某些GPU模块在并发时放在不同卡上) 用户可以通过self.concurrency_idx 获取当前线程(进程)的index

  6. 进程版可以使用profiler

  7. 添加进程版Servicer配置选项,支持启动多个servicer进程 (每来一个rpc请求,重新构建DAG,支持线程/进程版op) 每个进程维护一个size=1的线程池+一个DAG Executor

  8. 让 pipeline.yaml 文件各变量更加友好

    port: gRPC端口号
    worker_num: gRPC线程池大小(进程版 Servicer 中为进程数 & 每个进程中的线程池大小),`默认为1`
    build_dag_each_worker: 是否使用进程版 Servicer,`默认为false`
    dag:
        is_thread_op: 是否使用线程版Op,`默认为true`
        client_type: 使用 brpc 或 grpc client,`默认为brpc`
        retry: DAG Executor 在失败后重试次数,`默认为1`
        use_profile: 是否在 Server 端打印日志,`默认为false`
  9. 支持从client端获取profile,日志将打在标准输出

    client.predict(feed_dict, fetch=None, asyn=False, profile=False)
  10. 添加analyse模块(部分是timeline代码),用于分析OP的并发数: 通常QPS是受使用GPU的OP所限制,故期望QPS=耗时最多的GPU部分的QPS,而每个OP的concurrency=单OP耗时*期望QPS。目前只支持每个模型在不同卡上的情况(多个模型在一个卡上会互相影响,无法推理耗时)

修复

  1. fix: client只能连接一个endpoint的问题
  2. fix: channel output-buffer 中最后一个op取元素时不拷贝(针对某些需要手动释放内存的对象)
  3. fix: 多个rpc service并发下,profiler错误的问题(在profiler中加了把锁)
  4. fix: dag fetch线程同时唤醒所有等待线程,而获得锁的等待线程不一定是对应resp数据的线程
  5. fix: 进程版Channel由于multiprocess.queue限制,往空queue里填数据不会及时被所有进程感知
  6. fix: 线程版、进程版均不能正常close问题
指派人
分配到
审核者
Request review from
无
里程碑
无
分配里程碑
工时统计
标识: paddlepaddle/Serving!714
Source branch: github/fork/barrierye/pipeline-update
渝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