Your current environment
Environment
- vLLM: v0.24.0 (official
vllm/vllm-openai:v0.24.0 Docker image)
- GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition — compute capability 12.0 (SM120)
- Driver: 580.126.20
- CUDA (image): 13.0, torch 2.11.0+cu130
- TP: 1 (single GPU)
🐛 Describe the bug
Loading a block-scaled FP8 checkpoint (compressed-tensors, W8A8 FP8 with 2‑D block weight scales) on SM120 Blackwell crashes during weight post-processing. vLLM auto-selects DeepGemmFp8BlockScaledMMKernel, and DeepGEMM's scale-factor layout transform aborts with an assertion:
RuntimeError: Assertion error (/workspace/.deps/deepgemm-src/csrc/apis/layout.hpp:59): Unknown SF transformation
Model: RedHatAI/gemma-4-31B-it-FP8-block
Serve command (relevant flags):
vllm serve --model RedHatAI/gemma-4-31B-it-FP8-block \
--tensor-parallel-size 1 --max-model-len 65536 --gpu-memory-utilization 0.95 \
--kv-cache-dtype fp8 --async-scheduling --performance-mode interactivity \
--reasoning-parser gemma4 --enable-auto-tool-choice --tool-call-parser gemma4 \
--chat-template examples/tool_chat_template_gemma4.jinja
Kernel selection + traceback:
INFO [__init__.py:563] Selected DeepGemmFp8BlockScaledMMKernel for CompressedTensorsW8A8Fp8
...
ERROR [core.py:1231] quant_method.process_weights_after_loading(module)
File ".../compressed_tensors/compressed_tensors.py", line 915, in process_weights_after_loading
layer.scheme.process_weights_after_loading(layer)
File ".../compressed_tensors/schemes/compressed_tensors_w8a8_fp8.py", line 169, in process_weights_after_loading
self.fp8_linear.process_weights_after_loading(layer)
File ".../kernels/linear/scaled_mm/deep_gemm.py", line 96, in process_weights_after_loading
dg_weight, dg_weight_scale = deepgemm_post_process_fp8_weight_block(...)
File ".../quantization/utils/fp8_utils.py", line 1140, in deepgemm_post_process_fp8_weight_block
dg_ws = deepgemm_post_process_weight_scale_block(...)
File ".../quantization/utils/fp8_utils.py", line 1079, in deepgemm_post_process_weight_scale_block
return transform_sf_into_required_layout(...)
File ".../utils/deep_gemm.py", line 494, in transform_sf_into_required_layout
return _transform_sf_into_required_layout_impl(...)
RuntimeError: Assertion error (/workspace/.deps/deepgemm-src/csrc/apis/layout.hpp:59): Unknown SF transformation
The engine core then fails to initialize (Engine core initialization failed) and the server crash-loops.
Workaround
Disabling DeepGEMM makes it load and serve cleanly — vLLM then selects the Cutlass block-scaled kernel:
VLLM_USE_DEEP_GEMM=0
→ INFO [__init__.py:563] Selected CutlassFp8BlockScaledMMKernel for CompressedTensorsW8A8Fp8
→ INFO: Application startup complete.
So this is specific to the DeepGEMM block-scaled path on SM120, not the checkpoint per se (it also loaded on vLLM v0.20.1).
Suggested fix
Either add the missing SF-layout transform for SM120 in DeepGEMM, or — when DeepGEMM can't handle a checkpoint's scale-factor layout on the current arch — fall back to CutlassFp8BlockScaledMMKernel instead of asserting. (The checkpoint's scale_fmt is not ue8m0, which appears to be what DeepGEMM's Blackwell path requires.)
Related
Your current environment
Environment
vllm/vllm-openai:v0.24.0Docker image)🐛 Describe the bug
Loading a block-scaled FP8 checkpoint (
compressed-tensors, W8A8 FP8 with 2‑D block weight scales) on SM120 Blackwell crashes during weight post-processing. vLLM auto-selectsDeepGemmFp8BlockScaledMMKernel, and DeepGEMM's scale-factor layout transform aborts with an assertion:Model:
RedHatAI/gemma-4-31B-it-FP8-blockServe command (relevant flags):
Kernel selection + traceback:
The engine core then fails to initialize (
Engine core initialization failed) and the server crash-loops.Workaround
Disabling DeepGEMM makes it load and serve cleanly — vLLM then selects the Cutlass block-scaled kernel:
So this is specific to the DeepGEMM block-scaled path on SM120, not the checkpoint per se (it also loaded on vLLM v0.20.1).
Suggested fix
Either add the missing SF-layout transform for SM120 in DeepGEMM, or — when DeepGEMM can't handle a checkpoint's scale-factor layout on the current arch — fall back to
CutlassFp8BlockScaledMMKernelinstead of asserting. (The checkpoint'sscale_fmtis notue8m0, which appears to be what DeepGEMM's Blackwell path requires.)Related
gemma-4-31B-it-FP8-block) produces garbage output (double-applied activation scales); different symptom, same checkpoint/area. (Validating whether the Cutlass fallback here is also affected.)