【问题标题】:How to properly Inject fake_quant operations in a graph?如何在图中正确注入 fake_quant 操作?
【发布时间】:2019-11-13 07:47:37
【问题描述】:

我有一个 wav2letter 模型(语音识别模型),我正在尝试手动正确地引入 fakeQuant 操作。我已经设法在适当的位置引入它们(以便 tflite 转换器设法生成 u8_tflite_model),但我的问题是在训练时这些操作的最小/最大范围没有得到更新。这意味着它们在乞求时保持相同(或几乎相同),并且梯度似乎没有流动。

我尝试以多种方式(例如)定义 fakequant:

min_w = tf.get_variable("min_quant_weights", shape=[], initializer=tf.constant_initializer(0), trainable=True)
max_w = tf.get_variable("max_quant_weights", shape=[], initializer=tf.constant_initializer(1), trainable=True)
filters = tf.fake_quant_with_min_max_vars(filters, min=tf.reduce_min(min_w), max=tf.reduce_max(max_w), num_bits=8)

min_w = tf.Variable(0.0, name="min_quant_weights")
max_w = tf.Variable(1.0, name="max_quant_weights")
filters = tf.fake_quant_with_min_max_vars(filters, min=min_w, max=max_w)

min_w = 0
max_w = 1
filters = tf.quantization.fake_quant_with_min_max_args(bias, min=min_w, max=max_w, num_bits=8, narrow_range=False, name=None)

但无论我尝试什么,最小值/最大值都保持不变。正因为如此,模型(目前仅对一个句子进行了微调)设法使权重适应这些范围,而根本不改变激活范围。我相信在使用 fakeQuants 训练期间,范围和权重都应该更新(我正确吗?)。

此外,这里描述的tf.contrib.quantize.create_training_graph 工具:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize 在我的情况下不起作用,因为定义模型的方式使得该工具无法确定这些 fakeQuant 操作应该在在哪里被介绍,这就是为什么我尝试一种更“hacky”的方式将它们注入到图形源代码中。

有没有人设法正确地做到这一点,或者我完全误解了 fakequant 运营商的工作方式?

谢谢!

【问题讨论】:

  • 我想我将不得不在适当的地方引入 tf.fake_quant_with_min_max_vars_gradient ...

标签: python tensorflow deep-learning tensorflow-lite quantization


【解决方案1】:

正确地进行伪量化确实具有挑战性,因为需要操纵训练图并将伪量化插入正确的位置。

对于您的用例,您能否尝试训练后量化 (https://medium.com/tensorflow/tensorflow-model-optimization-toolkit-post-training-integer-quantization-b4964a1ea9ba)?通过后期训练,您无需操作训练图,该工具会使用校准数据捕获最小/最大范围。

【讨论】:

  • 我已经设法在正确的位置注入了假量化,但问题是我可能必须手动定义梯度,以适应范围/权重。我遵循训练后量化方法来捕获范围,然后将它们定义为假量化中的固定值以微调权重,但这是一个两阶段的方法(此外,从训练后提取的图不给我重量范围,只有激活)。我想只使用量化感知训练来完成所有这些......那么,我应该如何正确定义梯度 Ops ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
相关资源
最近更新 更多