intel / intel/llm-scaler

[Bug]: INT4 GPTQ MoE model crashes with UR_RESULT_ERROR_OUT_OF_RESOURCES on Intel Arc Pro B70 — dense models work fine

Open
#479 3 comments 0 reactions 1 assignee Claimed by @Wesley-Du View on GitHub
Dominant language
C++
Stars
529
Forks
80
Avg merge
9h 7m
Merged PRs (30d)
38

Description

Summary

Running any INT4 GPTQ MoE (Mixture of Experts) model on intel/llm-scaler-vllm:0.14.0-b8.3.1 with an Intel Arc Pro B70 32GB crashes during warmup with RuntimeError: level_zero backend failed with error: 40 (UR_RESULT_ERROR_OUT_OF_RESOURCES) inside torch.ops.torch_ipex.group_mm_int4_out_marlin.

An identical setup with a dense INT4 GPTQ model (same container, same hardware, same arguments) works perfectly. The crash is specific to the MoE expert GEMM kernel path.


Environment


Property | Value
-- | --
Container image | intel/llm-scaler-vllm:0.14.0-b8.3.1
vLLM version | 0.14.1.dev0+gb17039bcc.d20260605
GPU | Intel Arc Pro B70 32GB
Host OS | (Unraid / Docker)
Tensor parallel size | 1
dtype | float16


Working case (dense model) ✅

Model: XReyRobert/Qwopus3.6-27B-v2-GPTQ-Pro-v1
Architecture resolved by vLLM: Qwen3_5ForConditionalGeneration  dense model

Post arguments:

-c "export VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 && export VLLM_WORKER_MULTIPROC_METHOD=spawn && export VLLM_OFFLOAD_WEIGHTS_BEFORE_QUANT=1 && export VLLM_QUANTIZE_Q40_LIB=/usr/local/lib/python3.12/dist-packages/vllm_int4_for_multi_arc.so && vllm serve --port 2222 --host 0.0.0.0 --gpu-memory-util 0.9 --max-num-batched-tokens 8192 --max-model-len 16550 --block-size 64 --dtype float16 --model /models/Qwopus3.6-27B-v2-GPTQ-Pro-v1 --served-model-name Qwopus3.6-27B-v2-GPTQ-Pro-v1 --tensor-parallel-size 1 --quantization gptq --enforce-eager --trust-remote-code --disable-log-requests --enable-auto-tool-choice --tool-call-parser qwen3_coder --allow-deprecated-quantization"

Result: Server starts successfully, processes requests at ~30 tokens/s. ✅


Failing case (MoE model) ❌

Model: palmfuture/Qwen3.6-35B-A3B-GPTQ-Int4
Architecture resolved by vLLM: Qwen3_5MoeForConditionalGeneration  MoE model
Model quantization specs: GPTQ v2, 4-bit, group_size=128, symmetric

Post arguments (identical setup, only model changed):

-c "export VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 && export VLLM_WORKER_MULTIPROC_METHOD=spawn && export VLLM_OFFLOAD_WEIGHTS_BEFORE_QUANT=1 && export VLLM_QUANTIZE_Q40_LIB=/usr/local/lib/python3.12/dist-packages/vllm_int4_for_multi_arc.so && vllm serve --port 2400 --host 0.0.0.0 --gpu-memory-util 0.9 --max-num-batched-tokens 8192 --max-model-len 16550 --block-size 64 --dtype float16 --model /models/Qwen3.6-35B-A3B-GPTQ-Int4 --served-model-name Qwen3.6-35B-A3B-GPTQ-Int4 --tensor-parallel-size 1 --enforce-eager --trust-remote-code --disable-log-requests --enable-auto-tool-choice --tool-call-parser qwen3_coder --reasoning-parser qwen3 --skip-mm-profiling --allow-deprecated-quantization"

Container environment variables:

VLLM_ALLOW_LONG_MAX_MODEL_LEN=1

VLLM_WORKER_MULTIPROC_METHOD=spawn
VLLM_OFFLOAD_WEIGHTS_BEFORE_QUANT=1
VLLM_QUANTIZE_Q40_LIB=/usr/local/lib/python3.12/dist-packages/vllm_int4_for_multi_arc.so

Result: Crashes during warmup. ❌


Error log

The model loads successfully (7 shards, 21.40 GiB), passes memory profiling, then crashes at warmup:

sycl_arch not recognized: 21483225088


(EngineCore_DP0 pid=137) File "/usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/fused_moe/layer.py", line 2005, in forward_impl
final_hidden_states = self.quant_method.apply(

(EngineCore_DP0 pid=137) File "/usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/quantization/ipex_quant.py", line 1120, in apply
res = layer.ipex_fusion(

(EngineCore_DP0 pid=137) File "/usr/local/lib/python3.12/dist-packages/intel_extension_for_pytorch/transformers/models/xpu/fusions/linear_fusion.py", line 252, in fused_moe_experts
hidden_states = torch.xpu.moe_gemm(

(EngineCore_DP0 pid=137) File "/usr/local/lib/python3.12/dist-packages/intel_extension_for_pytorch/xpu/intrinsic/__init__.py", line 471, in moe_gemm
torch.ops.torch_ipex.group_mm_int4_out_marlin(

RuntimeError: level_zero backend failed with error: 40 (UR_RESULT_ERROR_OUT_OF_RESOURCES)

RuntimeError: Engine core initialization failed. See root cause above.

Root cause analysis

The crash occurs in torch.ops.torch_ipex.group_mm_int4_out_marlin which is the INT4 MoE expert GEMM kernel used exclusively for MoE architectures. Dense models never reach this code path and work fine.

The error UR_RESULT_ERROR_OUT_OF_RESOURCES (Level Zero error code 40) suggests the kernel is requesting more GPU resources (registers, shared memory, or sub-group size) than the Arc Pro B70 can provide. This is likely related to the preceding warning sycl_arch not recognized: 21483225088 — the IPEX runtime does not recognize the B70's SYCL architecture ID, which may cause it to dispatch a kernel compiled for a different tile/EU configuration.

Key difference between working and failing:

  • Dense model → Qwen3_5ForConditionalGeneration → no MoE GEMM → ✅ works
  • MoE model → Qwen3_5MoeForConditionalGeneration → hits group_mm_int4_out_marlin → ❌ crashes

Note: Memory is NOT the issue. The B70 has 32GB VRAM and the model only uses 21.40 GiB after loading. The crash happens at kernel dispatch, not allocation.


What was tried

  • --quantization gptq → same crash
  • --quantization gptq_marlin → same crash
  • --quantization marlin → same crash
  • export SYCL_DEVICE_FILTER=xpu → same crash
  • Multiple GPTQ models for Qwen3.6-35B-A3B (both group_size=32 and group_size=128) → same crash
  • All point to the same group_mm_int4_out_marlin kernel as the failure point

Expected behavior

INT4 GPTQ MoE models should run on Intel Arc Pro B70 with intel/llm-scaler-vllm:0.14.0-b8.3.1, as the container release notes state support for "Qwen3.5/3.6 series" and MoE models.

Question

Is group_mm_int4_out_marlin compiled/optimized for Arc Pro B70 (Battlemage)? If the SYCL arch ID 21483225088is not recognized, the kernel may be falling back to a wrong configuration. Is there a workaround or environment variable to force a compatible kernel path?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.