TVM是一个开源的深度学习编译器,可以应用于各种CPU、GPU和其他特殊用途的加速器。它的目标是使我们能够在任何硬件上优化和运行我们自己的模型。与关注模型生产力的深度学习框架不同,TVM更关注模型在硬件上的性能和效率。本文只简单介绍一下TVM的编译过程以及如何自动调优自己的模型。更深入的理解可以看TVM官方内容:文档:https://tvm.apache.org/docs/源码:https://github.com/apache/tvm编译过程TVM文档DesignandArchitecture描述了示例编译过程和逻辑结构组件、设备目标实现等。流程如下图所示:从高层的角度来看,它包括以下步骤:导入(Import):前端组件将模型提取到IRModule中,IRModule是模型内部表示(IR)的函数集合。转换:编译器将一个IRModule转换为另一个功能等效或几乎等效的IRModule(如量化的情况)。大多数转换都是目标(后端)独立的。TVM还允许目标影响转换通道的配置。目标转换:编译器将IRModule转换(代码生成)为目标上的可执行格式。目标翻译结果被打包为runtime.Module,可以在目标运行环境中导出、加载和执行。运行时执行:用户加载runtime.Module并在支持的运行时环境中运行编译后的函数。调优模型TVM文档UserTutorial从如何编译优化模型开始,逐步深入到TE、TensorIR、Relay等底层逻辑结构组件。这里只讲一下如何使用AutoTVM自动调优模型,真正了解TVM编译、调优、运行模型的过程。有关原始文章,请参阅使用Python接口(AutoTVM)编译和优化模型。准备TVM首先,安装TVM。请参阅安装TVM文档或注释“TVM安装”。之后,可以通过TVMPythonAPI调整模型。我们首先导入以下依赖项:importonnxfromtvm.contrib.downloadimportdownload_testdatafromPILimportImageimportnumpyasnpiimporttvm.relayasrelayimporttvmfromtvm.contribimportgraph_executor准备模型并加载它
