当前位置: 首页 > article >正文

pytorch 模型部署

AI模型部署基本步骤

在训练好模型后,需要将模型进行部署,一般情况下,AI模型部署基本步骤有:

  • 获取模型文件
  • 对模型进行转换,也就是所谓的parse或者convert
  • 针对转换后的模型进行优化,可能涉及很多优化步骤
  • 在特定平台上运行转化后的模型,保障模型的精度、性能

常见的模型部署推理框架:

  • Caffeine,纯c++编写
  • libtorch(torchscript): pytorch的c++版。pytorch训练出来的模型,经员工torch.jit.trace或者torch.jit.script可以导出为.pt格式,随用通过libtorch中的API加载运行。一般结合TensorRT来部署,TensorRT负责简单卷积层等操作部分,libtorch负责后处理等细小复杂op部分。
  • TensorRT,可以再NVIDIA各种GPU硬件平台下运行的c++推理框架。 在GPU服务器上部署的话,TensorRT是首选;
  • openVINO, 在英特尔CPU端(也就是我们常用的x86处理器)部署首选它
  • NCNN/MNN/TNN/TVM,在移动端部署的推理框架,据说NCNN为首选,因其简单、直观明了。
  • paddlepaddle:国产不错的训练和推理框架;

AI部署中提速方法

上述AI模型部署步骤也提到,对模型进行优化,有哪些优化点呢?

  • 模型结构
  • 剪枝
  • 蒸馏
  • 稀疏化训练
  • 量化训练
  • 算子融合、计算图优化
  • 底层优化
1. 模型结构

模型结构主要体现在更快更强的网络结构,比如ResNet相比于VGG,CenterNet相比于YOLOv3。这块没研究透,后续再探;

2. 剪枝

大模型的基础上,对模型通道或者模型结构进行有目的地修剪,剪掉对模型推理贡献不是很重要的地方,保障精度下降很少或者几乎不变。

3. 蒸馏

先用大网络训练,然后再用大网络调教小网络,使小网络接近大网络的精度。

4. 稀疏化

就是随机将tensor中的部分元素置为0,比如常见的dropout,附带正则化作用的同时也减少了模型的容量,从而加快了模型的推理速度。

5. 量化训练

量化训练是在INT8精度的基础上对模型进行量化。简称QTA(Quantization Aware Training)。量化后的模型在特定CPU或者GPU上相比FP32、FP16有更高的速度和吞吐,也是部署提速方法之一。

模型训练后的转换方式

  • Pytorch->ONNX->trt onnx2trt
  • Pytorch->trt torch2trt
  • Pytorch->torchscipt->trt trtorch

http://www.kler.cn/a/292277.html

相关文章:

  • HarmonyOS ArkTs 解决流式传输编码问题
  • java-Day06 内部类 Lambda表达式 API
  • 路由器基本原理与配置
  • Flink Job更新和恢复
  • 数据库的性能优化 -- SQL性能优化
  • 【Linux】获得同一子网下当前在线设备IP/Latency/MAC 通过nmap指定CIDR扫描当前在线设备
  • 新增一个数组传递给后端
  • C++基础知识(五)
  • 计算机网络(三) —— 简单Udp网络程序
  • 2024年西安交通大学软件工程专业考研915真题
  • 算法练习题14——leetcode84柱形图中最大的矩形(单调栈)
  • 深度解析Linux系统的基本概念及优缺点和原理
  • COD论文笔记 ECCV2024 Just a Hint: Point-Supervised Camouflaged Object Detection
  • 解决maven中阿里云镜像仓库无法下载源码的问题
  • 华为od统一考试B卷【密钥格式化】Java 实现
  • python多进程
  • 导入word模板的数据到DB,偏自学,可自改套用
  • eureka一
  • 如何给 Java 文件打成独立的 JAR 包
  • 最基本的SELECT...FROM结构
  • HTB-Funnel(ssh端口转发与Hydra爆破)
  • blast的快速安装使用-简易版
  • Python知识点:如何使用Slack与Python进行团队协作
  • C++的四种规范的类型转换
  • 广义回归神经网络(GRNN)
  • Facebook的AI进化:如何用智能技术提升内容推荐