最近看了 @徐啸 写的论文解读,通俗易懂的文风让人印象深刻,我也打算写两篇。力争于文有据,简洁明快。
这个系列的论文解读
- 力求精简,我不想做翻译。
- 会在每个关键词后标明序号(如 [6]),可在本文 有据 一节中,按序号查看出处,方便读者回原文定位。
文章标题:TASO: optimizing deep learning computation with automatic generation of graph substitutions
文章出处:SOSP '19/Stanford University
文章地址:https://cs.stanford.edu/~matei/papers/2019/sosp_taso.pdf
前排广告,欢迎订阅专栏
SysMLzhuanlan.zhihu.com解决的问题
深度学习框架可以通过对计算图进行等价变换来减少运算时间。本文想自动寻找在特定体系结构&特定框架上,最优的等价变换。
下面进一步解释这个问题。
定义 1:等价变换
如 图1
,这个变换改变了 转置操作
的位置,左右两图结果依然相等。但在特定计算机体系结构、特定框架下,两图性能可能不相等。如果用户描述了其中一种,就可以用速度更快的那一种替代。
又如 图2
,将小矩阵拼凑成大矩阵进行运算,也是等价变换的一种,也可能存在性能差异。
问题 1:目前框架中的“等价变换”为手工定义
目前主流框架(TensorFlow, PyTorch, TensorRT, TVM)的等价变换规则,都是依照过去的优化经验,手工定义的。
手工定义扩展性差 [3],易出错 [4]。
问题 1.1:手工定义扩展性差 [3]
扩展性分为两种
- 加入一个新操作(如卷积操作的变种ÿ