快速结论:在使用 llama.cpp SYCL 后端(Intel Arc/Gaudi 等 Intel GPU)跑 llama-bench 或 llama-server 时,出现“Misc. bug: brutally bad SYCL performance on Battlemage”,表现是 SYCL 后端吞吐接近 CPU 水平、远低于 Vulkan。优先排查是否通过环境变量误关了 SYCL 优化,以及是否在 VM/虚拟化环境中运行。
适用环境:Issue 中确认的环境为 Linux(Ubuntu 24.04 HWE、Ubuntu 26.04,Docker 容器与源码编译均试过),llama.cpp build f454bd7eb (8935),受影响模块为 llama-server、llama-bench,GPU 为 Intel Battlemage(B50/B70,日志识别为 BMG G31),测试模型为 gemma-4-26B-A4B-it UD-Q4_K_M。硬件为 X10DRi + 双路 E5-2690v4、DDR4、PCIe 3.0;另在 11400F + PCIe 4.0 平台复测。ReBAR、Above 4G Decoding 已确认开启。
最快修复方案:暂无确认的一步修复方案。Issue 中维护者给出的排查方向(可优先尝试)是:在新终端中以默认环境变量运行,避免设置 GGML_SYCL_DISABLE_OPT=1 等关闭优化的变量;并改用裸机而非 VM/Proxmox 环境测试。
注意事项:Issue 被标记为 bug-unconfirmed,维护者认为“优化代码在你的场景中可能存在 bug”,但未定位到具体缺陷。用户复测后 SYCL 性能(pp512 约 367 t/s、tg128 约 13.74 t/s)仍远低于 Vulkan(pp512 约 1168 t/s、tg128 约 40 t/s),说明仅清理环境变量并未解决该问题。VM 对 GPU 性能的影响程度在 Issue 中没有量化结论。
问题场景
用户在 Linux(Docker 容器、Proxmox VM 内)上用 llama.cpp 的 SYCL 后端运行 llama-bench 与 llama-server,加载 gemma-4-26B-A4B-it 的 UD-Q4_K_M GGUF(约 15.70 GiB)到 Intel Battlemage 显卡(B50/B70),并设置 -ngl 99 全部层卸载到 GPU。结果 SYCL 后端的 prefill 和 token 生成速度都接近 CPU 水平,而同一台机器上 Vulkan 后端明显更快。用户还提到 OpenVINO 与 vllm-xpu 表现同样差。
报错原文
Misc. bug: brutally bad SYCL performance on Battlemage
load_backend: loaded SYCL backend from /app/libggml-sycl.so
load_backend: loaded CPU backend from /app/libggml-cpu-haswell.so
| model | size | params | backend | ngl | test | t/s |
| gemma4 26B.A4B Q4_K - Medium | 15.70 GiB | 25.23 B | SYCL | 99 | pp512 | 351.53 ± 9.93 |
| gemma4 26B.A4B Q4_K - Medium | 15.70 GiB | 25.23 B | SYCL | 99 | tg128 | 13.33 ± 0.33 |
ggml_vulkan: 0 = Intel(R) Graphics (BMG G31) (Intel open-source Mesa driver) | uma: 0 | fp16: 1 | bf16: 1 | warp size: 32 | shared memory: 49152 | int dot: 1 | matrix cores: none
load_backend: loaded Vulkan backend from /app/libggml-vulkan.so
| model | size | params | backend | ngl | test | t/s |
| gemma4 26B.A4B Q4_K - Medium | 15.70 GiB | 25.23 B | Vulkan | 99 | pp512 | 1168.82 ± 12.78 |
| gemma4 26B.A4B Q4_K - Medium | 15.70 GiB | 25.23 B | Vulkan | 99 | tg128 | 40.21 ± 0.17 |
原因分析
Issue 中没有给出确定的根因,以下为讨论中出现的方向,多为可能原因:
- 可能原因:优化被环境变量关闭。用户自述经常设置
GGML_SYCL_DISABLE_OPT=1(尤其是跑 MoE 模型不设就会崩溃),而维护者指出该变量会关闭所有 SYCL 优化,默认值应为 0,默认环境变量才是大多数 Intel GPU 的最佳性能配置。维护者据此推测“优化代码在你的场景里可能存在 bug”。 - 可能原因:虚拟化环境开销。用户的基准测试跑在 Proxmox 上的 VM 加 Docker 容器里,维护者建议裸机优先、Docker 其次,并说明 VM 对 CPU 性能有 5-10% 的折损,但对 GPU 的影响未知。
- 可能被排除:PCIe 3.0 / DDR4 带宽。维护者认为在单 GPU 且显存足够容纳模型的场景下,PCIe 版本和内存代数只影响模型加载速度,不影响推理运行速度;用户也在 PCIe 4.0 的 11400F 平台上复测未变快,与这一说法一致。
- 关于 Xe2 是否走未优化的 DMMV 路径:用户提出了这个疑问,但 Issue 中维护者回复“目前所有优化适用于所有 GPU,只有一个小的 PR 仅针对 Arc 770/750 + Q4_0”,没有确认或否认 Xe2 存在未优化路径。因此这一点仍是未确认的推测。
环境排查
- 确认 llama.cpp 构建版本(Issue 中为 f454bd7eb / 8935)与后端库是否加载正确(日志中应能看到
loaded SYCL backend)。 - 确认 SYCL / oneAPI 运行时版本与驱动:Issue 日志显示 oneAPI 组件包括 ccl 2021.17、mpi 2021.17、mkl 2025.3、umf 1.0 等,但未给出完整的运行时版本对比。
- 确认是否设置了
GGML_SYCL_DISABLE_OPT、GGML_SYCL_FORCE_MMQ、SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS等环境变量;建议用新终端打印环境变量核对。 - 确认编译选项:Issue 中试过
GGML_SYCL_F16=ON、GGML_NATIVE=ON,并提到 FP32/FP16 切换需要清理后重新编译,在相同模型上分别测速对比。 - 确认运行位置:裸机、Docker、Proxmox VM 三层环境需要分开对比;VM 中需确认 ReBAR、Above 4G Decoding 与 BAR 大小(用户报告 32G BAR 可见)。
- 确认 GPU 是否被正确识别为目标型号(Issue 中 Vulkan 日志识别为 BMG G31),以及显存是否足以完整容纳模型并留出运行和缓存空间。
解决步骤
- 打开一个全新的终端会话,不设置任何 GGML_SYCL_* 相关环境变量,尤其是不要设置
GGML_SYCL_DISABLE_OPT=1,让 SYCL 后端使用默认优化路径。 - 用相同模型重跑 llama-bench,记录 pp512 与 tg128 数值,与 Issue 中设置变量时的结果对比,判断是否由关闭优化导致。
- 如果默认配置下跑 MoE 模型出现崩溃,保留完整日志提供给维护者——维护者已表示希望看到完整日志以排查优化代码中的 bug。
- 按维护者建议,优先在裸机上测试,其次是 Docker,最后才是 Proxmox VM;条件允许时用同一命令在裸机与 VM 上各测一次,量化虚拟化开销。
- 如需切换 FP16/FP32 路径,先清理构建产物再重新编译(Issue 中明确 FP32 切 FP16 需要 clean 后 rebuild),然后重新测速。
- 作为对照,用 Vulkan 后端在相同模型、相同参数下运行一次,确认差距来源确实是 SYCL 后端而非硬件或模型配置。
验证方法
用 ./llama-bench -m <模型> 在相同构建、相同模型、默认环境变量下比较 SYCL 后端的 pp512 与 tg128。Issue 中用户按建议清理环境变量后复测,SYCL 仍约为 pp512 367 t/s、tg128 13.74 t/s,与 Vulkan 的约 1168 t/s / 40 t/s 差距仍然巨大,因此该问题的验证标准应为:SYCL 吞吐明显向 Vulkan 邻近,而不仅是环境变量已被清空。若在裸机上差距明显缩小,则说明 VM 环境是重要影响项;若裸机仍复现,可附完整日志继续在 Issue 中上报。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug][ROCm]: ROCM_AITER_MLA can select an aiter MLA decode kernel that silently returns uncorrelated output (gqa_ratio=16, fp8 Q+KV, decode_](https://www.chat-gpts.plus/wp-content/uploads/2026/11/66141-f364a62a-768x403.jpg)
![[Bug] MTP draft model does not inherit --hf-overrides (YaRN): length gate + dummy-0 drafts silently kill speculative acceptance beyond the d](https://www.chat-gpts.plus/wp-content/uploads/2026/11/58080-d6a21188-768x403.jpg)
