基于CuDNN如何实现自动选取最优卷积算法?

本文探讨了在深度学习中如何利用CuDNN的GET和FIND API来选择最优卷积算法,平衡时间和空间效率。通过对CuDNN的find方法的深入分析,阐述了自动调优卷积算法的关键点,并提到了在混合精度训练中应注意的卷积算法选取策略。
摘要由CSDN通过智能技术生成

何为最优


最优并不是绝对的,而是需要针对具体的应用场景而言.在深度学习应用中,训练时我们往往对训练速度有要求,希望越快越好,也就意味着能够在更短的时间训练完我们的模型,更小的调整参数的成本;而对于随着网络模型的深度加大,模型本身训练时所占用的显存空间很大,这时候就要求我们的选取的卷积算法能够竟可能的少占用临时显存空间.综上,这是一个时间与空间的权衡,本文会结合当前最新的CuDNN分析如何实现自动选取最优卷积算法.

时间与空间的权衡


速度越快的算法往往依赖于更大的临时空间,也就是所谓空间换时间,所以最优的卷积算法还是应该结合我们具体的需求来定义.

问题来源?CuDNN


CuDNN提供了多种卷积算法的实现,同时也提供了两类API,分别为get/find,用户自行调用得到满足特定条件下的最优卷积算法实现.其中GET类型方法是根据经验得到对应的卷积算法,比如输入的layout, filter的大小,卷积输入的数据类型等等,这个查找过程是常数级别,笔者亲测过.这个方法的好处是调用简单,CuDNN根据一些经验设定简易判断,同时给定是否有空间限制的选项,比如有workspace_limit, fastest,no_workspace_limit等.但是,通过这个API获得的卷积算法并不一定是最快的,读者可以自行验证.另外就是find类型的接口,原理是遍历一遍所有的卷积算法,返回一个perf结果,包括每个算法实际运行所需的时间以及临时空间大

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值