Skip to content

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

P
Paddle-Lite
  • 项目概览

PaddlePaddle / Paddle-Lite

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

[LITE][PASS] Remove reshape2 / squeeze2 for tf_mobilenetv1/v2 !3773

  • Report abuse
!3773 已合并 6月 10, 2020 由 saxon_zh@saxon_zh 创建
#<User:0x00007fed51e1c170>
  • 概览 10
  • 提交 13
  • 变更 9

Created by: ysh329

状态:等待review


主要内容

  • 内容:移除tf_mobilenetv1/v2的reshape2->squeeze2、resshape2的结构,目前仅限于tf_mobilenetv1/v2。tf模型的mobilenetv1/v2在这两个结构中仅仅做1001x1x1->1001的维度变化没有实际作用,对于gpu来说这种操作十分费时;
  • 目的:benchmark。对opencl模型来说,可以移除掉11个op,其中包括原模型中的reshape2->squeeze2和最后的reshape2的3个原有op,以及与之带来的工具类op 8个(layout、io_copy),因为reshape2->squeeze2和reshape2中间有个cpu计算的squeeze2和softmax,而每次上传到gpu上都会有io_copy和layout转换操作。

注:由于担心该pass(在optimizer.h)的执行顺序的位置对其它target有影响,目前只对arm cpu和opencl开启。

该pass实现前后tf_mobilenetv1性能对比

注:这里使用test_model_bin测试(带log多少影响实际性能,实际性能表现后续由QA来测给出具体报告,这里只体现收益百分比),均为armv7。repeats=100,warmup=20;

kirin820-亮屏 / tf_mobilenetv1 CPU-st-bigcore GPU-G57-opencl
pass实现前性能 46ms 36ms
pass实现后性能 43ms 26ms
性能收益相比实现前 6.5% 27.7%
snapdragon855-亮屏 / tf_mobilenetv1 CPU-st-bigcore GPU-adreno640-opencl
pass实现前性能 37.5ms 20.7ms
pass实现后性能 34.0ms 18.3ms
性能收益相比实现前 9.3% 11.5%

该pass实现前后tf_mobilenetv2性能对比

注:这里使用test_model_bin测试(带log多少影响实际性能,实际性能表现后续由QA来测给出具体报告,这里只体现收益百分比),均为armv7。repeats=100,warmup=20;

kirin820-亮屏 / tf_mobilenetv2 CPU-st-bigcore GPU-G57-opencl
pass实现前性能 31ms 35ms
pass实现后性能 29ms 29ms
性能收益相比实现前 6.4% 17.1%
snapdragon855-亮屏 / tf_mobilenetv2 CPU-st-bigcore GPU-adreno640-opencl
pass实现前性能 26.4ms 29.2ms
pass实现后性能 24.7ms 24.5ms
性能收益相比实现前 6.4% 16.0%

该pass实现前的tensorflow mobilenetv1尾部结构

下面表格为opencl的Profiler信息,conv2d后面为尾部结构:

OP KernelPlace
conv2d conv2d:opencl/float16/ImageDefault
layout layout:opencl/any/NCHW
io_copy io_copy:opencl/any/any
squeeze2 squeeze2:arm/float/NCHW
io_copy io_copy:opencl/any/any
layout layout:opencl/any/ImageDefault
reshape2 reshape2:opencl/float16/ImageDefault
layout layout:opencl/any/NCHW
io_copy io_copy:opencl/any/any
softmax softmax:arm/float/NCHW
io_copy io_copy:opencl/any/any
layout layout:opencl/any/ImageDefault
reshape2 reshape2:opencl/float16/ImageDefault
layout layout:opencl/any/NCHW
io_copy io_copy:opencl/any/any

该pass实现后的tensorflow mobilenetv1尾部结构

conv2d后面为尾部结构:该pass实现后,opencl模型减少11个op,arm cpu减少3个op(reshape2->squeeze2,reshape2)。

OP KernelPlace
conv2d conv2d:opencl/float16/ImageDefault
layout layout:opencl/any/NCHW
io_copy io_copy:opencl/any/any
softmax softmax:arm/float/NCHW

原模型digraph

image

上图是原模型(未加工具op如io_copy、layout、calib等),红框里的op全部优化掉:

  • 原模型减少3个op:reshape2->squeeze2,reshape2;
  • arm cpu减少3个op,因为没有layout和io_copy;
  • opencl减少11个op,另外8个是layout和io_copy。
指派人
分配到
审核者
Request review from
无
里程碑
无
分配里程碑
工时统计
标识: paddlepaddle/Paddle-Lite!3773
Source branch: github/fork/ysh329/remove-tf-reshape
渝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