quant_utils

提供一些可以在quantize()方法中使用的基本工具。

函数

get_weights_scaling_factor

返回每个块的量化权重缩放因子。

get_weights_scaling_factor_2

返回每个张量的权重缩放因子。

pack_float32_to_4bit_cpp_based

将float32值的数组转换为4位数据类型,并将每两个连续元素打包到一个字节中。

pack_float32_to_4bit_optimized

将float32值的数组转换为4位数据类型,并将每两个连续元素打包到一个字节中。

quantize

将张量转换为基于NVFP4量化的量化格式。

get_weights_scaling_factor(input, block_size, weights_scaling_factor_2)

返回每个块的量化权重缩放因子。

Parameters:
  • 输入 (ndarray) –

  • block_size (int) –

  • weights_scaling_factor_2 (float32) –

get_weights_scaling_factor_2(input)

返回每个张量的权重缩放因子。

Parameters:

输入 (ndarray) –

pack_float32_to_4bit_cpp_based(array, signed)

将float32值的数组转换为4位数据类型,并将每两个连续元素打包到一个字节中。

这是ONNX辅助文件中pack_float32_to_4bit()实用程序的优化版本。这里的基本优化是在C++中实现这个round_and_pack逻辑,这应该会更快。

Parameters:
  • array (ndarray | Sequence) – 要转换和打包的浮点数数组

  • signed (bool) – 4位变体是有符号还是无符号

Returns:

打包数组,大小为 ceil(array.size/2)(单维度)。

Return type:

ndarray

pack_float32_to_4bit_optimized(array, signed)

将float32值的数组转换为4位数据类型,并将每两个连续元素打包到一个字节中。

这是ONNX辅助文件中pack_float32_to_4bit()实用程序的优化版本。这里完成的基本优化主要依赖于将一些常见代码移出每个元素的函数调用或循环,从而使它们成为每个输入数组的,而不是每个输入元素的。其余逻辑应大致保持不变。

Parameters:
  • array (ndarray | Sequence) – 要转换和打包的浮点数数组

  • signed (bool) – 4位变体是有符号还是无符号

Returns:

打包数组,大小为 ceil(array.size/2)(单维度)。

Return type:

ndarray

quantize(input, block_size, weights_scaling_factor, weights_scaling_factor_2)

将张量转换为基于NVFP4量化的量化格式。

Parameters:
  • 输入 (ndarray) –

  • block_size (int) –

  • weights_scaling_factor (ndarray) –

  • weights_scaling_factor_2 (ndarray) –