首页 > 其他分享 >AI模型-模型部署和推理

AI模型-模型部署和推理

时间:2024-06-17 17:59:59浏览次数:19  
标签:engine AI onnx 模型 格式 推理 trt

模型部署

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

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

训练格式

权重文件(.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

标签:engine,AI,onnx,模型,格式,推理,trt
From: https://www.cnblogs.com/ytwang/p/18252942

相关文章

  • 从头到尾实现CIFAR-10图像分类:数据预处理到模型优化
    在深度学习领域,图像分类任务是基础也是极其重要的一部分,CIFAR-10数据集是这类问题的经典数据集之一。本文将详细介绍如何加载和预处理CIFAR-10数据集,构建简单和复杂的神经网络模型,以及通过改进模型结构来优化分类性能。一、处理CIFAR-10数据集:数据加载与预处理详解1、CIFAR-......
  • AI大模型在运动项目的深度融合和在穿戴设备的实践及未来运动健康技术发展
    文章目录1.技术架构2.模型选择2.1LSTM(长短期记忆网络)2.2CNN(卷积神经网络)2.3Transformer3.数据处理数据预处理4.实时性要求4.1边缘计算4.2模型优化5.数据隐私与安全6.深入分析AI大模型在穿戴设备的应用和未来发展6.1.**多模态数据融合**6.2.**自适应学习......
  • 我为什么要转行做大模型?
    前言最近研究了一下大模型相关的内容,决定从互联网的推荐算法转行做大模型推理工程化相关的工作。所以简单说说我在这个决定中的思考过程。1.推荐算法岗的现状我本来是一个在大厂做推荐算法的工程师。收入在行业里面算是中游水平,就这么一直干着似乎也没什么问题。但......
  • 【AI开发】RAG基础
    RAG的基本流程:用一个loader把knowledgebase里的知识做成一个个的document,然后把document切分成snippets,把snippets通过embedding(比如openai的embedding模型或者huggingface的)向量化,存储到vectordb向量数据库,以供后续相关性检索。至此便完成了私域数据集的索引indexing。......
  • pytorch使用交叉熵训练模型学习笔记
    python代码:importtorchimporttorch.nnasnnimporttorch.optimasoptim#定义一个简单的神经网络模型classSimpleModel(nn.Module):def__init__(self):super(SimpleModel,self).__init__()self.fc=nn.Linear(3,2)#输入3维,输出2类......
  • 人工智能大模型——零样本提示
    零样本提示是与少样本提示相对应的一种提示词编写方式,其含义是指在编写提示词过程中,并未给LLM提供任何的相关示例。零样本提示是新手使用ChatGPT最常规的提示方式,也是最好掌握的一种提示方式,同时也是其他所有高级提示技术的基础。应用场景我一直建议在写提示词的时候遵循一......
  • R语言动态广义相加模型GAM张量积交互项、傅立叶项、谐波回归分析季节性时间序列航空乘
    全文链接:https://tecdat.cn/?p=36497原文出处:拓端数据部落公众号季节性在真实的时间序列中是非常常见的。许多系列以周期性、规律性的方式变化。例如,冰淇淋销售在温暖的假期月份往往更高,而候鸟数量围绕年度迁徙周期强烈波动。由于季节性非常普遍,已经开发了许多时间序列和预测方......
  • vscode使用tabnine ide插件,ai插件
    安装安装上面这个插件后,会提示登录,可以使用github在线地址登录。代码提示代码指令使用侧边栏功能总结tabninevscode插件就是一款代码ai自动补全的插件,侧边栏还可以进行代码解释、修正等功能。......
  • 近期火热的巴西推广casino游戏推广快手视频kwai广告怎么做
    近期火热的巴西推广casino游戏推广快手视频kwai广告怎么做在巴西这个充满活力的国度,casino游戏一直以其独特的魅力吸引着众多玩家的关注。近年来,随着数字媒体的兴起,越来越多的游戏开发者选择通过快手视频kwai平台投放广告,以拓展巴西市场的用户基础。本文将详细介绍在巴西推广c......
  • 全面助力海外快手kwai广告赋能slot游戏市场增效
    全面助力海外快手kwai广告赋能slot游戏市场增效kwai海外快手投放slots游戏广告针对性投放引流kwai海外快手投放slots游戏广告,除了要注重广告创意和内容质量外,更需要进行针对性的投放策略,以有效引流目标用户。首先,我们需要对目标用户进行深入分析,了解他们的兴趣、需求和消费习......