神经网络编译器的Tensor优化:auto tune和auto schedule

一般情况下,深度神经网络的计算本质上是一对tensor的计算,例如常见的conv2d的计算本质上是一个7层的for循环,那么底层的硬件,例如内存大小,SM的数量,threads和blocks等都会对最终的for循环造成影响。

现存的深度学习框架(例如Tensorflow,PyTorch ,MXNet)会将DNN中的计算映射到其底层提供的向量计算内核库(例如cuDNN,MKL-DNN)来实现高性能。 但是,这些内核库存在以下几个问题:

  • 现存的加速库cuDnn,MKL-DNN针对Tensor的优化是需要耗费大量的人力和经验的。
  • 硬件的发展导致会有更多的硬件出现,这种情况下再去人工手写就很窒息。

因此,目前大家希望设计一套自动搜索的过程。

  • 搜什么:搜tensor计算的for循环如何部署,例如for循环如何安排,如何切割,如何和底层PE map,因此我们针对一个for循环,其实是可以得到一个模板的,每个模板是有参数的。因此搜索就分为两个:搜模板和搜参数。例如图a展示的就是现在模板定了(for循环的次序定了),只需要搜 for循环的参数;图b展示的是搜模板,是通过我规定模板的次序(譬如说先split循环的轴,然后reorder等),然后按照我们规定的顺序进行搜索。所谓的beam搜索是指站在当前的搜索节点上,我们选择最优的几个节点,站在这个节点上往下一个搜索节点走,这种beam 搜索会导致一个问题:局部最优解不一定是全局最优解。
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值