Skip to content

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

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
接近 2 年 前同步成功

通知 2323
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板

remove scope in cudnn lstm !25188

  • Report abuse
!25188 已合并 6月 24, 2020 由 saxon_zh@saxon_zh 创建
#<User:0x00007ff7d0e8cd38>
  • 概览 30
  • 提交 18
  • 变更 8

Created by: GaoWei8

PR types

Bug fixes

PR changes

OPs

Describe

  1. 修改的问题:
  • 去除了kernel中scope的使用。
  • 修改了cudnn维度参数的重复使用,去除不必要的cudnn定义。
  • 为了保持原来模型不出现问题,Python端接口保留max_len接口,但是c++ kernel的相关使用用seq_len替代。
  • 新增支持double类型。
  • 增加输入Input和InitH的维度判断。
  1. 目前存在的问题:
  • 和pytorch对比,目前数据类型为float时,单层多向的精度到e-4, 多层单向的精度到e-5, 单层单向和多层多向的结果和pytorch一致。数据类型为double时,可以对齐到e-16。根据代码修改内容,初步判断是反向计算存在问题,在下一个PR中进一步排查。
  • 和pytorch对齐的过程中,有两个地方不太一样,一个是cudnnRNNBackwardData接口的使用;另外一个是pytorch存在bias接口的使用。

需要approve的用法list:

  • no_check_set_white_list.py,LSTM需要StateOut端口保存前向计算的中间结果用于反向计算,不需要进行输出结果检查。@cryoco

  • Op accuracy problem,目前为了项目进展,先设置阈值较大,下一个PR会进一步排查精度问题,去除特殊设置阈值,使用默认值。@juncaipeng

  • const_cast<Tensor *>(state_out)是因为cudnn接口只接受非const指针,因此先将state_out转换为非const Tensor,自动调用非const data()函数。 @Xreki

  • 此接口是LSTM的cudnn版本,因此只用于GPU上,因此使用+@unittest.skipIf(not core.is_compiled_with_cuda()。@kolinwei

  • FP64反向精度存在问题,暂时设置max_relative_error=1e-4,后期会去掉阈值特殊设置,使用默认值。@Xreki

Profiler结果

  • 修改前:
-------------------------     Overhead Summary      -------------------------

Total time: 9742.42
  Computation time       Total: 9250.88     Ratio: 94.9546%
  Framework overhead     Total: 491.54      Ratio: 5.04535%

-------------------------     GpuMemCpy Summary     -------------------------

GpuMemcpy                Calls: 0           Total: 0           Ratio: 0%

-------------------------       Event Summary       -------------------------

Event                         Calls       Total       CPU Time (Ratio)        GPU Time (Ratio)        Min.        Max.        Ave.        Ratio.
thread0::cudnn_lstm           10000       8817.09     7337.540486 (0.832195)  1479.549055 (0.167805)  0.821531    14.6746     0.881709    0.90502
thread0::fill_constant        20000       874.6       849.240787 (0.971005)   25.359282 (0.028995)    0.027807    4.73596     0.04373     0.0897723
thread0::feed                 10000       50.7322     50.732196 (1.000000)    0.000000 (0.000000)     0.004421    0.030364    0.00507322  0.00520735
  • 修改后profiler结果:

-------------------------     Overhead Summary      -------------------------

Total time: 9602.53
  Computation time       Total: 9164.98     Ratio: 95.4433%
  Framework overhead     Total: 437.557     Ratio: 4.55668%

-------------------------     GpuMemCpy Summary     -------------------------

GpuMemcpy                Calls: 0           Total: 0           Ratio: 0%

-------------------------       Event Summary       -------------------------

Event                         Calls       Total       CPU Time (Ratio)        GPU Time (Ratio)        Min.        Max.        Ave.        Ratio.
thread0::cudnn_lstm           10000       8728.52     7257.042156 (0.831417)  1471.476728 (0.168583)  0.804817    16.0509     0.872852    0.908981
thread0::fill_constant        20000       828.185     802.617943 (0.969129)   25.566844 (0.030871)    0.025697    4.09784     0.0414092   0.0862465
thread0::feed                 10000       45.8286     45.828579 (1.000000)    0.000000 (0.000000)     0.003988    0.099758    0.00458286  0.00477255
指派人
分配到
审核者
Request review from
无
里程碑
无
分配里程碑
工时统计
标识: paddlepaddle/Paddle!25188
Source branch: github/fork/GaoWei8/cudnn_lstm
渝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