Skip to content

[Bug]: Block-scaled FP8 (compressed-tensors W8A8) crashes on load on SM120 Blackwell (RTX PRO 6000), v0.24.0 — DeepGEMM "Unknown SF transformation" assertion #47436

Description

@Odrec

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions