【TVM 教程】端到端优化模型

[深度学习] 使用深度学习开发的循线小车 报错:Unable to find image 'openexplorer/ai_toolchain_centos_7_xj3:v2.3.3' locally。报错: ./best_line_follower_model_xy.pth cannot be opened。可以看到生成的文件 best_line_follower_model_xy.pth。报错:Module onnx is not installed!安装onox,onnxruntime。这是由于没有文件夹的写权限。 阅读详情

TVM 先已更新到 0.21.0 版本,TVM 中文文档已经和新版本对齐。

Apache TVM 是一个深度的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →Apache TVM

本教程演示了如何使用 Apache TVM 对机器学习模型进行优化。我们将使用来自 PyTorch 的预训练 ResNet-18 模型,并通过 TVM 的 Relax API 对其进行端到端优化。请注意,默认的端到端优化可能不适用于复杂模型。

准备工作​

首先,我们准备模型和输入信息。我们使用来自 PyTorch 的预训练 ResNet-18 模型。

import os
import numpy as np
import torch
from torch.export import export
from torchvision.models.resnet import ResNet18_Weights, resnet18

torch_model = resnet18(weights=ResNet18_Weights.DEFAULT).eval()

输出:

Downloading: "https://download.pytorch.org/models/resnet18-f37072fd.pth" to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth

  0%|          | 0.00/44.7M [00:00<?, ?B/s]
 12%|█▏        | 5.50M/44.7M [00:00<00:00, 56.3MB/s]
 25%|██▌       | 11.2M/44.7M [00:00<00:00, 57.8MB/s]
 38%|███▊      | 17.0M/44.7M [00:00<00:00, 58.4MB/s]
 51%|█████     | 22.6M/44.7M [00:00<00:00, 54.4MB/s]
 63%|██████▎   | 28.0M/44.7M [00:00<00:00, 53.3MB/s]
 74%|███████▍  | 33.1M/44.7M [00:00<00:00, 50.8MB/s]
 85%|████████▌ | 38.0M/44.7M [00:00<00:00, 49.1MB/s]
 98%|█████████▊| 43.8M/44.7M [00:00<00:00, 52.4MB/s]
100%|██████████| 44.7M/44.7M [00:00<00:00, 53.5MB/s]

回顾整体流程​

整体流程包括以下步骤:

  • 构建或导入模型: 构建一个神经网络模型,或从其他框架(例如 PyTorch、ONNX)中导入一个预训练模型,并创建 TVM 的 IRModule,其中包含了编译所需的所有信息,包括用于计算图的高级 Relax 函数,以及用于张量程序的低级 TensorIR 函数。
  • 执行可组合优化: 执行一系列优化转换,例如图优化、张量程序优化和库调度。
  • 构建与通用部署: 将优化后的模型构建为可部署模块,部署到通用运行时,并在不同设备(如 CPU、GPU 或其他加速器)上执行。

将模型转换为 IRModule​

接下来,我们使用 PyTorch 的 Relax 前端将模型转换为 IRModule,以便进行进一步优化。

import tvm
from tvm import relax
from tvm.relax.frontend.torch import from_exported_program

# 为 torch.export 提供示例输入参数
example_args = (torch.randn(1, 3, 224, 224, dtype=torch.float32),)

# 在 CI 环境中跳过运行
IS_IN_CI = os.getenv("CI", "") == "true"

if not IS_IN_CI:
    # 将模型转换为 IRModule
    with torch.no_grad():
        exported_program = export(torch_model, example_args)
        mod = from_exported_program(exported_program, keep_params_as_input=True)

    mod, params = relax.frontend.detach_params(mod)
    mod.show()

IRModule 优化​

Apache TVM Unity 提供了一种灵活的方式来优化 IRModule。围绕 IRModule 的优化可以与现有的 pipeline 灵活组合。注意,每一个转换都可以通过 tvm.ir.transform.Sequential 组合成一个优化 pipeline。

本教程聚焦于通过自动调优对模型进行端到端优化。我们利用 MetaSchedule 对模型进行调优,并将调优日志保存到数据库中。随后,我们将数据库中的结果应用于模型,以获得最佳性能。

TOTAL_TRIALS = 8000  # 如需更高性能可改为 20000
target = tvm.target.Target("nvidia/geforce-rtx-3090-ti")  # 替换为你的目标设备
work_dir = "tuning_logs"

if not IS_IN_CI:
    mod = relax.get_pipeline("static_shape_tuning", target=target, total_trials=TOTAL_TRIALS)(mod)

    # 仅展示主函数
    mod["main"].show()

构建与部署​

最后,我们构建优化后的模型,并将其部署到目标设备。在 CI 环境中会跳过此步骤。

if not IS_IN_CI:
    ex = tvm.compile(mod, target="cuda")
    dev = tvm.device("cuda", 0)
    vm = relax.VirtualMachine(ex, dev)
    # 需要在 GPU 上分配数据和参数
    gpu_data = tvm.runtime.tensor(np.random.rand(1, 3, 224, 224).astype("float32"), dev)
    gpu_params = [tvm.runtime.tensor(p, dev) for p in params["main"]]
    gpu_out = vm["main"](gpu_data, *gpu_params).numpy()

    print(gpu_out.shape)
TVM(端到端的优化栈)概述 陈天奇团队宣布推出 TVM,在微博上表示,「我们今天发布了 TVM,和 NNVM 一起组成深度学习到各种硬件的完整优化工具链,支持手机,cuda, opencl, metal, javascript 以及其它各种后端。欢迎对于深度学习,编译原理,高性能计算,硬件加速有兴趣的同学一起加入 dmlc 推动领导开源项目社区 。」 大多数现有系统针对窄范围的服务器级 GPU 进行优化,且需要在包括手机、I... 阅读详情

相关推荐

TVM:一种自动端到端优化的深度学习编译器

现有的 DL 框架依赖于计算图 IR 来实现优化,比如自动微分(Auto Differentiation)和动态内存管理。然而计算图层级(Graph-level)的优化对硬件后端特定算子层级(Operator-level)的变换来说,往往视角太高了。这些框架大部分关注的都是服务器级 GPU 设备中的一小撮,而把目标机相关的优化委派给高度工程化的、厂家特化的算子库。这类算子库需要大量的人工调优,也因此过于特殊化(普适性差)和不透明,导致不易于在硬件平台之间移植。即使是框架支持的后端,优化计算图时也需要在以下两

liteng607的博客 5095

TVM 学习指南(个人版)

最近粗略的看完了天奇大佬的MLC课程(顺便修了一些语法和拼写错误,也算是做了微弱的贡献hh),对TVM的近期发展有了一些新的认识。之前天奇大佬在《新一代深度学习编译技术变革和展望》一文中(链接:https://zhuanlan.zhihu.com/p/446935289)讲解了TVM Unify也即统一多层抽象的概念。这里的统一多层抽象具体包括AutoTensorization用来解决硬件指令声明和张量程序对接,TVM FFI(PackedFunc)机制使得我们可以灵活地引入任意的算子库和运行库函数并且在各

I good vegetable a! 8518

端到端TVM编译器(上)

端到端TVM编译器(上) 摘要 将机器学习引入到各种各样的硬件设备中。AI框架依赖于特定于供应商的算子库,针对窄范围的服务器级gpu进行优化。将工作负载部署到新平台,例如手机、嵌入式设备和加速器(例如,FPGA、ASIC)–需要大量手动操作。TVM,一个开源图形级的编译器和算子级优化,提供可移植到不同领域的深度学习工作负载性能硬件后端。TVM解决了特定于深度学习的优化挑战,例如高级算子融合、映射到任意硬件原语,存储潜伏期隐藏。通过采用一种新颖的基于学习的成本建模方法,用于快速探索代码优化。实验表明,TVM在

吴建明wujianming_110117 867

TVM[2] —— TVM简介和发展

深度学习编译器学习记录~

ict_rtf的博客 4012

TVM | 一种用于深度学习的端到端自动优化编译器

大家好,我是极智视界,本文解读一下 一种用于深度学习的端到端自动优化编译器 TVM。

极智视界 1196

TVM-初识TVM

目录TVM简介那么TVM是什么?TVM做了哪些工作 TVM简介 随着深度学习的发展,深度学习的能力可以说是越来越强大,识别率节节攀升,与此同时,深度学习框架也变得越来越多,目前比较主流的深度学习框架包括:Pytorch、TensorFlow、MxNet、Caffe、Keras等。 一般进行深度学习任务主要包括两部分,一是训练出精度比较高的模型,然后将其部署到对应的目标机器上。 针对第一部分,自然我们可以使用各种深度学习框架,通过修改网络参数等,训练出精度比较满意的模型,一般情况下,在训练深度学习模型的时候,

qq_33287871的博客 4433

【动手学习pytorch笔记】18.微调

微调 在大样本数据集上进行预训练,再在子任务上进行微调,这样可以使我的可学习参数不用从头开始学习,微调也是CV领域中很重要的一个技术,NLP也在向这个方向发展,也是因为微调,深度学习才在工业上取得了比较好的效果。 %matplotlib inline import os import torch import torchvision from torch import nn from d2l import torch as d2l train_imgs = torchvision.datasets.Ima

ymk1998的博客 1064

TVM论文阅读

TVM论文阅读1 介绍1.1 优化的基本挑战1.2 TVM:一个端到端优化堆栈2 优化计算图2.1 计算图2.2 操作符融合2.3 数据布局转换2.4 计算图级别优化的限制3 优化张量操作3.1 Tensor表达式语言3.2 调度空间3.3 协作式嵌套并行化3.4 张量化:生成硬件接口3.5 编译器的延迟隐藏支持4 代码生成和运行时支持4.1 代码生成4.2 运行时支持4.3 自动调优4.4 远程部署性能分析5 评估5.1 树莓派3B评估5.2 NVIDIA Tesla K80和GTX1080评估5.3 P

qq_33287871的博客 3172

TVM基础简介

TVM笔记

weixin_41671327的博客 869

【TVM系列二】TVM介绍

文章同步更新在公众号 AIPlayer,欢迎扫码关注,共同进步 目录 一、TVM的工作流程 1、整体流程 2、关键数据结构 3、Transformations 4、搜索空间和基于机器学习的转换 5、目标代码转化 二、逻辑架构组件 三、运行TVM实例 1、交叉编译runtime 2、编译模型 3、运行模型 四、总结 一、TVM的工作流程 TVM主要由两个部分组成: (1)TVM编译器:负责编译和优化模型 (2)TVM runtime:提供目标设备上运行模型的API ..

Flying Cat 6695

立创开源TinyAWG:基于ZYNQ7010的35MHz带宽200MSa/s任意波形发生器设计与实现

本文详细解析了立创开源TinyAWG的设计与实现,这是一款基于ZYNQ7010芯片的低成本高性能任意波形发生器。项目实现了35MHz带宽和200MSa/s采样率,核心采用ARM+FPGA协同架构,FPGA负责高速DDS信号生成,ARM运行Linux并搭载LVGL图形界面。文章涵盖了硬件选型、电路设计、软件逻辑及性能测试,为复刻和学习ZYNQ系统设计、高速DAC应用提供了完整参考。

weixin_42576467的博客 434

「TVM教程」理解 Relax 抽象层

TVM 现已更新到 0.21.0 版本,TVM 中文文档已经和新版本对齐。Apache TVM 是一个深度的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。在线运行 TVM 学习教程→Relax 是 Apache TVM Unity 策略中使用的一种图抽象方式,用于对机器学习模型进行端到端的优化。Relax 的主要目标是描述机器学习模型的结构与数据流,包括模型不同部分之间的依赖关系与连接方式,以及如何在硬件上执行该模型。wp:heading。

HyperAI超神经 215

通信原理与MATLAB(八):2PSK的调制解调

通信原理和MATLAB

菜yuan~的博客 3万+

TVM教程-----Bring Your Own Codegen

单个卷积后接 ReLU。该模型同时用于两个后端。

happyAnger6的专栏 372

6.4 实战项目:基于Agent内核构建Code Review智能体

本文介绍了一个基于Agent内核构建的智能Code Review系统实战项目。系统采用多Agent协作架构,包含代码质量分析、安全漏洞识别、性能优化建议等核心功能模块。文章详细展示了系统架构设计,采用协调器Agent管理多个专业Agent协同工作,并提供了基础Agent框架和协调器Agent的TypeScript实现代码。项目结合了AI Agent核心原理和多Agent协作机制,实现了自动化的代码审查流程,能够生成详细的审查报告,帮助开发者提升代码质量和安全性。

yonggeit的博客 3109

激光除草技术原理与应用全解析

激光除草技术通过光热、光化学等效应精准破坏杂草组织,核心参数包括功率(20-6000W)、波长(400nm-10.6μm)和脉冲宽度。主要应用于大田作物(如玉米、棉花)、经济作物(烟草、果树)及城市绿化,具有环保(无化学污染)、高效(识别率≥95%)和非接触等优势,但存在设备成本高(20-50万元)、技术门槛高等局限。当前技术融合AI识别、多光谱协同等创新,国产设备如华工智耘已实现95.3%识别精度。虽短期投入较高,但长期可降低30%除草成本,并带来环境效益(每亩减排1.2吨CO₂)

start_up_go的博客 557

初识 TVM

如有图像或公式显示错误,可以访问我的个人博客:https://www.wanglichun.tech/2019/11/15/tvm/ 笔者也是最近偶然的机会才开始接触TVM,使用过后发现,经过auto-tuning后的TVM模型在速度是竟然超过了TensorRT,并且笔者使用的是MXNet框架,TVM对MXNet绝对的友好,对于Pytorch等模型,可以使用ONNX,操作也一样简单,使用起来基本类...

小菜鸟的AI之路 7152

simulink的电动汽车制动系统热管理仿真

本文系统研究了电动汽车制动系统热管理仿真技术。通过建立机电液多物理场耦合模型,分析了不同工况下的动态热平衡特性。提出基于MPC的动态调节和NSGA-II多目标优化算法,使电池温度波动降低60%。创新性采用石墨烯相变材料与微通道液冷复合技术,冷却系统能耗减少40%。研究构建了完整的工程验证平台,涵盖200kW电制动测试台和高精度热成像系统。展望指出,未来将结合Transformer预测和强化学习算法,进一步优化热管理策略。该研究为电动汽车制动系统热管理提供了从理论建模到工程实施的完整解决方案。

xiaoheshang_123的博客 122

TVM概述

TVM TVM是陈天奇领导的一个DL加速框架项目。它处于DL框架(如tensorflow、pytorch)和硬件后端(如CUDA、OpenCL)之间,兼顾了前者的易用性和后者的执行效率。 官网: https://tvm.apache.org/ 代码: https://github.com/apache/tvm 论文: 《TVM: End-to-End Optimization Stack for Deep Learning》 和同类项目的差异: TFLite和ONNXRuntime只能接收特定格式的模

antkillerfarm的专栏 1万+

Qt入门教程【Core篇】singal and slot信号与槽

Qt中信号与槽singal and slot

小鱼酱的博客 2449

基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端

【代码】基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端。

weixin_42300449的博客 166

TVM模型C++部署

TVM C++部署demo

weixin_39427234的博客 1450

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

TVM编译优化阿里开源模型的尝试与性能对比

通过对阿里开源的“万物识别-中文-通用领域”模型进行TVM编译优化,我们实现了最高达9.86倍的推理加速,充分验证了TVM在真实工业级视觉模型上的优化潜力。

weixin_35045970的博客 994

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TVM编译器推理加速模型

简单上手深度学习TVM推理框架

Y_snower的博客 1823

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: AI 论文周报丨递归推理方法/轻量级解码器架构/深度卷积神经网络架构……多领域前沿动态一览
下一篇: 入选NeurIPS 2025,英伟达提出ERDM模型,解长期预报难题,中远期预报持续领先EDM基准
HyperAI超神经
博客等级 码龄7年 8873粉丝 1753原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值