文章目录
介绍
Layergroup目前没找到严格、明确的定义,因为不同厂家的框架考虑的因素不同,但是基本逻辑是差不多的。一般来说,Layergroup是一种计算图优化方法,旨在根据约束条件将若干层(算子)组合起来形成一个复合算子以满足后端需要。而计算图分割是针对异构执行环境的计算图优化操作,与Layergroup没有绝对的关系。一般由于专属硬件的资源受限,所以会执行layergroup操作。
这里需要解释以下算子融合和Layergroup的区别。这两者很多时候是被混用的,所以说layergroup没有明确的定义。其实二者还是有差别的。首先,二者的作用都是将计算图中若干连续算子组合为一个大的复合算子,利用局部性原理,提升算子访存命中率,减少输入输出数据访存次数以提高性能。其中,算子融合更侧重于细节的优化,一般会对几个算子先做代数上的融合操作,去掉一些中间变量,简化计算过程等;然后针对代数公式,结合硬件约束优化kernel,比如内存的复用、多线程、流水线等。但是由于硬件的约束,代数上可等价替换的,工程实现上却不容易实现,所以大多数AI框架可以融合的算子并不多。但TVM不同,由于TVM引入了计算调度分离策略以及其强大的Codegen,TVM可以为并不同后端生成较多的融合算子。至于Layergroup,没有太多的代数优化,主要的作用就是根据后端约束(内存占用大小和占用时长),将若干连续算子封装为一个复合算子,整体只做一次内存读写操作,同时控制了复合算子的大小,降低kernel调用时的负载。layergroup中的算子还是Primmitive级别的,没有被修改。对于Layergroup得到的复合算子,需要Runtime和复合算子库的配合处理。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » TVM计算图分割--LayerGroup
发表评论 取消回复