RepVGG: 为硬件而生

一、背景

    深度学习在经过了这么多年的发展,理论层面已经到达了瓶颈期,应用层面却发展的如火如荼。行业应用铺天盖地而起,大规模落地、低成本部署、压缩成本,似乎成了每个行业里必不可逾越的大山,跨过去海阔天空,跨不过去就会在行业的浪潮里死掉。所以说,性能 + 精度双优的模型对目前的行业应用来说至关重要

    模型剪枝、蒸馏、量化等是目前一些常见的精简模型、提高模型性能的处理方法,如果模型的设计和硬件的契合度也很好,比如主流的nvidia的GPU显卡,又会是锦上添花的一笔,RepVGG正是如此做的。

二、动机

    原文提到 "Simple is Fast, Memory-economical, Flexible",其网络架构在推理阶段使用了清一色的3x3卷积,其设计理念秉承了机器学习中的奥卡姆剃刀原则。

  • 主流显卡集成类似 Winograd Conv 3x3 的卷积优化算法
  • 多分支存在延迟内存占用高、访存耗时问题,直通结构不存在这些问题
  • 高并行度。每个block使用的卷积数量是1~3之间
  • 更灵活的配置卷积层。比如ResNet要求必须按照残差块来组织,输入和输出维度需要一致

    以上这些是RepVGG体系结构设计的主要初衷。尽管相比一些其他模型RepVG有着更大的FLOPs,但是其在主流硬件上的FLOPS要比其他模型还要高。

三、原理

    RepVGG的全称是Re-param VGG,解释过来就是重参数化VGG网络,具体什么是重参?为何使用重参?

    如图,中间是RepVGG训练时的网络结构,直通分支之外加入一个1x1卷积分支和一个shortcut分支。右侧是RepVGG推理时的网络结构,1x1卷积分支和一个shortcut分支被剔除,保持推理阶段的直通结构,这个便是通过重参来实现的。

    简单来说,重参就是将1x1卷积和shortcut都转换为等价的3x3卷积形式,最后将3个3x3卷积相加便得到了右侧推理阶段的结构

    为什么训练和推理要这样区别对待那?直接上原文的解释。简单说,就是多分支结构训练阶段要优于单通路结构。

     有一个设想,在推理阶段直接将1x1卷积分支和shortcut分支去掉,是否也有类似的性能指标?这种做法也是比较普通的,比如:细粒度对象识别——DCL方法概述所介绍的DCL模型就行这样处理训练和推理阶段的网络结构。

四、总结

    RepVGG的重参思想个人认为是比较通用的,比如可以将ResNet改造为Rep系列尝试一下,主要的目的还是为了在保持精度的同时提高推理阶段的性能。

    通过RepVGG也学习到了一个有着非常高FLOPs的模型不一定比有着低FLOPs的模型推理速度慢,因为很多在硬件层面的优化策略我们需要兼顾到。

五、参考

RepVGG论文详解以及使用Pytorch进行模型复现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值