flashinfer.fp4_quantization.fp4_quantize

flashinfer.fp4_quantization.fp4_quantize(input: Tensor, global_scale: Tensor | None = None, sf_vec_size: int = 16, sf_use_ue8m0: bool = False, is_sf_swizzled_layout: bool = True, is_sf_8x4_layout: bool = False, enable_pdl: bool | None = None) Tuple[Tensor, Tensor]

将输入张量量化为 FP4 格式。

此函数实现 FP4 量化,将输入张量转换为压缩的 FP4 格式,并带有相关的缩放因子。它支持各种输入数据类型和缩放因子布局。

参数:
  • input (torch.Tensor) – 输入张量,形状为 [M, K],数据类型为 fp16/bf16/fp8_quantized。

  • global_scale (torch.Tensor, 可选) – 全局缩放因子,形状为 [1],数据类型为 float32。

  • sf_vec_size (int, 可选) – 缩放因子向量大小。默认为 16。

  • sf_use_ue8m0 (bool, 可选) – 是否为缩放因子使用 UE8M0 格式。默认为 False。

  • is_sf_swizzled_layout (bool, 可选) – 是否为缩放因子使用交错布局。默认为 True。

  • is_sf_8x4_layout (bool, 可选) – 是否为缩放因子使用 8x4 布局或 128x4 布局。默认为 False。

  • enable_pdl (Optional[bool], 可选) – 是否启用 PDL(程序依赖启动)。如果为 None,则根据设备功能自动检测。默认为 None。

返回值:

包含一个元组
  • 量化后的张量,形状为 [M, K/2],数据类型为 FLOAT4_E2M1X2

  • 缩放因子张量,其形状由布局和 sf_vec_size 决定

返回值类型:

Tuple[torch.Tensor, torch.Tensor]

抛出:

NotImplementedError – 如果请求了以下任何功能但尚未实现:- 启用 BFloat16 时输入为 BFloat16 - 启用 FP8 时输入为 FP8 - sf_vec_size 不是 16 或 32