Comments (18)
我也是cpu跑的,不过你这个情况是不是需要换一个公司
https://www.sensetime.com/cn/join-us
from ppq.
不会吧不会吧,2022年了该不会还有人还没有gpu吧
你可以使用云服务器上的gpu,毕竟它便宜的就好像免费的一样
https://www.bilibili.com/video/BV1WS4y1N7Kn
关于这个错误,容我debug一下看看,这好像是不应该发生的错误。refine的第582行执行了强制联合定点,对于concat, add这样的算子,合并定点信息自然要求算子的输入和输出都已经被正确量化了,报错则说明前面的量化流程存在问题。所以你可能不能手动修改refine.py的代码来跑通...
from ppq.
完了兄弟,在我这里这个网络咋跑都可以...
from ppq import *
from ppq.api import *
d = [torch.rand(1, 224, 224, 3) for _ in range(32)]
setting = QuantizationSetting()
setting.quantize_parameter_setting.calib_algorithm = 'minmax'
setting.quantize_activation_setting.calib_algorithm = 'kl'
ir = quantize_onnx_model(
onnx_import_file='Models/cls_model/efficientnet-lite4-11.onnx',
calib_dataloader=d,
calib_steps=32,
input_shape=[1,224,224,3],
collate_fn=lambda x: x.to('cpu'),
do_quantize=True,
setting=setting,
device='cpu',
platform=TargetPlatform.PPL_CUDA_INT8
)
甚至跑percentile都可以,你之前的错误是因为torch不能处理过多的数据量,你可以把batchsize改成1,这样它就不会有16777216个数了
from ppq.
OHHHHH,忘记说了,我跑的是Extension,就是自定义的MyQuantizer。量化策略很存粹,默认就是Symmetric、POT Scale、Linear、PerTensor、8bit、-128~127、Round_half_up
from ppq.
你可能是盗版量化器的受害者,你这个策略我还是跑的很开心...
附件是我修改的Myquantier代码
myquantizer.txt
在默认的流程中,TensorQuantizationConfig的状态由Quantizer初始化为Inital, 由CalibrationPass调用Observer将状态激活为ACTIVATE, 由refine.py执行联合定点将部分Config状态转换为slave。
你的报错似乎指向CalibrationPass调用Observer的过程存在问题,或者Quantizer初始化错误。
from ppq.
我的情况有点复杂,目前能用的就是CPU...
由于我是实习生,权限不够接触公司服务器(GPU集群),自己的办公电脑只有集显(跑不了CUDA)... 😞
from ppq.
hahaha😱
from ppq.
或者你可以换几个模型试试
import torchvision
(torchvision.models.alexnet, 'alexnet'),
(torchvision.models.inception_v3, 'inception_v3'),
(torchvision.models.mnasnet0_5, 'mnasnet0_5'),
(torchvision.models.mnasnet1_0, 'mnasnet1_0'),
(torchvision.models.squeezenet1_0, 'squeezenet1_0'),
(torchvision.models.squeezenet1_1, 'squeezenet1_1'),
(torchvision.models.shufflenet_v2_x1_0, 'shufflenet_v2_x1_0'),
(torchvision.models.resnet18, 'resnet18'),
(torchvision.models.resnet34, 'resnet34'),
(torchvision.models.resnet50, 'resnet50'),
(torchvision.models.resnext50_32x4d, 'resnext50_32x4d'),
(torchvision.models.wide_resnet50_2, 'wide_resnet50_2'),
(torchvision.models.googlenet, 'googlenet'),
(torchvision.models.vgg11, 'vgg11'),
(torchvision.models.vgg16, 'vgg16'),
(torchvision.models.mobilenet.mobilenet_v2, 'mobilenet_v2'),
from ppq.
兄弟,我找到问题所在了,问题出在api/setting.py里的per_layer_calibration上。我设为True后,跑漫长的量化就会出问题,,我换了其他onnx模型试的。
然后我设为False后,快速量化,就没有这个问题了。你的Myquantizer 内容和我的几乎一致的
前两天忙别的去了,刚刚才开始调这个issue。基本配置还是CPU,calibration 用的kl
from ppq.
哦豁,我去看看这个per_layer_calibration是不是出了什么问题,但是你真的知道这个pass在干嘛吗?
from ppq.
emmm,就是逐层calibration,一层一层确定好量化参数吧,,,
from ppq.
这么高端的技巧都被你发现了?
不过我们还没有发现逐层calibration能够提升精度的网络,虽然此前这个pass没出过啥错误。
from ppq.
还好瞄了一眼,我差点下班开溜了hhhh😲
我跑了minmax 的 per_layer_calibration后analysis显示我量化误差更大... per_layer_calibration是根据学术文章复现的吗,或者个人觉得这有点贪心的意味,局部最优取代全局最优?逐层贪心可能表现得不好hhh
emmmm,所以这个per_layer_calibration会导致谬误吗,还是说还是我自己的问题(我可能昨天改了啥不该改的...)
from ppq.
如果不打开这个layerwise的calibration,那么每个层会根据浮点结果计算同时得到量化参数,对于网络中的第一层而言,这个估计是合理的;然而对于网络后面的层而言,由于前面的层已经被量化的影响,使用浮点结果估计他们的量化参数是有偏的,layerwise calibration是为了解决这个有偏的问题,它甚至不需要证明,是显而易见的。
至于你设想的全局最优...这两种方法都做不到
from ppq.
ohhhhhhh原来是这样,受教了😀,
再最后叨扰你一下,per_layer_calibration会带来报错吗,我还没解决我的报错,有可能是我自己改动了其他代码导致的
from ppq.
还不清楚,还没来得及看...
from ppq.
在使用kl作为observer时,perlayer calibration的确会出现这个问题,虽然我还是不知道为什么,min-max似乎没有这个问题。
但是我认为这个per-layer calibration的逻辑存在问题,这个东西会逐层量化并定点,但其逐层量化的过程没有考虑到联合定点策略,因此其执行仍然是有偏的,为此我们需要将这个pass回炉重做一下。
from ppq.
好吧🤝
项目真的很不错👍,我这边正在尝试把PPQ加入到我们的模型部署pipeline里,所以频繁叨扰你们了,还望见谅。
from ppq.
Related Issues (20)
- How to get a Qoperator format ONNX model after quantization? HOT 1
- 请问为什么在运行 ppq/ppq/samples/TensorRT/Benchmark_with_onnx.py 文件时会出现Segmentation Fault的可能原因是什么? HOT 1
- 请问目前支持pytorch模型直接量化(而不是转成onnx),并生成量化后pytorch模型吗 HOT 1
- 请问如何使用ppq量化模型的部分模块,而不是整个模型呢?
- Op Execution Error: Einsum HOT 1
- yolov5量化,在ppq/samples/yolo中运行02_Quantization.py文件出现警告和报错,输出模型只有onnx没有engine文件 HOT 1
- 请问PPQ支持一维网络模型的量化吗 HOT 1
- [视频资料]使用profiler来分析网络性能,tensorboard无法解析日志文件 HOT 2
- PPQint8CPU量化bug HOT 1
- Op Execution Error MMCVModulatedDeformConv2d
- 关于QAT中的BN? HOT 1
- 是否有计划支持高通QNN(比较新的版本)和海思芯片呢? HOT 1
- ppq使用torch_mlir导出tosa格式的mlir HOT 1
- 这个工具链已经收敛了吗?我看已经比较久没有特性更新了,后续还有新特性计划吗? HOT 1
- 能否支持权重和激活位宽不同的量化? HOT 2
- VIT类模型量化感知训练loss跑飞 HOT 1
- PPQ已经支持了不少后端推理框架(TensorRT,ncnn,mnn等),这些后端的量化规格细节都是怎么获取的呢?现在PPQ与后端量化推理可以完全对齐吗?
- PPQ在画质类任务上(如低光降噪)量化效果咋样呢?
- AttributeError: 'NoneType' object has no attribute 'copy'
- 求助 为什么量化以后模型没有减小?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ppq.