
TVM
文章平均质量分 85
HyperAI超神经
链接人工智能新场景
展开
-
【TVM教程】使用 TVMC Micro 执行微模型
首先在 Relay 中定义一个要在设备上执行的模型,然后从 Relay 模型中创建一个 IRModule,并用随机数填充参数。data,weight,下面定义描述执行环境的 TVM target,它与其他 microTVM 教程中的 target 定义非常相似。不同之处是用 C Runtime 来生成模型。在物理硬件上运行时,选择一个 target 和一个描述硬件的单板。在本教程的 PLATFORM 列表中可以选择多个硬件目标。运行本教程时用 –platform 参数来选择平台。原创 2025-04-01 21:32:11 · 824 阅读 · 0 评论 -
【TVM教程】使用 TVMC Micro 执行微模型
Apache TVM是一个深度的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →本教程介绍了如何为微型设备编译一个微模型,并在 Zephyr 平台上构建一个程序,来执行这个模型,烧录程序,并用 tvmc micro 命令来执行所有模型。在进行本教程之前你需要安装 python 和 Zephyr 依赖。原创 2025-03-25 17:02:00 · 750 阅读 · 0 评论 -
【TVM教程】使用自定义调度规则(Sketch Rule)在 CPU 上自动调度稀疏矩阵乘法
首先用几个 relu 和 bias 相加来定义一个稀疏 matmul 的计算,该函数返回输入/输出张量列表,auto-scheduler 可以从这些张量中得到整个计算图。在调优之前,需要为稀疏密集操作定义 CustomSketchRule。CustomSketchRule 由两部分组成:条件函数和应用函数。条件函数:描述应用此调度规则的时间。例如,通过匹配名称和标签将规则应用于稀疏操作。应用函数:描述生成初始草图的方式。可以用 auto-scheduler 提供的循环状态 API 来实现。原创 2025-03-18 17:50:47 · 1056 阅读 · 0 评论 -
【TVM教程】为 Mali GPU 自动调度神经网络
首先要在 Relay 前端 API 中定义网络,可以从加载一些预定义的网络,也可以从 MXNet、ONNX 和 TensorFlow 加载模型。原创 2025-03-11 17:20:20 · 733 阅读 · 0 评论 -
【TVM教程】为 NVIDIA GPU 自动调度神经网络
首先,要用 Relay 前端 API 定义网络。可以从加载一些预定义的网络。也可以从 MXNet、ONNX、PyTorch 和 TensorFlow 加载模型(参见前端教程对于卷积神经网络,尽管 auto-scheduler 可以在任何布局下正常运行,但通过 NHWC 布局实现的性能最佳。auto-scheduler 对 NHWC 布局进行了很多优化,因此推荐将模型转换为 NHWC 布局,从而得以使用 auto-scheduler。可用pass 在 TVM 中进行布局转换。原创 2025-02-25 14:32:40 · 1340 阅读 · 0 评论 -
【TVM 教程】为 x86 CPU 自动调优卷积网络
首先在 Relay 前端 API 中定义网络,可以从加载一些预定义的网络,也可以使用 Relay 构建。还可以从 MXNet、ONNX 和 TensorFlow 加载模型。本教程用 resnet-18 作为调优示例。"""获取网络的符号定义和随机权重"""# MXNet 模型的示例else:# 将「llvm」替换为你的 CPU 的 target。# 例如,对于支持 Intel Xeon Platinum 8000 系列的 AWS EC2 c5 实例,原创 2025-02-19 13:01:33 · 269 阅读 · 0 评论 -
【TVM教程】为 GPU 自动调度卷积层
Apache TVM 是一个深度的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →https://tvm.hyper.ai/作者:Lianmin Zheng, Chengfan Jia本文介绍如何为 GPU 使用 auto-scheduler。与 AutoTVM 不同,AutoTVM 依赖手动模板来定义搜索空间,而 auto-scheduler 不需要任何模板。用户只需编写计算声明,无需任何调度命令或模板。auto-scheduler 可以自动生成一个大的搜原创 2025-02-10 15:52:24 · 852 阅读 · 0 评论 -
【TVM教程】为 Mobile GPU 自动调优卷积网络
首先要在 Relay 前端 API 中定义网络,可以从 relay.testing 加载一些预定义的网络,也可以从 MXNet、ONNX 和 TensorFlow 加载模型。原创 2025-01-27 15:54:22 · 651 阅读 · 0 评论 -
【TVM教程】为 ARM CPU 自动调优卷积网络
首先要在relay前端API中定义网络,可以从relay.testing加载一些预定义的网络,还可以从MXNet、ONNX和TensorFlow加载模型。原创 2025-01-20 13:58:00 · 840 阅读 · 0 评论 -
【TVM 教程】为 x86 CPU 自动调优卷积网络
首先在 Relay 前端 API 中定义网络,可以从 relay.testing 加载一些预定义的网络,也可以使用 Relay 构建 relay.testing.resnet。还可以从 MXNet、ONNX 和 TensorFlow 加载模型。本教程用 resnet-18 作为调优示例。"""获取网络的符号定义和随机权重"""# MXNet 模型的示例else:# 将「llvm」替换为你的 CPU 的 target。原创 2025-01-13 13:25:51 · 302 阅读 · 0 评论 -
【TVM 教程】在 NVIDIA GPU 上调优高性能卷积
Apache TVM 是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →https://tvm.hyper.ai/作者:Lianmin Zheng本教程介绍如何为 NVIDIA GPU 编写高性能可调模板。通过在此模板上运行自动调优器,可在许多情况下胜过供应商提供的 cuDNN 库。注意,本教程不会在 Windows 或最新版本的 macOS 上运行。如需运行,请将本教程的主体放在 if name == “main”: 代码块中。安装依赖原创 2025-01-06 16:29:16 · 585 阅读 · 0 评论 -
【TVM 教程】为 NVIDIA GPU 自动调优卷积网络
首先要在 Relay 前端 API 中定义网络,可以从加载一些预定义的网络。也可以从 MXNet、ONNX 和 TensorFlow 加载模型。原创 2024-12-25 18:10:20 · 858 阅读 · 0 评论 -
【TVM 教程】如何使用 TensorCores 优化卷积
每个 Tensor Core 都提供了一个 4x4x4 矩阵处理数组,它使得,其中 A、B、C 和 D 是 4x4 矩阵,如图所示。矩阵乘法输入 A 和 B 是 FP16 矩阵,而累加矩阵 C 和 D 可以是 FP16 或 FP32 矩阵。但是,CUDA 开发者只能使用 warp 级原语在张量核上执行 16x16x16 半精度矩阵乘法。调用矩阵乘法之前,开发者必须使用原始显式地将数据从内存加载到寄存器中。NVCC 编译器将该原语转换为多个内存加载指令。原创 2024-12-17 19:24:03 · 878 阅读 · 0 评论 -
【TVM 教程】如何在 GPU 上优化卷积
Apache TVM 是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →本教程演示了如何在 TVM 中编写高性能卷积实现。以正方形大小的输入张量和滤波器为例,假设卷积输入的 batch 较大。在此示例中,使用不同的布局来存储数据,以实现更好的数据局部性。缓冲区布局是 HWCN,分别代表高度、宽度、通道、batch。原创 2024-12-10 16:43:43 · 742 阅读 · 0 评论 -
【TVM 教程】如何在 CPU 上优化 GEMM
应用上述简单优化后,仅用 18 行代码,就可以达到使用 MKLnumpy性能的 60%。注意,网页上的输出反映了非专有 Docker 容器上的运行时间,是不可靠的。推荐自己运行本教程,观察 TVM 的性能提升。下载 Python 源代码:opt_gemm.py下载 Jupyter Notebook:opt_gemm.ipynb。原创 2024-12-04 15:22:58 · 686 阅读 · 0 评论 -
【TVM 教程】用 TEDD 进行可视化
用 Bias 和 ReLU 为卷积构建一个张量表达式示例,首先连接 conv2d、add 和 relu TOPIs,然后创建一个 TOPI 通用 schedule。batch = 1kernel = 3stride = 1本教程演示 TEDD 的用法。用一个 TOPI 构建的示例来显示底层的 schedule,可在任何调度原语之前和之后用它来检查其效果。下载 Python 源代码:tedd.py下载 Jupyter Notebook:tedd.ipynb。原创 2024-11-26 14:06:52 · 906 阅读 · 0 评论 -
【TVM 教程】使用元组输入(Tuple Inputs)进行计算和归约
本教程介绍元组输入操作的用法。描述常规的批量计算。用元组输入描述归约操作。注意,只能根据操作而不是张量来调度计算。下载 Python 源代码:tuple_inputs.py下载 Jupyter Notebook:tuple_inputs.ipynb。原创 2024-11-19 12:02:35 · 474 阅读 · 0 评论 -
【TVM 教程】使用 Tensorize 来利用硬件内联函数
Apache TVM 是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 → https://tvm.hyper.ai/原创 2024-11-12 11:43:21 · 785 阅读 · 0 评论 -
【TVM 教程】外部张量函数
Apache TVM 是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 → https://tvm.hyper.ai/原创 2024-11-05 11:20:35 · 368 阅读 · 0 评论 -
【TVM 教程】线性和递归核
Apache TVM 是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 → https://tvm.hyper.ai/原创 2024-10-29 12:09:45 · 362 阅读 · 0 评论 -
【TVM 教程】内联及数学函数
TVM 学习原创 2024-10-22 11:38:19 · 1181 阅读 · 0 评论 -
【TVM 教程】规约(reduce)
除了te.sumtvm.te.min和tvm.te.max等内置规约操作外,还可以通过定义交换规约操作。本教程演示了如何规约 schedule。用 reduce_axis 描述规约。如需并行性(parallelism),用 rfactor 来分解轴。通过定义新的规约操作。原创 2024-10-16 12:49:05 · 910 阅读 · 0 评论 -
【TVM 教程】TVM 中的 Schedule 原语
本教程介绍了 TVM 中的 schedule 原语(使得用户可以轻松、灵活地调度计算)。通过一系列操作描述你的计算。使用原语来调度计算。编译并运行,查看性能差异。根据运行结果来调整 schedule。下载 Python 源代码:schedule_primitives.py下载 Jupyter Notebook:schedule_primitives.ipynb。原创 2024-10-09 18:27:41 · 511 阅读 · 0 评论 -
【TVM 教程】使用 Relay Visualizer 可视化 Relay
构建一个包含多个GlobalVar的 Relay IR 模块示例。定义一个add函数,并在 main 函数中调用。有时想要强调感兴趣的信息,或者针对特定用途对事物进行不同的解析,需要遵守接口来定制解析器,下面演示如何自定义relay.var的解析器,需要实现抽象接口。self,# 没有引入边缘。所以返回一个空列表# 将其他类型委托给其他解析器。将解析器和感兴趣的渲染器传递给 visualizer,这里只用终端渲染器。原创 2024-09-27 13:29:21 · 437 阅读 · 0 评论 -
【TVM 教程】在 Relay 中使用 Pipeline Executor
Apache TVM 是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →本教程介绍如何将「Pipeline Executor」与 Relay 配合使用。原创 2024-09-11 12:40:30 · 484 阅读 · 0 评论 -
【TVM 教程】在 Relay 中使用外部库
本文介绍如何将 cuDNN 或 cuBLAS 等外部库与 Relay 一起使用。Relay 内部用 TVM 来生成 target-specific 的代码。例如,TVM 使用 CUDA 后端为用户提供的网络中的所有层生成 CUDA 内核。有时也可将各个供应商开发的外部库合并到 Relay 中,TVM 有一种机制可以透明地调用这些库——对于 Relay 用户,只需要设置一个适当的 target 字符串。使用 Relay 的外部库前,用你要用的库构建 TVM。例如,要用 cuDNN,需启用。原创 2024-09-04 13:42:24 · 790 阅读 · 0 评论 -
【TVM 教程】使用 tvmc 接口在 Adreno™ 上部署预训练模型
本文是一篇关于在 Adreno™ 上部署预训练 Keras resnet50 模型的逐步教程。此外,您应该已经为 Android 构建了 TVM。请参阅以下说明,了解如何构建它并设置 RPC 环境。原创 2024-08-21 17:44:59 · 235 阅读 · 0 评论 -
【TVM 教程】在 Adreno™ 上部署预训练模型
本文是一个逐步教程,演示如何在 Adreno 上(不同精度)部署预训练的 PyTorch ResNet-18 模型。首先,我们需要安装 PyTorch 与 TorchVision,因为我们将使用它作为我们的模型库。除此之外,您应该已经为 Android 构建了 TVM。请参阅以下说明,了解如何构建它。在构建部分之后,构建目录中应该有两个文件:“libtvm_runtime.so” 和 “tvm_rpc”。让我们将它们推送到设备上并运行 TVM RPC 服务器。原创 2024-08-16 18:29:18 · 1058 阅读 · 0 评论 -
【TVM 教程】在 CPU 上部署 Hugging Face 剪枝模型
更多 TVM 中文文档可访问 →本教程演示如何采用剪枝后的模型(本例中模型是),并使用 TVM 来利用模型稀疏支持来加速。尽管本教程的主要目的是在已经修剪过的模型上实现加速,但评估修剪后模型的速度也十分必要。为此,我们提供了一个函数采用未修剪的模型,并将其权重替换为指定稀疏的随机和修剪权重。确定模型是否值得修剪时,这可能是一个有用的特性。和。剪枝是一种主要通过将权重值替换为 0 来减小模型参数大小的技术,尽管选择哪些权重设置为 0 的方法众多,但最直接的方法是选择具有最小值的权重。原创 2024-08-05 16:02:59 · 949 阅读 · 0 评论 -
【TVM 教程】在 CUDA 上部署量化模型
更多 TVM 中文文档可访问 →本文介绍如何用 TVM 自动量化(TVM 的一种量化方式)。有关 TVM 中量化的更多详细信息,参阅。本教程将在 ImageNet 上导入一个 GluonCV 预训练模型到 Relay,量化 Relay 模型,然后执行推理。原创 2024-08-02 16:51:59 · 517 阅读 · 0 评论 -
【TVM 教程】使用 TVM 部署框架预量化模型 - 第 3 部分(TFLite)
更多 TVM 中文文档可访问 →此教程介绍如何量化 TFLite 计算图,并通过 TVM 编译和执行。有关使用 TFLite 量化模型的更多详细信息,参阅。TFLite 模型下载。开始前,先安装 TensorFlow 和 TFLite 包。执行命令检查 TFLite 包是否安装成功。原创 2024-07-18 18:34:27 · 1274 阅读 · 0 评论 -
【TVM 教程】使用 TVM 部署框架预量化模型
本文介绍如何将深度学习框架量化的模型加载到 TVM。预量化模型的导入是 TVM 中支持的量化之一。有关 TVM 中量化的更多信息,参阅。这里演示了如何加载和运行由 PyTorch、MXNet 和 TFLite 量化的模型。加载后,可以在任何 TVM 支持的硬件上运行编译后的量化模型。原创 2024-07-12 17:12:57 · 1138 阅读 · 0 评论 -
【TVM 教程】编译 PyTorch 目标检测模型
本文介绍如何用 Relay VM 部署 PyTorch 目标检测模型。首先应安装 PyTorch。此外,还应安装 TorchVision,并将其作为模型合集(model zoo)。PyTorch 版本应该和 TorchVision 版本兼容。目前 TVM 支持 PyTorch 1.7 和 1.4,其他版本可能不稳定。原创 2024-06-07 18:42:24 · 637 阅读 · 0 评论 -
在 Jetson Nano 上部署预训练模型
此教程介绍如何用 Relay 编译 ResNet 模型,并将其部署到 Jetson Nano。原创 2024-03-20 15:14:53 · 794 阅读 · 0 评论 -
在 Android 上部署预训练模型
更多 TVM 中文文档可访问 →https://tvm.hyper.ai/docs。原创 2024-03-12 16:44:02 · 815 阅读 · 0 评论 -
部署到 Adreno™ GPU
Adreno™ 是由高通开发并用于许多 SoC 的图形处理单元(GPU)半导体 IP 核系列。Adreno™ GPU 可以加速复杂几何图形的渲染,在提供高性能图形和丰富的用户体验的同时拥有很低的功耗。TVM 使用 TVM 的原生 OpenCL 后端 和 OpenCLML 后端以支持加速 Adreno™ GPU 上的深度学习。TVM 的原生 OpenCL 后端通过结合纹理内存使用和 Adreno™ 友好布局来改进 Adreno™。原创 2024-03-10 12:10:14 · 1084 阅读 · 0 评论 -
Relay BNNS 集成
Apple BNNS 库由一组函数构成,这些函数用来构建推理(和训练)过程中的神经网络。macOS、iOS、tvOS 和 watchOS 支持 Apple BNNS。BNNS 提供在这些平台上支持的所有 CPU 上执行的原语,并针对高性能和低能耗进行了优化。这种集成将尽可能多的算子从 Relay 迁移到 BNNS。BNNS runtime 是平台 API 的一部分,且在现代所有 Apple 的操作系统上都可用。使用 BNNS 的应用程序不依赖额外的外部依赖。原创 2024-03-05 16:18:51 · 563 阅读 · 0 评论 -
Vitis AI 集成
更多 TVM 中文文档可访问 →Apache TVM 是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。IApache TVM 中文站**Vitis AI **是用在 Xilinx 平台(包括边缘设备和 Alveo 卡)上进行硬件加速 AI 推理的 Xilinx 开发堆栈。它由优化的 IP、工具、库、模型和示例设计组成。在设计时兼顾高效率和易用性,充分发挥了 Xilinx FPGA 和 ACAP 上 AI 加速的潜力。原创 2024-02-06 11:43:56 · 1248 阅读 · 0 评论 -
Relay TensorRT 集成
NVIDIA TensorRT 是一个用于优化深度学习推理的库。这种集成尽可能多地将算子从 Relay 迁移到 TensorRT,无需对 schedule 调优,即可提升 NVIDIA GPU 的性能。本教程演示如何安装 TensorRT 以及如何构建 TVM,来启用 TensorRT BYOC 和 runtime。此外,还给出了示例代码,演示了如何用 TensorRT 编译和运行 ResNet-18 模型,以及如何配置编译和 runtime 设置。原创 2024-01-30 11:04:26 · 721 阅读 · 0 评论 -
Relay Arm® 计算库集成
Arm 计算库(ACL)是一个开源项目,它为 Arm CPU 和 GPU 提供了加速内核。目前,集成将算子迁移到 ACL 以在库中使用手工制作的汇编程序例程。通过将选择算子从 Relay 计算图迁移到 ACL,可在此类设备上实现性能提升。原创 2024-01-23 13:03:50 · 1214 阅读 · 0 评论