首页 > 其他分享 >PPL Quantization Tool (PPL 量化工具)

PPL Quantization Tool (PPL 量化工具)

时间:2023-08-01 15:46:47浏览次数:46  
标签:openvino onnx Tool TensorRT Quantization PPQ link 量化 PPL

 

 

openppl-public (github.com)

 

openppl-public/ppl.nn: A primitive library for neural network (github.com)

openppl-public/ppq: PPL Quantization Tool (PPQ) is a powerful offline neural network quantization tool. (github.com)

 

PPL Quantization Tool 0.6.6 (PPL 量化工具)

PPQ 是一个可扩展的、高性能的、面向工业应用的神经网络量化工具。

神经网络量化,作为一种常用的神经网络加速方案自 2016 年以来被广泛地应用。相比于神经网络剪枝与架构搜索,网络量化的泛用性更强,具有较高的工业实用价值。特别是对于端侧芯片而言,在片上面积与功耗都受到限制的场景下,我们总是希望将所有浮点运算转换为定点运算。量化技术的价值在于浮点运算与访存是十分昂贵的,它依赖于复杂的浮点运算器以及较高的访存带宽。如果我们能够在可接受的范围内使用较低位宽的定点运算近似浮点结果,这将使得我们在芯片电路设计、系统功耗、系统延迟与吞吐量等多方面获得显著的优势。

我们正处在时代的浪潮之中,基于神经网络的人工智能正快速发展,图像识别、图像超分辨率、内容生成、模型重建等技术正改变我们的生活。与之俱来的,是不断变化的模型结构,成为摆在模型量化与部署前的第一道难关。为了处理复杂结构,我们设计了完整的计算图逻辑结构与图调度逻辑,这些努力使得 PPQ 能够解析并修改复杂的模型结构,自动判定网络中的量化区与非量化区,并允许用户对调度逻辑进行手动控制。

网络的量化与性能优化是严峻的工程问题,我们希望用户能够参与到网络的量化与部署过程中来,参与到神经网络的性能优化中来。为此我们在 Github 中提供相应的与部署相关学习资料,并在软件设计上刻意强调接口的灵活性。在我们不断的尝试与探索中,我们抽象出量化器这一逻辑类型,负责初始化不同硬件平台上的量化策略,并允许用户自定义网络中每一个算子、每一个张量的量化位宽、量化粒度与校准算法等。我们将量化逻辑重组为27个独立的量化优化过程 (Quantization Optimization Pass),PPQ 的用户可以根据需求任意组合优化过程,完成高度灵活的量化任务。作为 PPQ 的使用者,您能够根据需求新增、修改所有优化过程,探索量化技术的新边界。

这是一个为处理复杂量化任务而生的框架 —— PPQ 的执行引擎是专为量化设计的,截止 PPQ 0.6.6 版本,软件一共内置 99 种常见的 Onnx 算子执行逻辑,并原生支持执行过程中的量化模拟操作。PPQ 可以脱离 Onnxruntime 完成 Onnx 模型的推理与量化。作为架构设计一部分,我们允许用户使用 Python + Pytorch 或 C++ / Cuda 为 PPQ 注册新的算子实现,新的逻辑亦可替换现有的算子实现逻辑。PPQ 允许相同的算子在不同平台上有不同的执行逻辑,从而支撑不同硬件平台的运行模拟。借助定制化的执行引擎与 PPQ Cuda Kernel 的高性能实现,使得 PPQ 具有极其显著的性能优势,往往能以惊人的效率完成量化任务。

PPQ 的开发与推理框架关系密切,这使得我们能够了解硬件推理的诸多细节,从而严格控制硬件模拟误差。在国内外众多开源工作者共同努力之下,目前 PPQ 支持与 TensorRT, OpenPPL, Openvino, ncnn, mnn, Onnxruntime, Tengine, Snpe, GraphCore, Metax 等多个推理框架协同工作,并预制了对应量化器与导出逻辑。PPQ 是一个高度可扩展的模型量化框架,借助 ppq.lib 中的函数功能,您能够将 PPQ 的量化能力扩展到其他可能的硬件与推理库上。我们期待与您一起把人工智慧带到千家万户之间。

在 0.6.6 的版本更新中,我们为你带来了这些功能:

  1. FP8 量化规范,PPQ 现在支持 E4M3, E5M2 等多种规范的 FP8 量化模拟与训练
  2. PFL 基础类库,PPQ 现在提供一套更为基础的 api 函数帮助你完成更为灵活的量化
  3. 更为强大的 图模式匹配 与 图融合功能
  4. 基于 Onnx 的模型 QAT 功能
  5. 全新的 TensorRT 量化与导出逻辑
  6. 全球最大的量化模型库 OnnxQuant
  7. 其他未知的软件特性

Installation (安装方法)

  1. Install CUDA from CUDA Toolkit

  2. Install Complier

apt-get install ninja-build # for debian/ubuntu user
yum install ninja-build # for redhat/centos user

For Windows User:

(1) Download ninja.exe from https://github.com/ninja-build/ninja/releases, add it to Windows PATH.

(2) Install Visual Studio 2019 from https://visualstudio.microsoft.com.

(3) Add your C++ compiler to Windows PATH Environment, if you are using Visual Studio, it should be like "C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86"

(4) Update PyTorch version to 1.10+.

  1. Install PPQ
git clone https://github.com/openppl-public/ppq.git
cd ppq
pip install -r requirements.txt
python setup.py install
  • Install PPQ from our docker image (optional):
docker pull stephen222/ppq:ubuntu18.04_cuda11.4_cudnn8.4_trt8.4.1.5

docker run -it --rm --ipc=host --gpus all --mount type=bind,source=your custom path,target=/workspace stephen222/ppq:ubuntu18.04_cuda11.4_cudnn8.4_trt8.4.1.5 /bin/bash

git clone https://github.com/openppl-public/ppq.git
cd ppq
export PYTHONPATH=${PWD}:${PYTHONPATH}
  • Install PPQ using pip (optional):
python3 -m pip install ppq

Learning Path (学习路线)

PPQ 基础用法及示例脚本

 Description 介绍Link 链接
01 模型量化 onnxcaffepytorch
02 执行器 executor
03 误差分析 analyser
04 校准器 calibration
05 网络微调 finetune
06 网络调度 dispatch
07 最佳实践 Best Practice
     
08 目标平台 platform
09 优化过程 Optim
10 图融合 Fusion

PPQ 优化过程文档

 Description 介绍Link 链接
01 QuantSimplifyPass(通用量化精简过程) doc
02 QuantFusionPass(通用量化图融合过程) doc
03 QuantAlignmentPass(通用量化对齐过程) doc
04 RuntimeCalibrationPass(参数校准过程) doc
05 BiasCorrectionPass(Bias修正过程) doc
06 QuantSimplifyPass(通用量化精简过程) doc
07 LayerwiseEqualizationPass(层间权重均衡过程) doc
08 LayerSpilitPass(算子分裂过程) doc
09 LearnedStepSizePass(网络微调过程) doc
10 Other(其他) refer to

视频资料

 Desc 介绍Link 链接
01 计算机体系结构基础知识 link
02 网络性能分析 link
03 量化计算原理 part1part2
04 图优化与量化模拟 link
05 图调度与模式匹配 link
06 神经网络部署 link
07 量化参数选择 link
08 量化误差传播分析 link

量化部署教程

使用例子(Examples)网络部署平台(Platform)输入模型格式(Format)链接(Link)相关视频(Video)
TensorRT        
使用 Torch2trt 加速你的网络 pytorch pytorch link link
TensorRT 量化训练 TensorRT pytorch link link
TensorRT 后训练量化(PPQ) TensorRT onnx

1. Quant with TensorRT OnnxParser

2. Quant with TensorRT API

 
TensorRT fp32 部署 TensorRT onnx link link
TensorRT 性能比较 TensorRT pytorch link link
TensorRT Profiler TensorRT pytorch link link
onnxruntime        
使用 onnxruntime 加速你的网络 onnxruntime onnx link link
onnx 后训练量化(PPQ) onnxruntime onnx link link
onnxruntime 性能比较 onnxruntime pytorch link link
openvino        
使用 openvino 加速你的网络 openvino onnx link  
openvino 量化训练 openvino pytorch link  
openvino 后训练量化(PPQ) openvino onnx link  
openvino 性能比较 openvino pytorch link  
snpe        
snpe 后训练量化(PPQ) snpe caffe link  
ncnn        
ncnn 后训练量化(PPQ) ncnn onnx link  
OpenPPL        
ppl cuda 后训练量化(PPQ) ppl cuda onnx link  

Dive into PPQ 深入理解量化框架

 Desc 介绍Link 链接
01 PPQ 量化执行流程 link
02 PPQ 网络解析 link
03 PPQ 量化图调度 link
04 PPQ 目标平台与 TQC link
05 PPQ 量化器 link
06 PPQ 量化优化过程 link
07 PPQ 量化函数 link

 

 

 

 

PPLNN

website License qq zhihu

Overview

PPLNN, which is short for "PPLNN is a Primitive Library for Neural Network", is a high-performance deep-learning inference engine for efficient AI inferencing. It can run various ONNX models and has better support for OpenMMLab.

alt arch

Hello, world!

  • Installing prerequisites:

    • On Debian or Ubuntu:
    apt-get install build-essential cmake git python3 python3-dev
    • On RedHat or CentOS:
    yum install gcc gcc-c++ cmake3 make git python3 python3-devel
  • Cloning source code:

git clone https://github.com/openppl-public/ppl.nn.git
  • Building from source:
cd ppl.nn
./build.sh -DPPLNN_USE_X86_64=ON -DPPLNN_ENABLE_PYTHON_API=ON
  • Running python demo:
PYTHONPATH=./pplnn-build/install/lib python3 ./tools/pplnn.py --use-x86 --onnx-model tests/testdata/conv.onnx

Refer to Documents for more details.

Documents

 

标签:openvino,onnx,Tool,TensorRT,Quantization,PPQ,link,量化,PPL
From: https://www.cnblogs.com/sinferwu/p/17596676.html

相关文章

  • win10最新版apktool 反编译
    apktool_2.6.0.jar 改成apktool.jar和apktool.bat放在同一个文件夹,并将此文件夹加入系统变量Path(D:\SoftWare\apktool)apktool.bat:@echooffsetlocalsetBASENAME=apktool_chcp650012>nul>nulsetjava_exe=java.exeifdefinedJAVA_HOME(setjava_exe="%JAVA_HOME%\b......
  • Inofity-tools+Rsync实施复制实战
    Inofity-tools+Rsync实施复制实战一、先准备rsyncd服务环境1.快速的部署rsyncd服务端#!/bin/bashyuminstallrsync-ycat>/etc/rsyncd.conf<<'EOF'uid=wwwgid=wwwport=873fakesuper=yesusechroot=nomaxconnections=200timeout=600ignoree......
  • You must install or update .NET to run this application
    Youmustinstallorupdate.NETtorunthisapplication问题原因在使用.net的环境时,出现这个“Youmustinstallorupdate.NETtorunthisapplication”说明版本不符合系统默认式是2.0,3.0版本的,需要更新到5.0版本才行去官网下载符合自己的版本官网地址:https://do......
  • 【TCP】学习笔记:application/octet-stream
    当浏览器在请求资源时,会通过http返回头中的content-type决定如何显示/处理将要加载的数据,如果这个类型浏览器能够支持阅览,浏览器就会直接展示该资源,比如png、jpeg、video等格式。在某些下载文件的场景中,服务端可能会返回文件流,并在返回头中带上Content-Type:application/octet-st......
  • iTOP-RK3568开发板Windows 安装 RKTool 驱动
    在烧写镜像之前首先需要安装RKTool驱动。RKTool驱动在网盘资料“iTOP-3568开发板\01_【iTOP-RK3568开发板】基础资料\02_iTOP-RK3568开发板烧写工具及驱动”路径下。驱动如下图所示:解压缩后,进入文件夹,如下图所示:点击“DriverInstall.exe”,如下图所示:如果出现提示,选择安装,如下......
  • IIS创建网站报错 \\?\C:\Windows\inetsrv\config\applicationHost.config
    ​ ​​编辑​​编辑 现象:IIS创建不了网站,IIS配置没有发生改变 原因:服务器C盘无空间,释放空间后问题解决。​......
  • 不启动SpringBootApplication 直接测试mybatis 下面xml中的sql
     测试类 privatestaticSqlSessionsqlSession=null;privatestaticRunoobTblMappermapper; @BeforeClasspublicstaticvoidsetUpMybatisDatabase()throwsIOException{InputStreamresourceAsStream=null;try{ClassLoaderclassLoader=R......
  • 群晖docker nastools搭建家庭影音中心
    1.所需镜像nastools(2.9.0),nastools2.9.1版本之后,只能够使用PT下载,对于没有PT只能够用BT的小伙伴,选这个版本nastools作用主要是对下载的电影电视剧等进行整理,方便后边的jellyfin更好的识别。同时,能够做硬链接,方便PT的小伙伴保种,对于不需要保种的,可以使用移动的方式qbittore......
  • CommunityToolkit.Mvvm
    包是.NET提供的一个现代、快速且模块化的MVVM库。此包面向.NETStandard,因此可在任何应用平台上(UWP、WinForms、WPF、Xamarin、Uno等)和运行时上(.NETNative、.NETCore、.NETFramework或Mono)使用。其他MVVM库有:Prism,常用于WPF应用。Messenger发送消息接口IMessenger......
  • Xcode 15 beta 5 (15A5209g) 发布下载 - Apple 平台 IDE
    Xcode15beta5(15A5209g)发布下载-Apple平台IDEIDEforiOS/iPadOS/macOS/watchOS/tvOS/visonOS请访问原文链接:https://sysin.org/blog/apple-xcode-15/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgXcode15使您能够为所有Apple平台开发、测试和分发......