[RL] Fix FlashInfer TRTLLM MXFP8 dense weight layout (#28459)

This commit is contained in:
Ziang Li
2026-06-17 10:33:35 +00:00
committed by GitHub
parent 2f1390fcb1
commit 3fb65ebabd
3 changed files with 45 additions and 6 deletions
+22 -4
View File
@@ -593,6 +593,21 @@ class Fp8LinearMethod(LinearMethodBase):
scale_u8 = layer.weight_scale_inv.data
n, k = weight.shape
epilogue_tile_m = 128
sf_cols = k // 32
scale_u8 = scale_u8.contiguous().view(torch.uint8).reshape(n, sf_cols)
padded_n = ((n + epilogue_tile_m - 1) // epilogue_tile_m) * (
epilogue_tile_m
)
pad_rows = padded_n - n
if pad_rows:
scale_u8 = F.pad(
scale_u8,
(0, 0, 0, pad_rows),
mode="constant",
value=0,
)
copy_or_rebind_param(
layer,
@@ -603,9 +618,9 @@ class Fp8LinearMethod(LinearMethodBase):
)
copy_or_rebind_param(
layer,
"weight_scale_inv",
"weight_scale_inv_shuffled",
shuffle_matrix_sf_a(
scale_u8.contiguous().view(torch.uint8).reshape(n, k // 32),
scale_u8,
epilogue_tile_m,
num_elts_per_sf=32,
)
@@ -775,8 +790,11 @@ class Fp8LinearMethod(LinearMethodBase):
)
if self.use_mxfp8:
if get_fp8_gemm_runner_backend().is_flashinfer_cutlass():
weight_scale = layer.weight_scale_inv_swizzled
if (
get_fp8_gemm_runner_backend().is_flashinfer_cutlass()
or get_fp8_gemm_runner_backend().is_flashinfer_trtllm()
):
weight_scale = layer.weight_scale_inv_shuffled
else:
weight_scale = layer.weight_scale_inv
if isinstance(x, tuple):