quant_rnn

量化RNN。

QuantRNNBase

量化RNN模块的基类。

QuantRNNFullBase

带有输入量化器的量化RNN。

RNNLayerForward

单层的rnn模块。

VFRNNForward

重新实现_VF rnn调用,使用Python以启用输入量化器。

函数

get_quantized_rnn_layer_forward

为不同的RNN单元构建前向调用。

get_quantized_rnn_layer_variable_len_forward

为打包序列构建前向调用。

get_quantized_rnn_layer_variable_len_reverse_forward

为反向的打包序列构建前向调用。

lstm_cell_with_proj

目前 _VF.lstm_cell 不接受投影输入。

quantized_cell_forward

在调用单元之前调用输入量化器。

class QuantRNNBase

基础:DynamicModule

量化RNN模块的基类。

property all_input_quantizers_disabled

检查是否所有输入量化器都已禁用。

default_quant_desc_input = QuantizerAttributeConfig(enable=True, num_bits=8, axis=None, fake_quant=True, unsigned=False, narrow_range=False, learn_amax=False, type='static', block_sizes=None, trt_high_precision_dtype='Float', calibrator='max')
default_quant_desc_weight = QuantizerAttributeConfig(enable=True, num_bits=8, axis=None, fake_quant=True, unsigned=False, narrow_range=False, learn_amax=False, type='static', block_sizes=None, trt_high_precision_dtype='Float', calibrator='max')
forward(input, *args, **kwargs)

在调用原始的前向方法之前,对输入和权重进行量化。

property functionals_to_replace: Iterator[Tuple[module, str, Callable]]

动态替换包中的函数。

quantize_weight()

在其中self.weight被量化的上下文。

weight_quantizer: TensorQuantizer | SequentialQuantizer
class QuantRNNFullBase

基础类: QuantRNNBase

带有输入量化器的量化RNN。

class RNNLayerForward

基础类:object

单层的rnn模块。

__init__(cell, reverse=False, variable_len=False)

为不同的单元、方向和输入初始化层前向传播。

class VFRNNForward

基础类:object

重新实现_VF rnn调用,使用Python以启用输入量化器。

与原始调用相比,效率较低。

__init__(mode, bidirectional, num_layers, has_proj, has_bias, input_quantizers, proj_input_quantizers=None, batch_first=False)

预先构建必要的参数以用于vf调用,以减少开销。

请参考torch RNN模块以获取参数信息。

Parameters:
  • mode (str) –

  • 双向的 (布尔型) –

  • num_layers (int) –

  • has_proj (bool) –

  • has_bias (bool) –

  • input_quantizers (List[TensorQuantizer]) –

  • proj_input_quantizers (List[TensorQuantizer] | None) –

  • batch_first (bool | None) –

forward(layer_forwards, input, flat_weights, hidden, dropout=0, training=True, batch_sizes=None)

这是vf rnn调用的核心实现。

Parameters:
  • layer_forwards (Tuple[Callable]) –

  • 输入 (张量) –

  • flat_weights (List[Tensor]) –

  • hidden (Tensor | Tuple[Tensor]) –

  • dropout (float | None) –

  • 训练 (bool | None) –

  • batch_sizes (Tensor | None) –

get_quantized_rnn_layer_forward(cell, reverse=False)

为不同的RNN单元构建前向调用。

请注意,batch_sizes 在这里是为了保持与可变长度前向传播的签名一致。

get_quantized_rnn_layer_variable_len_forward(cell)

为打包序列构建前向调用。

get_quantized_rnn_layer_variable_len_reverse_forward(cell)

为反向的打包序列构建前向调用。

lstm_cell_with_proj(input, hidden, *weights, proj_input_quantizer=None)

目前 _VF.lstm_cell 不接受投影输入。即 h_n 和 c_n 的形状必须相同。

与_VF.lstm_cell相比,此实现未针对cuda进行优化,因此我们仅在存在投影时使用它。

quantized_cell_forward(cell, input, hidden, weights, input_quantizer, proj_input_quantizer=None)

在调用单元之前调用输入量化器。