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】
-
+
首页
【nvidia】DLA的学习了解与使用
# 0. 为什么要学习DLA,DLA有什么用 **DLA(Deep Learning Accelerator** 是nvidia提供的边缘AI平台的硬件加速能力。他的概念比较大,既有硬件的部分,也有软件的部分,下文的官方文档链接中将DLA描述的非常清楚。 https://developer.nvidia.com/deep-learning-accelerator DLA硬件特指在部分Nvidia的边缘端计算平台上内置的DLA硬件加速器,Jetson Orin系列使用Nvdlav2架构(相较于Xavier上的初代有最高达9倍的性能提升),Jetson Xavier系列则是Nvdla初代架构。而软件则是包含DLA的编译器核运行时软件栈在内的所有工具。先在offline时将网络模型翻译成二进制的dla执行图,用于集成到TensorRT中使用,而runtime则是包含了dla的固件和相关驱动。   除了直接使用dla的软件,我们也可以使用TensorRT发布的统一的平台,来对onnx模型的基于相关参数配置部署于dla上运行。  而相关改动带来的实际收益则是用更低的功耗,更高的性能,释放出cpu和gpu给更多其他应用,并为应用带来更健壮的性能。  # 1. 体验一下DLA 如果是直接使用TensorRT可以使用如下命令。 ``` bash /usr/src/tensorrt/bin/trtexec --onnx=1.3.81_ep003.onnx --saveEngine=1.3.81_ep003.fp16.engine --useDLACore=0 --fp16 --allowGPUFallback # --useDLACore表示使用dla的core,对于有两个core的AGX orin,可以设置0、1。 # --allowGPUFallback如果dla不支持的算子,porting到gpu上运算。 ``` 通常如果--allowGPUFallback,遇到不支持的算子log中会记录warning然后正常运行完成模型转化。否则会直接报错,提示相关算子不支持。   * dla支持的算子如下:https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#dla-lay-supp-rest  # 2. DLA,cuDLA,nvDLA * DLA 是一个广义的术语,涵盖所有用于深度学习加速的硬件和软件解决方案。 * nvDLA 是 NVIDIA 提供的专用深度学习硬件加速器,优化用于边缘计算和嵌入式系统,集成在 NVIDIA 的硬件产品中。 * cuDLA 则是基于 NVIDIA CUDA 平台的软件解决方案,通过利用 GPU 的并行计算能力和优化库(如 cuDNN)来加速深度学习任务。 # 3. 如何检查和分析dla的效果 ## 3.1 查看驱动 首先,基于1我们已经能够知道我们所使用的硬件中是否包含DLA硬件单元,在已经明确硬件包含DLA单元后,我们还需要查看操作系统是否已经有了完备的驱动能够使用DLA的io。 可以使用`sudo dmesg |grep dla`查看,我使用的agx orin拥有两个dla单元。`ps: 早期的驱动dla作为一个单独的io可以使用cat /dev/dla* 看到相关硬件,随着l4t的迭代,目前已经没有了dla的直接硬件io。`  ## 3.2 分析使用率 可以使用nvidia自带的指令`tegrastats`进行分析,当然也可以使用nsight-system&nsight-compute&nsight-graphics等nsight工具包进行性能分析。 * 使用tegrastats需要注意的是是否使用root权限,如果不适用root权限,是无法看到详细信息的,dla占用等都在详细信息中。 * 无sudo  * 有sudo  * 上图数据详解 1. 时间戳: 12-24-2024 10:49:16:当前系统时间,便于记录和分析数据。 2. 内存使用情况:RAM 1226/30698MB:当前已使用 1226 MB RAM,总共有 30698 MB 可用。 (lfb 13x4MB):线性分配块(Linear Frame Buffer)的使用情况。 3. 交换空间(Swap):SWAP 0/15349MB (cached 0MB):当前未使用交换空间,缓存也为 0 MB。 4. CPU 使用率: CPU [5%@729,0%@729,1%@729,0%@729,0%@729,0%@729,0%@729,1%@729,off,off,off,off]: 每个 CPU 核心的使用率及其频率(MHz)。 前 8 个核分别为 5%、0%、1%、0%、0%、0%、0%、1%,后 4 个核处于关闭状态(off)。 5. 内存控制器频率: EMC_FREQ 0%@3199:内存控制器当前未占用频率,最大频率为 3199 MHz。 6. 图形处理器频率: GR3D_FREQ 0%@[0,0]:GPU 当前未使用,频率为 0 MHz。 7. 多媒体加速器状态 NVENC off:NVIDIA 视频编码器未启用。 NVDEC off:NVIDIA 视频解码器未启用。 NVJPG off、NVJPG1 off:JPEG 编码器未启用。 VIC off:视频编解码接口未启用。 OFA off:Open Firmware Accelerator 未启用。 NVDLA0 off、NVDLA1 off:NVIDIA 深度学习加速器 0 和 1 未启用。 PVA0_FREQ off:PVA(Programmable Vision Accelerator)未启用。 8. 温度监控: 各个传感器的温度,例如 cpu@51.093C 表示 CPU 温度为 51.093°C。 9. 功耗监控: 各电压域的功耗,例如 VDD_GPU_SOC 3120mW/3120mW 表示 GPU SoC 电压域的功耗为 3120 mW。 ## 3.3 测试一个使用dla的任务 我们使用resnet50 做测试。相关代码已经上传至代码仓库:https://github.com/FengD/dla_test_code * 模型地址:https://github.com/onnx/models/blob/b9a54e89508f101a1611cd64f4ef56b9cb62c7cf/vision/classification/resnet/model/resnet50-v2-7.onnx * 使用如下指令将onnx模型转为engine文件,分别使用useDLACore和不适用DLACore生成两个文件。 ``` /usr/src/tensorrt/bin/trtexec --onnx=resnet50-v2-7.onnx --saveEngine=resnet50-v2-7-dla-fp16.engine --useDLACore=0 --fp16 --allowGPUFallback ``` * 通过执行编译好的程序可以看到如下信息:当使用dlacore时,模型得推理耗时相较于不适用dlacore有明显增加(经过warmup之后,usedlacore在17ms左右,不适用在3ms左右),但好处是对gpu的tensorcore的使用下降,可以看到GR3D_FREQ显卡使用率从90%下降至1%,猜测可能是因为模型中有dla不支持的层,所以内存使用频率有上升趋势。这个趋势从官方文档的说明中也得到证实。       ## 3.4. 进一步使用nsight-system进行分析 进一步保存了nsys的报告用于详细分析。 [【附件】profile_report.nsys-rep](/media/attachment/2024/12/profile_report.nsys-rep) [【附件】profile_report-dla.nsys-rep](/media/attachment/2024/12/profile_report-dla.nsys-rep) # 4. DLA官方文档精读与功能挖掘 * https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#overview # Annexe * https://developer.nvidia.com/deep-learning-accelerator dla说明 * https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#dla_layers dla各层说明 * https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#dla_topic dla 说明 * https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#dla-lay-supp-rests dla支持算子 * https://developer.nvidia.com/zh-cn/blog/optimizing-cuda-memory-transfers-with-nsight-systems/ & https://developer.nvidia.com/zh-cn/blog/accelerating-data-center-and-hpc-performance-analysis-with-nvidia-nsight-systems/ 分析过程实例
dingfeng
2024年12月31日 11:26
553
0 条评论
转发文档
收藏文档
上一篇
下一篇
评论
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码