[RL] Fix FlashInfer TRTLLM MXFP8 dense weight layout (#28459)
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user