【TVM 教程】使用 tvmc 接口在 Adreno™ 上部署预训练模型

💡 原文中文,约36400字,阅读约需87分钟。
📝

内容提要

本文介绍了在Adreno™上部署预训练Keras resnet50模型的步骤,包括环境配置、模型制作、加载、自动调优、编译和部署。文章最后展示了在RPC设置上的运行结果。

🔎

延伸解读

本地演示与真实设备部署的关键差异

教程默认在 x86 服务器上以 local_demo=True 运行,目标设为 llvm,便于快速验证流程。若要在真实 Android 设备上通过 RPC 部署,需将 local_demo 设为 False,并将目标改为 opencl 或 opencl -device=adreno,同时指定 target_host 为 Android 架构。这种设计让读者可以先在本地熟悉步骤,再迁移到实际硬件,但需注意交叉编译器和 RPC 环境的配置。

自动调优的启用条件与代价

自动调优能针对 Adreno GPU 优化算子性能,但教程中默认关闭(is_tuning=False),因为它是计算密集且耗时的任务。启用时需要 RPC 设置,并指定调优记录文件、调优器(如 xgb)、重复次数和试验次数等参数。读者应根据实际部署目标(如 opencl -device=adreno)调整 target,并权衡调优带来的性能提升与时间成本。

OpenCLML 加速的编译与打包方式

当 enable_clml 为 True 时,编译会在目标后追加 clml,利用 OpenCLML 专有运算符库加速支持的算子。此时可将编译输出保存为 TVMCPackage(tar 存档),避免重复编译。加载包后可直接用于部署。注意,OpenCLML 仅加速其支持的算子,且需要交叉编译器和 target_host 配合,适合在真实设备上追求更高性能的场景。

❓

Q&A

如何在Adreno上部署Keras Resnet50模型?

在Adreno上部署Keras Resnet50模型需要配置环境、制作模型、加载模型、自动调优、编译和部署。

在Adreno GPU上部署时需要注意什么?

需要指定目标以利用内核和纹理的优势,并确保为Android构建TVM和设置RPC环境。

如何制作Keras Resnet50模型并保存?

使用TensorFlow的Keras库创建ResNet50模型,并将其保存为.h5文件。

如何将模型转换为TVM relay模块?

使用tvmc.load函数将模型从任何框架转换为TVM relay模块。

自动调优模型需要哪些设置?

自动调优需要RPC设置,并且可以通过API进行,确保is_tuning设置为True。

如何在RPC上运行已编译的模型?

通过tvmc.run函数在RPC上运行已编译的模型,使用随机数据填充输入。

🏷️

标签

➡️

继续阅读