进阶端侧 / 本地 4 分钟阅读发布于

Intel Arc 显卡:llama.cpp(SYCL)或 Ollama(Vulkan)

在 Arc B580、B570、A770、A750 上跑 GGUF —— SYCL 编译、Ollama 路线、如何确认真的在用 GPU,以及 8–16 GB 能装下什么。

面向的技术栈

Linux(Ubuntu)或 Windows 11 · 英特尔 GPU 驱动 · oneAPI Base Toolkit · 以 GGML_SYCL=ON 编译的 llama.cpp · 或启用 Vulkan 的 Ollama · GGUF

最近一次修改后未重新实机运行 —— 命令请当作起点,而不是已验证的配方。

Intel ArcSYCLllama.cppOllamaVulkanGGUF

Arc 上哪些能用,哪些不能

GGUF 可以用,有两条路线。llama.cpp 有基于英特尔 oneAPI 的 SYCL 后端,文档把 Arc A770、A750 和 B580 列为已验证;B570 与 B580 同属 Xe2 一代,但不在名单上。Ollama 没有 SYCL 版本,它通过 Vulkan 后端使用 Arc,默认开启。AWQ、GPTQ、EXL2 在这里不可选:ExLlamaV2 只支持 CUDA,而 vLLM 的英特尔后端在消费级 Arc 上支持哪些量化格式本站尚未确认,所以计算器和 Arc 页面上的所有推荐都只用 GGUF。

text
llama.cpp SYCL, verified list:  Arc A770, A750, B580
Same generation, not listed:     Arc B570
Ollama:                          Vulkan backend, on by default
Formats this site recommends:    GGUF only

Linux 上的前置条件

按 dgpu-docs.intel.com 上对应发行版的说明安装英特尔 GPU 驱动,然后把用户加入 render 和 video 组并重新登录。接着安装 oneAPI Base Toolkit,保留默认路径 /opt/intel/oneapi。编译之前先确认能看到显卡:sycl-ls 应列出一个 level_zero 的 GPU 条目。如果没有,SYCL 文档自己的建议是运行 sudo sycl-ls 并检查用户组 —— 通常是没加组,而不是编译的问题。

bash
sudo usermod -aG render $USER
sudo usermod -aG video $USER   # then log out and back in

source /opt/intel/oneapi/setvars.sh
sycl-ls                        # expect a [level_zero:gpu] line for the Arc card

用 SYCL 编译 llama.cpp

开关是 GGML_SYCL=ON,用刚才加载的 oneAPI 环境里的英特尔 icx/icpx 编译;文档建议加上 GGML_SYCL_F16=ON 以获得更好的速度。每开一个新 shell,编译或运行前都要重新 source setvars.sh。第一次运行比之后慢:这个构建没有预编译内核,内核在首次使用时才编译。

bash
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
source /opt/intel/oneapi/setvars.sh
cmake -B build -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL_F16=ON
cmake --build build --config Release -j

./build/bin/llama-ls-sycl-device   # lists the SYCL devices the build can see

启动服务并确认在用 GPU

绑定 127.0.0.1 —— 除非传 --api-key,llama-server 没有任何鉴权。确认的依据在启动日志里,而不是“它能回答”:找 SYCL 设备检测那一行,以及 load_tensors 报告所有层都已卸载。退回 CPU 的构建照样能回答,只是很慢。如果机器上同时有英特尔核显,用 ONEAPI_DEVICE_SELECTOR 固定独显,或者用 --list-devices 列出设备、再用 --device 指定。

bash
ONEAPI_DEVICE_SELECTOR="level_zero:0" ./build/bin/llama-server \
  -m ./models/Qwen3-8B-Q4_K_M.gguf \
  -ngl 99 -c 8192 --host 127.0.0.1 --port 8080

# In the startup log:
#   detect 1 SYCL GPUs: [0] with top Max compute units:...
#   load_tensors: offloaded 37/37 layers to GPU

Ollama 路线

如果不想装 oneAPI,Ollama 通过 Vulkan 支持 Arc,不需要编译。Windows 上 GPU 驱动已自带 Vulkan 支持;Linux 上要先装英特尔驱动。Ollama 文档提到:没有 root 权限或 cap_perfmon 能力时,它读不到 Vulkan 的可用显存,调度时只能按估算大小处理,所以要授予这个能力。检查方法是 ollama ps:PROCESSOR 一列应显示 GPU,而不是 CPU/GPU 拆分。在容器里只透传 /dev/dri —— /dev/kfd 是 AMD 的设备,宿主机上没有时 Docker 会拒绝启动容器。

bash
curl -fsSL https://ollama.com/install.sh | sh
sudo setcap cap_perfmon+ep /usr/local/bin/ollama

ollama run hf.co/Qwen/Qwen3-8B-GGUF:Q4_K_M
ollama ps                          # PROCESSOR should read 100% GPU

# With an Intel iGPU too, pick the discrete card by its Vulkan index:
#   GGML_VK_VISIBLE_DEVICES=1 ollama serve

能装下什么,以及速度上限

显存算术不关心是哪家的卡。下表来自本站计算器,均为 Q4_K_M(这几个模型都提供该档位)。Qwen3 8B 在 Q4_K_M、8K 上下文下约 6.4 GB。Gemma 3 12B 在 Q4_K_M、8K 上下文下约 8.8 GB。Qwen3 14B 在 Q4_K_M、8K 上下文下约 10.7 GB,占 B580 的 89% —— 超过了本站的“宽裕”线,所以要么缩短上下文,要么换 16 GB 的 A770。速度一栏是上限,不是实测:生成每个 token 都要把整个权重文件读一遍,所以带宽除以文件大小就是 tok/s 的上限。本站没有人在 Arc 上实际跑过,真实吞吐会更低。

text
Model, Q4_K_M, 8K context     size     B580 12G   A770 16G   ceiling B580 / A770
Qwen3 8B                       6.4 GB   54%        40%        97 / 119 tok/s
Gemma 3 12B                    8.8 GB   73%        55%        65 / 80 tok/s
Qwen3 14B                      10.7 GB  89%        67%        54 / 66 tok/s

Measure your own: ./build/bin/llama-bench -m <model.gguf> -ngl 99   (pp512 / tg128)

出问题时

Arc 上第一天遇到的问题大多是下面几种之一,只有最后一种和模型有关。

text
sycl-ls shows no level_zero GPU
  → driver not installed, or user not in render/video (log out and back in)

"setvars.sh" forgotten → icx not found at build, or SYCL libraries missing at run

First run very slow, later runs normal
  → kernels compiled on first use (no ahead-of-time build) — expected

Runs, but on the integrated GPU
  → ONEAPI_DEVICE_SELECTOR="level_zero:0" (llama.cpp) / GGML_VK_VISIBLE_DEVICES (Ollama)

Out of device memory
  → shorten -c, or pick a smaller quant (the SYCL docs' own advice)

常见问题

Intel Arc 显卡上该用 llama.cpp SYCL 还是 Ollama?

Ollama 路线更短:不用装 oneAPI,不用编译,通过默认开启的 Vulkan 后端使用 Arc。llama.cpp + SYCL 配置更多,但它是 llama.cpp 官方为英特尔 GPU 写的路线,A770、A750、B580 在其已验证名单上。本站没有在 Arc 上做过基准测试,所以无法告诉你哪个在你的卡上更快 —— 用 llama-bench 测。

在 Windows 上不装 oneAPI 能用 llama.cpp SYCL 吗?

可以。llama.cpp 在发布页提供 Windows 的 SYCL 构建(bin-win-sycl-x64 压缩包),其 SYCL 文档说明包里已带所需运行时,无需单独安装 oneAPI。在 Windows 上从源码编译则需要 Visual Studio 和 oneAPI Base Toolkit。文档点名的系统版本是 Windows 11。

Arc B580 能装下多少个模型?

本索引 89 个模型中,有 48 个能以 GGUF 在 4K 上下文下宽裕地装进 B580 —— 与其他 12 GB 显卡相同,因为决定能否装下的只有容量。A770 16G 可装 51 个,B570 10G 40 个,A750 8G 33 个。速度是另一个问题:B580 的显存带宽为 456 GB/s,模型装下之后,它决定了每秒 token 数的上限。

这篇指南用到了什么

格式
GGUF

接下来

看看 🔵 Arc B580 12G 还能跑哪些模型反向查询 —— 12GB、8192 上下文,按质量排序

本文涉及的模型

它真的跑起来了吗?

复制命令并不等于它能用,所以站内只在这里问一次。除了你的这个回答之外,不收集任何东西。

相关指南

部署指南仅供学习参考。每个模型均有独立许可协议 — 下载或部署前请阅读 Hugging Face 官方模型卡。