模型部署踩坑(持续更新ing)

文章目录

模型部署踩坑

踩坑1

FLOPs不能衡量模型性能,因为FLOPs只是模型计算大小的单位

还需要考虑

  • 访存量
  • 跟计算无关的DNN部分(reshape, shortcut, nchw2nhwc等等)
  • DNN以外的部分(前处理、后处理这些)

踩坑2

不能够完全依靠TensorRT

TensorRT可以对模型做适当的优化,但是有上限

  • 计算密度低的1x1 conv, depthwise conv不会重构
  • GPU无法优化的地方会到CPU执行(可以手动修改代码实现部分,让部分cpu执行转到gpu执行)
  • 有些冗长的计算,TensorRT可能不能优化(直接修改代码实现部分)
  • 存在TensorRT尚未支持的算子(可以自己写plugin)
  • TensorRT不一定会分配Tensor Core(因为TensorRT kernel auto tuning会选择最合适的kernel)

踩坑3

CUDA Core和Tensor Core的使用

有的时候TensorRT并不会分配Tensor Core

  • kernel auto tuning自动选择最优解
  • 所以有时会出现类似于INT8的速度比FP16反而慢了
  • 使用Tensor Core需要让tensor size为8或者16的倍数

踩坑4

不能忽视 前处理/后处理 的overhead

  • 对于一些轻量的模型,相比于DNN推理部分,前处理/后处理可能会更耗时间
  • 因为有些前处理/后处理的复杂逻辑不适合GPU并行

解决办法:

  • 可以把前处理/后处理中可并行的地方拿出来让GPU并行(比如RGB2BGR, Normalization, resize,crop, NCHW2NHWC)
  • 可以在cpu上使用一些针对图像处理的优化库
    比如Halide(使用Halide进行blur, resize, crop, DBSCAN, sobel这些会比CPU快)

踩坑5

对使用TensorRT得到的推理引擎做benchmark和profiling

  • 使用TensorRT得到推理引擎并实现infer只是优化的第一步

  • 需要使用NVIDIA提供的benchmark tools进行profiling

    分析模型瓶颈在哪里

    分析模型可进一步优化的地方在哪里

    分析模型中多余的memory access在哪里

可以使用nsys, nvprof, dlprof, Nsight这些工具

相关推荐
2zcode几秒前
基于改进YOLOv8与BiLSTM的智能安防盗窃行为识别系统-融合CBAM注意力机制与ByteTrack多目标跟踪
人工智能·yolo·目标跟踪
AI周红伟1 分钟前
All in Token,移动,电信和联通,华为,阿里,百度,字节,卖Token Plan,卖算力时代结束,卖智力时代来了:Token经济万亿赛道全景解码
大数据·人工智能·机器学习·百度·华为·copilot·openclaw
SuAluvfy2 分钟前
不存在“全能第一模型”,存在“任务空间中的局部最优模型”
人工智能·chatgpt·agent
workflower3 分钟前
AI能源智慧生产与绿色开发核心场景
大数据·人工智能·设计模式·机器人·软件工程·能源
染指11107 分钟前
4.AI大模型-幻觉、记忆、参数-大模型底层运行机制
人工智能
晓蓝WQuiet10 分钟前
GAN生成对抗网络
人工智能·神经网络·生成对抗网络
闵孚龙11 分钟前
Claude Code 权限系统全解析:AI Agent 安全治理、权限模式、规则匹配、沙箱防护与企业落地实战
人工智能·安全
测试员周周11 分钟前
【Appium 系列】第10节-手势操作实战 — 滑动、拖拽、缩放与轻拂
linux·服务器·开发语言·人工智能·python·appium·pytest
耕烟煮云12 分钟前
一篇文章讲清大语言模型发展史
人工智能·语言模型·自然语言处理
硅谷秋水15 分钟前
ARIS:基于对抗性多智体协作的自主研究
人工智能·科技·机器学习·语言模型·软件工程