首页 > 其他分享 >ML Sys | Apache TVM 添加新 backend

ML Sys | Apache TVM 添加新 backend

时间:2024-04-20 11:23:03浏览次数:20  
标签:tvm Sys ML rfcs TVM apache UMA Apache

硬件决定上限,软件实现上限。即使是顶尖的硬件也需要匹配优秀的软件栈才能发挥最大功效。如今 Machine Learning Compiler 主要有 Apache TVM 和 MLIR(Multi Level IR) 两种范式。让我们来研究一下 TVM 如何支持新的 backend。

Apache TVM 后端主要维护 GPU 和 CPU 平台,对于新后端文档不是很完善,想要搞懂还得深入理解 TVM 源码。

tvm 有俩种添加后端的接口[1]

  • Porcelain Layer: UMA (Universal Modular Accelerator Interface)
  • Plumbing Layer: BYOC (Bring Your Own Codegen)

前者轻量纯 Python API 接口,后者则是 Python + C++。 UMA codegen 只支持生成 C 代码,想要高自由度不得不淌 BYOC 这趟浑水了。

Install

官网提供了一个 vanilla backend 的例子 [2],但默认 pip 仓库的 pre-build 没有开启 UMA 功能,需要我们重新 build 安装。

主要流程按照官网教程 [3],除了以下俩点:

  • 编译 tvm 时在 config.cmake 里把 set(UMA ON)set(MICRO ON) 选项打开。
  • 安装 tvm 时用 develop 模式安装。 UMABackend 类中有个地方是根据相对路径查找内容,这里必须按照 develop 模式安装 Python package,防止将内容迁移虚拟环境目录下。切换到 python 目录下调用 python setup.py develop 安装

其余部分参考官网教程,应该就能跑通例程。

UMA 结构解析

TODO

BYOC

TODO


  1. Tvm-rfcs/rfcs/0060_UMA_Unified_Modular_Accelerator_Interface.md at main · apache/tvm-rfcs. (不详). GitHub. 取读于 2024年4月17日, 从 https://github.com/apache/tvm-rfcs/blob/main/rfcs/0060_UMA_Unified_Modular_Accelerator_Interface.md ↩︎

  2. Making your Hardware Accelerator TVM-ready with UMA — tvm 0.17.dev0 documentation. (不详). 取读于 2024年4月20日, 从 https://tvm.apache.org/docs/tutorial/uma.html ↩︎

  3. Install from Source—Tvm 0.17.dev0 documentation. (不详). 取读于 2024年4月20日, 从 https://tvm.apache.org/docs/install/from_source.html#install-from-source ↩︎

标签:tvm,Sys,ML,rfcs,TVM,apache,UMA,Apache
From: https://www.cnblogs.com/devil-sx/p/18147490

相关文章

  • P7981 [JRKSJ R3] system
    P7981[JRKSJR3]system建图看到这题,容易想到\(i\rightarrowa_i\),那么这个过程实际上形成了基环树森林。接下来分析操作在图上的变化。我们以环上的每个节点作为根,手玩之后就可以发现,经过\(k\)次操作后,每个节点的值就是\(2^k\)级父亲(包括自己)。虽然这样不够严谨,因为跳完......
  • MIT6.S081 - Lecture3: OS Organization and System Calls
    为什么要使用操作系统使用操作系统的主要原因是为了实现CPU多进程分时复用以及内存隔离如果没有操作系统,应用程序会直接与硬件进行交互,这时应用程序会直接使用CPU,比如假设只有一个CPU核,一个应用程序在这个CPU核上运行,但是同时其他程序也需要运行,因为没有操作系统来帮助......
  • 学习 XQuery:XML数据查询的关键
    XQuery是XML数据的查询语言,类似于SQL是数据库的查询语言。它被设计用于查询XML数据。XQuery示例for$xindoc("books.xml")/bookstore/bookwhere$x/price>30orderby$x/titlereturn$x/titleXQuery的特点XQuery是查询XML数据的语言,用于XML就像SQL......
  • SciTech-BigDataAIML-Adam动量自适应的梯度快速收敛
    http://faculty.bicmr.pku.edu.cn/~wenzw/optbook/pages/stograd/Adam.html版权声明此页面为《最优化:建模、算法与理论》、《最优化计算方法》配套代码。代码作者:文再文、刘浩洋、户将,代码整理与页面制作:杨昊桐。Adam算法考虑优化问题:minx∈Rnf(x)=1N∑i=1Nfi(x).Adam算......
  • 错误:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本问题
    最近在虚拟机上搭一套新的开发环境,运行项目时报错。如果你的系统中已经安装了Oracle客户端软件,那么可能需要检查一些环境变量。例如,你可以通过在系统的环境变量中设置PATH变量来包含Oracle客户端的路径,这样可以帮助.NET框架找到所需的Oracle客户端软件。此外,如果你的Oracle客户......
  • SystemVerilog -- 6.2 Interface Bundles
    Introduction涵盖了对接口的需求,如何实例化接口并将其与设计连接起来。设计有两种编写方式:通过使用现有接口名称专门使用该接口通过使用可以将任何接口传递到的泛型接口句柄显然,当接口定义更新到具有不同名称的较新版本时,泛型方法效果最佳,并且需要支持使用它的旧设计。Examp......
  • 2024-04-19 前端常见面试题汇总(html篇)
    1、xhtml和html有什么区别?语法要求:XHTML要求严格的XML语法,例如所有标签必须小写,所有标签必须关闭(即使是空元素也要使用闭合标签),所有属性必须使用引号。HTML语法相对更宽松,不强制要求标签闭合,标签和属性的大小写不敏感。文件类型:XHTML文档必须以.xml、.xhtml或者.xhtml......
  • systemctl 命令和参数
     systemctl命令和参数命令格式systemctl命令服务名称例如systemctlstartphp.serviceCopy命令1start开启2stop关闭3restart重启4status查看状态5is-active查看激活与......
  • FineReport11 报表技巧01- 单元格HTML显示tag颜色标签
    背景FineReport报表制作中,经常需要将某些单元格内容以彩色标签显示,其中根据不同对象内容进行不同展示,效果如下图所示:实现效果为:1、“年龄”列内容根据年龄段不同显示为不同颜色且带边框效果;2、“性别”列性别为“男”显示为蓝色,性别为“女”显示为红色,性别为“未知”显示为灰......
  • 《Pyramid Codes: Flexible Schemes to Trade Space for Access Efficiency in Reliab
    问题1:Introduction部分,第五段,[16,12]ERC和3-Copy达到了相同的可靠性,在每一个块独立失败概率为0.01的情况下,这个是怎么证明的。问题2:同上,第五段后半部分,那么多的IO次数是怎么计算出来的。在系统中,要分清各种性能指标,读和写是不一样的,第六段提到的是写性能,主要方法就是先用复制的方......