Skip to content

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

M
models
  • 项目概览

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

通知 232
Star 6828
Fork 2962
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 602
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 255
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
M
models
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 602
    • Issue 602
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 255
    • 合并请求 255
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板

fix resnet50 usetime statistics !4838

  • Report abuse
!4838 已合并 9月 07, 2020 由 saxon_zh@saxon_zh 创建
#<User:0x00007fedf7e55a00>
  • 概览 0
  • 提交 3
  • 变更 1

Created by: wanghuancoder

Fetch优化后,resnet50、resnet101Benchmark性能突增,原因是模型运行时间统计方式错误。

一、Paddle背景情况说明

Paddle exe.run()并非是完整的完成一轮训练返回,而是在成功Fetch用户所需数据后即返回。但有两种场景会通过cudaStreamSynchronize等待所有Kernel执行完成,exe.run()才返回: 1)DropLocalExeScopes清理Scope时; 2)ParallelExecutor析构时; 因此,可能会出现有的exe.run()很快,有些exe.run()很慢的情况。如下图所示:

图片 注:图中,第1轮用时=第1轮前向计算用时,第10轮用时=第9轮反向用时+第10轮前向用时+第10轮反向用时。 因此,Paddle中exe.run()的时间,可能是不均衡的。

二、Fetch修改对Resnet影响

Fetch修改前Resnet50的timeline如下: 图片 修改后如下: 图片

  • Fetch修改前,由于Fetch阻塞,导致exe.run()不能提早结束。因此每轮exe.run()时间都等于其前向时间+反向时间。
  • 而修改后,出现了exe.run()时间不均衡。
  • 由于exec_strategy.num_iteration_per_drop_scope设置为10。因此,每10轮中,第1轮耗时短,第10轮耗时长,其余8轮时间基本均衡。

三、时间统计漏洞

Benchmark通过抓取模型日志中的耗时,计算speed。 Resnet模型print_step=10,而且每次只打印最后一轮耗时,而非10轮的平均值。 恰好每次都统计到了耗时短的一次,造成了性能的假突增: 图片

四、Fetch修改前后,实际性能情况

模型 修改前(800setp总时间) 修改后 性能提升
Resnet50 84.8940119743 83.2191288471 1.97%
Resnet101 135.613070011 135.286768198 0.24%
指派人
分配到
审核者
Request review from
无
里程碑
无
分配里程碑
工时统计
标识: paddlepaddle/models!4838
Source branch: github/fork/wanghuancoder/develop_resnet50_time
渝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