【TVM 教程】使用 tvmc 接口在 Adreno™ 上部署预训练模型
内容提要
本文介绍了在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上运行已编译的模型,使用随机数据填充输入。