From 2ad10292339c045db0cb3998a76240a459cc83a7 Mon Sep 17 00:00:00 2001 From: Wentao Ye <44945378+yewentao256@users.noreply.github.com> Date: Tue, 14 Apr 2026 17:08:17 -0400 Subject: [PATCH] [Bug] Fix batch invariance nvfp4 support (#39820) Signed-off-by: yewentao256 --- .buildkite/test_areas/misc.yaml | 1 + vllm/model_executor/kernels/linear/__init__.py | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.buildkite/test_areas/misc.yaml b/.buildkite/test_areas/misc.yaml index 82fe6670a9..0cf9ec4339 100644 --- a/.buildkite/test_areas/misc.yaml +++ b/.buildkite/test_areas/misc.yaml @@ -224,6 +224,7 @@ steps: - pytest -v -s v1/determinism/test_rms_norm_batch_invariant.py - VLLM_TEST_MODEL=deepseek-ai/DeepSeek-V2-Lite-Chat pytest -v -s v1/determinism/test_batch_invariance.py::test_v1_generation_is_deterministic_across_batch_sizes_with_needle[TRITON_MLA] - VLLM_TEST_MODEL=Qwen/Qwen3-30B-A3B-Thinking-2507-FP8 pytest -v -s v1/determinism/test_batch_invariance.py::test_v1_generation_is_deterministic_across_batch_sizes_with_needle[FLASH_ATTN] + - pytest -v -s v1/determinism/test_nvfp4_batch_invariant.py - label: Acceptance Length Test (Large Models) # optional timeout_in_minutes: 25 diff --git a/vllm/model_executor/kernels/linear/__init__.py b/vllm/model_executor/kernels/linear/__init__.py index d0c0dd9f32..e0a9272c89 100644 --- a/vllm/model_executor/kernels/linear/__init__.py +++ b/vllm/model_executor/kernels/linear/__init__.py @@ -601,7 +601,13 @@ def init_nvfp4_linear_kernel() -> NvFp4LinearKernel: # Env-var overrides. force_kernel: type[NvFp4LinearKernel] | None = None - if envs.VLLM_USE_FBGEMM: + if envs.VLLM_BATCH_INVARIANT: + logger.info_once( + "VLLM_BATCH_INVARIANT forces NVFP4 linear to use the " + "emulation backend for deterministic execution." + ) + force_kernel = EmulationNvFp4LinearKernel + elif envs.VLLM_USE_FBGEMM: force_kernel = FbgemmNvFp4LinearKernel elif envs.VLLM_USE_NVFP4_CT_EMULATIONS: force_kernel = EmulationNvFp4LinearKernel