Public Docs
【模型量化】深度学习模型量化 & 量化理论 & 各平台的量化过程 & 硬件加速
【TVM】TI关于TVM的使用测试与分析
【LLM&LVM】大模型开源工程思维导图
【北航卓越工程师】《汽车前沿技术导论:智能驾驶》讲义
【工具链】Yocto使用介绍——使用Yocto创建一个树莓派的系统镜像
【工具链】使用ssh+dialog指令设定服务器指定用户仅容器访问
【推理引擎】一篇关于模型推理的详细对比与学习
【推理引擎】关于TVM中的Schedule优化详解(On going)
【LLM微调】使用litgpt进行私有数据集模型微调的测试总结
【TVM】在TVM Relay中创建一个自定义操作符
【STT+LLM+TTS】如何使用语音转文字模型+大预言模型+语音生成模型完成一个类人的语音交互机器人
【RAG】 通过RAG构建垂直领域的LLM Agent的方法探索
【RAG】GraphRAG精读与测试(On going)
【AI Agent】MetaGPT精读与学习
【AI Base】Ilya Sutskever 27篇必读论文分享清单
【Nvidia】Jetson AGX Orin/ Jetson Orin nano 硬件测试调试内容(On going)
【BI/DI】LLM Using in BI Testing Scenario (On going)
【Nvidia】How to Activate a Camera on Nvidia Platform in Details
【RAS-PI】树莓派驱动开发
【行业咨询阅读】关注实时咨询和分析
【mobileye】2024 Driving AI
【mobileye】SDS_Safety_Architecture
【yolo】yolov8测试
【nvidia】Triton server实践
【alibaba】MNN(on updating)
【OpenAI】Triton(on updating)
【CAIS】关于Compound AI Systems的思考
【Nvidia】关于Cuda+Cudnn+TensorRT推理环境
【BEV】BEVDet在各个平台上的执行效率及优化(On Updating)
【Chip】AI在芯片设计和电路设计中的应用
【Chip】ChiPFormer
【Chip】关于布线的学习
【Chip】MaskPlace论文精读与工程复现优化
【gynasium】强化学习初体验
【Cadence】X AI
【transformer】MinGPT开源工程学习
【中间件】针对apollo 10.0中关于cyberRT性能优化的深度解读和思考
【Robotics】调研了解当前机器人开发者套件(on updating)
【Robotics】ROS CON China 2024 文档技术整理与感想总结(上2024.12.7,中2024.12.8,下场外产品)
【algorithm】关于模型、数据与标注规范的平衡问题
【nvidia】DLA的学习了解与使用
【nvidia】构建nvidia嵌入式平台的交叉编译环境(其他环境平台可借鉴)
文档发布于【Feng's Docs】
-
+
首页
【TVM】TI关于TVM的使用测试与分析
# 1. 前言 上一篇文档 [TI-EdgeAI使用OSRT之TVM进行模型导出](http://blackmanba.top/doc/6/) ,详细介绍了关于在TI平台的导出阶段使用OSRT(open source Runtime)中的TVM模块对模型进行导出的详细过程,同时也大体上梳理了关于TVM进行模型导出和推理的整个过程。 本着对TVM框架的好奇和开源TVM框架的边界以及使用方法和优略这一目标,同时参考对比其他使用TVM框架的平台或者类似TVM的框架的介绍,以了解、分析、使用、对比、联想和总结为过程,相信总结使用TVM框架解决模型部署问题的优劣。  联想:MindIR is Relay High Level IR   # 2. 使用TVM导出img_stage的过程 * 整体TVM的使用过程在 [TI-EdgeAI使用OSRT之TVM进行模型导出](http://blackmanba.top/doc/6/) 中已经有详细的说明,这里不再赘述。主要是描述一下在BEVDet img_stage导出过程中遇到的问题,需要测试的需求和解决方案。  * 整体需要测试的需求有三个: 1. BEVDet 中的Image_stage是否能正常导出; 2. TVM导出是否支持多Batch的方式; 3. 对于一些不支持层如何处理; # 2.1. BEVDet 中的Image_stage是否能正常导出  直接说结论,如上图所示能够正常导出。导出过程将下图中的模型结构拆分成了5个子图。  其中第四个子图tidl_3中,BN层连接两个GEMM的部分,整个Relay解析部分能够正常完成,但是导出的Relay会因为合并优化等过程导致TIDL导出过程报错。这时候需要使用deny_list针对BN和GEMM的合并不去进行优化。执行完成后既可以看到上图中正常完成导出结果。   # 2.2. TVM导出是否支持多Batch的方式 从实际执行时可以发现,TVM默认导出不支持多Batch的方式。   但是查看源码后可以发现,可以通过配置环境变量的方式适配多batch   配置完成后Relay转换阶段不再有相关batch不支持的报错提示,模型能够顺利导出。  但是如果使用data calibration,还有可能因为网络参数配置的关系导致不支持。  但是值得注意的是,在0901(不包含0901)版本之前,TIDL不支持多个C7X当作一个使用。所以即使如下图所示,模型本身能够按照多batch的方式导出,该模型仍只能porting到一个target上去运行,从执行效率的角度来说无法做到效率最大化。  # 2.3. 对于一些不支持层如何处理 * 如果是TIDL不支持但是TVM支持并能够识别的层,TVM能够生成在arm上或者C7x上执行的代码; * 如果是TIDL不支持,TVM也不支持的曾,需要额外在TVM中去进行实现,并且需要考虑性能问题 关于如何在TVM中创建一个Operator 可以参见TVM官网  # Annexe * https://tvm.apache.org/docs/tutorial/introduction.html#an-overview-of-tvm-and-model-optimization * https://mp.weixin.qq.com/s?__biz=MzUzMzY1NTkwOQ==&mid=2247516186&idx=1&sn=a48f507414d76f43c57318dadfb24ff9&chksm=faa27810cdd5f106ab1f049abff5f0645459d452809ed0898dba618996301a5f4e09cd7a1ca1&mpshare=1&scene=1&srcid=0212Kbth4oQC89Ohbuh4Igu1&sharer_shareinfo=720fab24388896cad21520c9f4e344d7&sharer_shareinfo_first=cfa65a4029ab1e6f37ce2478c150c66a#rd * https://tvm.apache.org/docs/dev/how_to/relay_add_op.html?highlight=scanopattrs * https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1322956/missing-inputs-in-the-network-and-cannot-be-topologically-sorted
dingfeng
2024年6月18日 11:46
656
0 条评论
转发文档
收藏文档
上一篇
下一篇
评论
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码