当前位置: 首页 > news >正文

TVM计算图分割--LayerGroup

文章目录

    • 介绍
    • Layergroup调研
        • TVM中的Layergroup
          • TVM Layergroup进一步优化
          • MergeCompilerRegions处理菱形结构
          • TVM中基于Pattern得到的子图
        • TPUMLIR
        • 地平线的Layergroup

介绍

Layergroup目前没找到严格、明确的定义,因为不同厂家的框架考虑的因素不同,但是基本逻辑是差不多的。一般来说,Layergroup是一种计算图优化方法,旨在根据约束条件将若干层(算子)组合起来形成一个复合算子以满足后端需要。而计算图分割是针对异构执行环境的计算图优化操作,与Layergroup没有绝对的关系。一般由于专属硬件的资源受限,所以会执行layergroup操作。

这里需要解释以下算子融合和Layergroup的区别。这两者很多时候是被混用的,所以说layergroup没有明确的定义。其实二者还是有差别的。首先,二者的作用都是将计算图中若干连续算子组合为一个大的复合算子,利用局部性原理,提升算子访存命中率,减少输入输出数据访存次数以提高性能。其中,算子融合更侧重于细节的优化,一般会对几个算子先做代数上的融合操作,去掉一些中间变量,简化计算过程等;然后针对代数公式,结合硬件约束优化kernel,比如内存的复用、多线程、流水线等。但是由于硬件的约束,代数上可等价替换的,工程实现上却不容易实现,所以大多数AI框架可以融合的算子并不多。但TVM不同,由于TVM引入了计算调度分离策略以及其强大的Codegen,TVM可以为并不同后端生成较多的融合算子。至于Layergroup,没有太多的代数优化,主要的作用就是根据后端约束(内存占用大小和占用时长),将若干连续算子封装为一个复合算子,整体只做一次内存读写操作,同时控制了复合算子的大小,降低kernel调用时的负载。layergroup中的算子还是Primmitive级别的,没有被修改。对于Layergroup得到的复合算子,需要Runtime和复合算子库的配合处理。

http://www.lryc.cn/news/477658.html

相关文章:

  • OPPO开源Diffusion多语言适配器—— MultilingualSD3-adapter 和 ChineseFLUX.1-adapter
  • Spring 设计模式之责任链模式
  • 简单的 docker 部署ELK
  • 四款主流的3D创作和游戏开发软件的核心特点和关系
  • 聚划算!Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测
  • 信息安全工程师(76)网络安全应急响应技术原理与应用
  • 使用 OpenCV 实现图像的透视变换
  • openGauss数据库-头歌实验1-4 数据库及表的创建
  • 吉利极氪汽车嵌入式面试题及参考答案
  • pycharm中的服务是什么?
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第十七集:制作第二个BOSS燥郁的毛里克
  • 深度解析阿里的Sentinel
  • Linux系统-日志轮询(logrotate)
  • 机器学习在时间序列预测中的应用与实现——以电力负荷预测为例(附代码)
  • 白杨SEO:百度在降低个人备案类网站搜索关键词排名和流量?怎样应对?【参考】
  • 前端实现json动画(附带示例)
  • AI 写作(一):开启创作新纪元(1/10)
  • C#-类:索引器
  • Neo4j Cypher WHERE子句详解 - 初学者指南
  • 【CSS】标准怪异盒模型
  • 栈详解
  • 硬盘 <-> CPU, CPU <-> GPU 数据传输速度
  • 数据编排与ETL有什么关系?
  • 来了解一下!!!——React
  • 用vite创建项目
  • json-server的使用(根据json数据一键生成接口)
  • 半波正弦信号的FFT变换
  • Python数据分析NumPy和pandas(二十三、数据清洗与预处理之五:pandas的分类类型数据)
  • redis源码系列--(二)--multi/exec/eval命令执行流程
  • 【力扣打卡系列】移动零(双指针)