AI模型-模型部署和推理-模型格式

模型部署

  模型部署是将训练好的模型部署到运行环境中进行推理的过程,
    模型部署的过程中需要解决训练模型到推理模型的转换,
    硬件资源对模型的限制,模型推理的时延、功耗、内存占用等指标对整个系统的影响以及模型的安全等一系列的问题

    模型部署到运行环境以后,保护模型的安全
模型的数据结构	
   模型拓扑连接 以及算子原型定义	
模型处理
     模型压缩: 量化 模型稀疏 知识蒸馏
模型推理
 
模型的安全保护
   静态保护和动态保护

训练格式

权重文件(.weights),配置文件(.cfg)
PyTorch (.pth/.pt): 这种格式是PyTorch的原生格式,主要用于保存和加载PyTorch模型

ONNX格式

 weights权重文件转为onnx格式
ONNX (Open Neural Network Exchange) 

tensorRT格式

将onnx格式转为tensorrt格式
  需要parser onnx后,进行serialize生成trt
本质就是二进制的序列文件  
  tensorrt格式的权重有两种,一种是.trt,一种是.engine。

tensorRT

TensorRT是一个深度学习模型优化器和运行时,
 主要用于加速模型的推理。TRT格式是为NVIDIA GPU优化的,并且经过了量化、层融合和其他优化
TensorRT 支持不同的数据格式。有两个方面需要考虑:
 数据类型和布局
   数据类型:
      分别是FP32(32位浮点,或单精度),
	       FP16(16位浮点或半精度),INT32(32位整数表示),和 INT8(8 位表示)
  TensorRT支持多种数据格式,包括NHWC8和NCHW 
    存储值的顺序。通常,batch 维度是最左边的维度,其他维度指的是每个数据项的方面,
	  例如图像中的C是通道, H是高度, W是宽度
	HWC 的布局格式:图像存储为单个HxW矩阵,其值实际上是 C 元组,每个通道都有一个值;一个点(像素)的所有值都是连续存储的  
    CHW 的布局格式:图像分为HxW矩阵,每个通道一个,矩阵按顺序存储;通道的所有值都是连续存储的。
     
	 NHWC8   ( TensorFormat::kHWC8 ) 
	 NC/2HW2 ( TensorFormat::kCHW2 )

过程

部署流程分为 预处理阶段 和 推理阶段,具体如下:
    1. 导出 深度学习 网络定义 和 权重参数 
    2. 解析 深度学习 网络定义 和 权重参数 parse ONNX
    3. 根据 显卡算子 构造出最优执行计划
    4. 将最优执行计划 序列化存储
    5. 反序列化 最优执行计划
    6. 进行推理
	   在 推理阶段,tensorrt 只关注 网络定义和权重参数,对于 输入和输出 需 另外导入

说明

1.解析onnx
   A:解析对象为onnx文件:没有已经转好的trt或者已有的trt不适配,需要将onnx转为trt

   已有的trt不适配,需要将onnx转为trt
      parse onnx
      serialize trt
      保存trt文件


2.解析trt
   B:解析对象为trt文件:已有trt,直接导入然后得到engine和context,使用
    
	使用B的限制条件,以下环境需要一致
      硬件环境必须一样,因为engine会根据硬件做优化,不能跨硬件平台
      CUDA
      cuDNN
      tensorRT环境,不同版本tensorrt生成的engine不能够相互兼容
      同平台同环境多次生成的engine可能不同
3.A,B两者最重要的中间产物都是parseTRT或者onnx得到的engine和context

参考

TensorRT入门指南(一)TensorRT简介 https://zhuanlan.zhihu.com/p/652641086
深度学习 之 模型部署【2】-TensorRT 入门  https://www.cnblogs.com/yanshw/p/16461169.html
模型的安全保护 https://openmlsys.github.io/chapter_model_deployment/model_security.html
posted @ 2024-06-17 18:04  辰令  阅读(18)  评论(0编辑  收藏  举报