问题标签 [quantization-aware-training]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
28 浏览

tensorflow - 在 tensorflow 2.3 中执行量化感知训练 (QAT) 时无法访问正则化损失值

在 tensorflow 2.3 中执行量化感知训练 (QAT) 时无法访问正则化损失值。

AttributeError:“张量”对象没有属性“numpy”

我创建了一个测试 mnist 模型,并使用 TFMOT QAT 库在模型中添加了量化节点。在尝试访问在model.lossestensorflow 示例中提到的收集到的正则化损失的值时,我收到了上述错误。当我在没有量化(QAT)的情况下运行相同的值时,可以很好地访问这些值。这可能是什么原因造成的?我正在使用功能模型并执行自定义训练操作。

重现问题的代码

错误输出

0 投票
0 回答
74 浏览

python - 张量流 2.6 中的量化感知训练问题。AttributeError:“列表”对象没有属性“dtype”

我正在训练一个 U2Net 模型,并希望使用量化感知训练来减小模型的大小。根据官方文档,我们需要导入 tensorflow_model_optimization 库并使用量化模型功能。

问题 - 当我使用它时,我得到 AttributeError: 'list' object has no attribute 'dtype' 这是我的模型声明代码 -

U2net函数是模型声明部分。我能够得到正常的model.summary()。我正在尝试训练google colab gpu的模型。没有 QAT,模型训练良好。

请帮忙

0 投票
0 回答
140 浏览

python - 使用 FX 图形模式时如何在 PyTorch 量化感知训练中冻结 BN 统计数据

在进行量化感知训练时冻结 BN 统计数据是谷歌量化白皮书中介绍的一种常见训练技术。而PyTorch 官方教程的代码片段也展示了如何在 PyTorch 中做到这一点:

但是,正如其标题所示,这是“急切模式”的代码片段。但我正在尝试使用原型 FX Graph 模式进行量化感知训练。PyTorch官方教程只是展示了使用FX Graph模式时如何进行PTQ,仅简单介绍FX Graph模式下的QAT。

正如上面的代码片段所示,它只是省略了“训练循环”。我想知道的是,在急切模式下冻结 BN 统计数据的 APItorch.nn.intrinsic.qat.freeze_bn_stats在 FX Graph 模式下是否仍然可用,这意味着我可以使用model_prepared_fx.apply(torch.nn.intrinsic.qat.freeze_bn_stats)) 来实现我的目标?还是我应该使用另一种机制来做到这一点?

0 投票
0 回答
59 浏览

tensorflow - 量化意识训练

我在这个领域有点新手。所以,如果这是非常基本的事情,我提前道歉。我目前正在尝试按照此链接https://colab.research.google.com/github/google-coral/tutorials/blob/master/retrain_detection_qat_tf1.ipynb#scrollTo=6RxtslKJf2td 使用 TensorFlow 对象检测 API 训练量化感知模型. 我使用 mobilenet_v2_quant_aware 作为我的模型。图像是 1000 个,有 800 个火车和 200 个火车。我面临的问题是损失没有收敛。这是管道:

您能否建议一些我可以做的更改,或者如果导致问题,我应该增加我的数据集吗?

我尝试了不同的批量大小、学习率、衰减步骤和衰减因子,但没有帮助!

TensorFlow-gpu 1.15 GPU = Nvidia gtx 780

下面是损失图: 在此处输入图像描述

0 投票
0 回答
10 浏览

cpu - 以最小延迟量化用于 cpu 的 Bert 问答模型

我们如何训练 Roberta 的量化感知训练基础模型?量化模型在 CPU 上的延迟是否最小?我们如何在生产环境中使用 BERT 模型进行问答。

0 投票
0 回答
33 浏览

unity3d-unet - 执行 QAT 后的附加量化节点

我正在为 Unet 模型执行量化感知训练。在使用 Netron 分析 tflite 文件时,我看到模型的解码器部分有额外的量化层,特别是在 Upsampling2D 和连接层之间。我想删除这些,有帮助吗?

0 投票
0 回答
81 浏览

python - 无法量化自定义层 - 量化意识培训

我正在关注量化意识培训综合指南,并在 QAT 中为自定义层而苦苦挣扎,tf=2.6.0使用py=3.9.7. 下面是我的问题的一个玩具示例:

我写了一个简单的自定义层来实现 Conv2D

我用那个层创建了一个小模型,然后递归地传递它的层并使用注释tfmot.guantization.keras.quantize_annotate_layer(每个自定义层可能有更多需要量化的自定义子层)。然后我适用tfmot.quantization.keras.quantize_apply于带注释的模型。结果模型由所有量化层组成,除了我的自定义层之外,还没有被量化。

附模型摘要

我会注意到,当我用MyConv下面的代码替换自定义层时,如综合指南中所示,量化是有效的。

请帮我解决这个问题。可能是我的问题QuantizeConfig

以下是我的完整代码:

0 投票
0 回答
79 浏览

python - 如何在 PyTorch 中继续对保存的模型进行量化感知训练?

我有一个分两个阶段训练的 DL 模型:

  1. 使用合成数据进行预训练
  2. 使用真实世界数据进行微调

模型在第 1 阶段后保存。在第 2 阶段,从 .pth 文件创建并加载模型,并使用新数据再次开始训练。我想申请 QAT,但我在第 2 阶段遇到了问题。损失真的很大(就像没有 QAT 的合成训练的开始 - 应该小 60 倍以上)。我怀疑这是观察者重新启动和冻结的错。问题是:加载 QAT 模型并继续训练的正确方法是什么?

第 1 阶段的代码:

第 2 阶段的代码:

我试过先初始化 QAT,然后加载权重,但它没有改变任何东西。我也尝试过手动将模型转换为 QAT:

但是经过训练后,当我尝试转换为量化模型时,它会引发错误:

当我在模型加载后跳过冻结 BN 和观察者时,它似乎工作正常。但它是正确的吗?这不会破坏之前学习的量化水平吗?

0 投票
0 回答
9 浏览

pytorch - 从 pytorch 转换为 ONNX 后,量化模型给出了负精度

我正在尝试在 pytorch 中训练一个量化模型并将其转换为 ONNX。我在 pytorch_quantization 包的帮助下采用了量化感知训练技术。我使用以下代码将我的模型转换为 ONNX:

转换后,我收到以下警告:

warnings.warn("'enable_onnx_checker' 已弃用并忽略。它将在 " W0305 12:39:40.472136 140018114328384 tensor_quantizer.py:280] 中删除 使用 Pytorch 的原生实验性假量化。

/usr/local/lib/python3.8/dist-packages/pytorch_quantization/nn/modules/tensor_quantizer.py:285:TracerWarning:将张量转换为 Python 数字可能会导致跟踪不正确。我们无法记录 Python 值的数据流向,所以以后这个值会被当作一个常量来处理。这意味着跟踪可能不会推广到其他输入!

此外,精度对 ONNX 模型无效!

更多信息在这里:

ONNX 转换有什么问题?