RuntimeError: start (0) + length (17408) exceeds dimension size (8704)”

用户尝试用 vLLM 加载 nvidia/Qwen3.6-27B-NVFP4 (Dense 架构,混合精度 W4A16_NVFP4 + FP8),启动命令如下:

RuntimeError: start (0) + length (17408) exceeds dimension size (8704)"

RuntimeError: start (0) + length (17408) exceeds dimension size (8704)”

快速结论:该报错出现在加载 nvidia/Qwen3.6-27B-NVFP4 模型时,优先排查 vLLM 镜像是否为较新版本(0.22+ / nightly),旧版镜像缺少混合精度 W4A16 NVFP4 层派发逻辑。

问题场景

用户尝试用 vLLM 加载 nvidia/Qwen3.6-27B-NVFP4(Dense 架构,混合精度 W4A16_NVFP4 + FP8),启动命令如下:

vllm serve nvidia/Qwen3.6-27B-NVFP4 \
  --quantization modelopt \
  --trust-remote-code \
  --max-model-len 65536 \
  --kv-cache-dtype fp8

在权重加载阶段报错。同镜像加载 MoE 模型 nvidia/Qwen3.6-35B-A3B-NVFP4 没有问题。

报错原文

WARNING [qwen3_5.py:435] Parameter layers.0.mlp.down_proj.input_scale not found in params_dict, skip loading
...
  File ".../vllm/model_executor/models/qwen3_5.py", line 443, in load_weights
    weight_loader(param, loaded_weight)
  File ".../vllm/model_executor/layers/linear.py", line 1529, in weight_loader_v2
    param.load_row_parallel_weight(loaded_weight=loaded_weight)
  File ".../vllm/model_executor/parameter.py", line 222, in load_row_parallel_weight
    loaded_weight = loaded_weight.narrow(...)
RuntimeError: start (0) + length (17408) exceeds dimension size (8704).

17408 = FFN intermediate_size;8704 = 17408 / 2 = NVFP4 打包后的实际维度。vLLM 将已打包的 W4A16_NVFP4 权重当作未量化完整张量加载,导致 narrow() 越界。

原因分析

根本原因:旧版 vLLM 镜像(0.19.x)缺少 W4A16_NVFP4 混合精度 Dense 层的派发逻辑。

ModelOptMixedPrecisionConfig 的 per-layer 路由依赖 PR #42566(2026-05-22 合并),该 PR 在 MoE 模型上验证充分,但 Dense Linear 路径(如 mlp.down_proj)的 W4A16_NVFP4 层未被正确路由到 ModelOptNvFp4W4A16LinearMethod,导致降级到未量化加载器,从而触发 out-of-range 错误。该问题在 v0.23.x / nightly 版本中已修复。

关键复现条件:

  • vLLM 版本 0.19.2rc1.dev134(vllm/vllm-openai:cu130-nightly 旧镜像)
  • 模型量化为 "quant_algo": "MIXED_PRECISION",其中 mlp.down_proj 使用 W4A16_NVFP4
  • 用户误以为容器内为 0.23.1rc1.dev515(实际是另一服务的版本)

环境排查

  • vLLM 版本:vllm serve 启动时日志首行需确认。旧版镜像 vllm/vllm-openai:cu130-nightly 报告 v0.19.2rc1.dev134,新版 vllm/vllm-openai:nightly 应为 0.22+ / 0.23.x
  • 模型架构:确认 config.jsonarchitectures["Qwen3_5ForConditionalGeneration"](多模态)还是 ["Qwen3_5ForCausalLM"](纯文本)。当前修复版本正确解析多模态架构下的 model.language_model. 前缀。
  • 量化配置:检查 config.jsonquantization_config.quantized_layers 的 per-layer 条目,确认 mlp.down_projquant_algoW4A16_NVFP4
  • 硬件:GB10 / DGX Spark(sm_121),不支持原生 FP4,期望走 Marlin W4A16 路径。

解决步骤

  1. 确认 vLLM 镜像版本:运行 vllm serve --version 或查看启动日志。若版本低于 0.22,请升级。
  2. 更新镜像:拉取最新 nightly 镜像:
    docker pull vllm/vllm-openai:nightly

    或者使用固定版本如 vllm/vllm-openai:0.23.0(确保包含 #42566)。

  3. 重新启动服务,保持原参数:
    vllm serve nvidia/Qwen3.6-27B-NVFP4 \
      --quantization modelopt \
      --trust-remote-code \
      --max-model-len 65536 \
      --kv-cache-dtype fp8
  4. 可选:如仍报错,可尝试 --quantization modelopt_fp4,但新版镜像应自动识别 modelopt_mixed

验证方法

服务启动后,加载进度正常完成,无 RuntimeError: start (0) + length (17408) exceeds dimension size (8704) 错误。可尝试发送推理请求确认模型正常响应。

参考来源

vllm-project/vllm #47215

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 10850

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注