stable diffusion 量化学习笔记

embedded/2025/1/15 6:58:44/

文章目录

    • 一、一些tensorRT背景及使用介绍
      • 1)深度学习介绍
      • 2)TensorRT优化策略介绍
      • 3)TensorRT基础使用流程
      • 4)dynamic shape 模式
      • 5)TensorRT模型转换
    • 二、TensorRT转onnx模型
      • 1)onnx介绍
      • 2)背景知识:lower概念
      • 3)TRT转换模型的主要重点
      • 4)onnx-parser && onnx-graphsurgen
        • (1)onnx-parser:把onnx导出为二进制模型的工具
        • (2)onnx-graphsurgeon:onnx模型的编辑器
      • 5)实践:
        • (1)transformer模型优化:解决不支持的算子
        • (2)transformer模型优化:合并LayerNorm算子
      • 6)polygraphy
    • 六、实操
      • 1)编译tensorRT开源代码运行SampleMNIST
      • 2)英伟达TensorRT加速AI推理Hackthon2022-Transformer模型优化

一、一些tensorRT背景及使用介绍

1)深度学习介绍

  • 简单学习介绍量化背景
    在这里插入图片描述
    补充
1)tensorFlow python版本其实是调用的TensorFlow C的接口
2)libtorch其实是pytorch的C++版本
3)cublas是实现矩阵相乘的功能
4)cudnn主要实现dnn上的一些算子功能,例如卷积等
5)不同NVIDIA显卡架构间不兼容,同代显卡基本是同架构

2)TensorRT优化策略介绍

  • 优化策略
1、低精度优化 :int8  int16
2、Kernel自动调优
例如:cublas  gemm多种实现:①不用shared memory ;②小矩阵相乘;③使用额外显存的策略
3、算子融合:例如:
relu+bias+1x1 conv =1x1 CBR
4、多流运行
5、显存优化

在这里插入图片描述

3)TensorRT基础使用流程

在这里插入图片描述

  • 代码使用流程
    在这里插入图片描述

4)dynamic shape 模式

  • 背景
    ①TensorRT 6.0之后 explicit(显式)batch支持动态batchsize
    ②CV的图片基本都是固定大小,而NLP和speech语音很多都是不固定大小的
  • 思路
    1)build engine阶段设置:
    ①用createNetworkV2设置显示batchsize
    ②设置最大batchsize
    ③设置优化profile选项,选择最大、最常用、最小的数据维度(类似,15s\20s\30s的语音)
    在这里插入图片描述
    2)infer推理阶段
    ①每次推理设置输出的数据维度
    ②检查输入的数据维度是否符合需求
    ③开启推理
    在这里插入图片描述

5)TensorRT模型转换

①onnx:一键解析pytorch转为onnx,不用像API那样一层一层构建onnx
②torch2trt:pytorch直接转为trt
③TensorFlow:谷歌出品,不用pytorch,tf直接转为trt(tf2tensorrt)
④Tencent Forward:支持pytorch\onnx\tf直接转为trt,接口简单
在这里插入图片描述

二、TensorRT转onnx模型

1)onnx介绍

  • onnx:表示深度学习模型的开放模式

  • 备注:CPU上线首推ONNX-RUNTIME
    在这里插入图片描述
    在这里插入图片描述

  • onnx模型组成:Graph、Node、Tensor
    Graph:注意opset版本参数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2)背景知识:lower概念

  • 概念
    用基础算子加、减、乘、除、fc等组合成一个模型不支持的、复杂的算子,成为lower,反之为upper(tensor合并算子就可以提高速度,拆分成这么多算子速度会下降)
    在这里插入图片描述

3)TRT转换模型的主要重点

在这里插入图片描述

4)onnx-parser && onnx-graphsurgen

(1)onnx-parser:把onnx导出为二进制模型的工具
  • 例子代码截图
    在这里插入图片描述
  • onnx-parser导出模型方式:
    ①python API
    ②trtexec
    ③polygraph
  • onnx-parser痛点
    (备注:LSTM的算子没有tensorflow支持的全,基本只能靠裁剪)
    在这里插入图片描述
(2)onnx-graphsurgeon:onnx模型的编辑器
  • 传送门
    传送门
    在这里插入图片描述

5)实践:

(1)transformer模型优化:解决不支持的算子
(2)transformer模型优化:合并LayerNorm算子

6)polygraphy

六、实操

1)编译tensorRT开源代码运行SampleMNIST

在这里插入图片描述

2)英伟达TensorRT加速AI推理Hackthon2022-Transformer模型优化

在这里插入图片描述


http://www.ppmy.cn/embedded/153689.html

相关文章

fitz获取pdf内容

1.获取pdf单页,及所有内容 import fitz # PyMuPDF# 打开 PDF 文件 pdf_path r"/data2/ljsang/0106/0725_Self-organization-of-plasticity-and-specialization-in-a-primi_2022_Cell-Syst.pdfπσΣ╕╖σσ║Θ║∩╝Φ╛τ▒│σ¡τ╛π.pdf" d…

【STM32+QT项目】基于STM32与QT的智慧粮仓环境监测与管理系统设计(完整工程资料源码)

视频演示: 基于STM32与QT的智慧粮仓环境监测与管理系统设计 目录: 目录 视频演示: 目录: 前言:

【目标检测】数据集合集!

本文将为您介绍经典、热门的数据集,希望对您在选择适合的数据集时有所帮助。 1 objectdetection_script 更新时间:2025-01-06 访问地址: GitHub 描述: 这个项目主要是提供一些关于目标检测的代码和改进思路参考。主要分为几个方面&#xf…

openwrt 常见编译问题及编译提速

目录 friendlywrt介绍官方编译流程编译问题git clone errorbusybox和其他包冲突GCC编译错误ERROR: package/feeds/packages/gcc failed to build.手动编译编译提速ccache修改makefile去掉一些不必要的依赖固件定制:增加已经编译好的应用rootfs生成过程REF本文以friendlywrt22-…

用 Python 从零开始创建神经网络(十九):真实数据集

真实数据集 引言数据准备数据加载数据预处理数据洗牌批次(Batches)训练(Training)到目前为止的全部代码: 引言 在实践中,深度学习通常涉及庞大的数据集(通常以TB甚至更多为单位)&am…

LeetCode 热题 100_二叉树的最近公共祖先(48_236_中等_C++)(二叉树;深度优先搜索)

LeetCode 热题 100_二叉树的最近公共祖先(48_236) 题目描述:输入输出样例:题解:解题思路:思路一(深度优先搜索): 代码实现代码实现(思路一(深度优…

大语言模型训练

步骤 Self-Supervised Pre-Training,简称SPTSupervised Fine-Tuning,简称SFTLearning from Human Feedback,简称LfHF Self-Supervised Pre-Training 自监督预训练(Self-Supervised Pre-Training,简称SPT&#xff09…

likeshop同城跑腿系统likeshop回收租赁系统likeshop多商户商城安装及小程序对接方法

前言:首先likeshop是一个开发平台,是一个独创的平台就像TP内核平台一样,你可以在这个平台上开发和衍生出很多伟大的产品,以likeshop为例,他们开发出商城系统,团购系统,外卖点餐系统,…