intel 核显硬件加速跑 ollama
tags: NAS
@
intel 核显硬件加速跑 ollama
我的 NAS 用了一块 q1j2 的 CPU,带一块 96 EU 的 XE 核显,性能比较给力。但长期以来我都将这块核显闲置,因为除了视频转码之外没找到合适的场景。
最近看英文比较多,于是想把沉浸式翻译接到自己的接口,减少 token 使用量。
安装 ollama
现在 ollama 已经支持 iGPU,不再需要使用 ipex 一类的方案,现在这些第三方方案已经归档,不再更新(也没必要了)。
我使用 fedora 系统,可以使用 sudo dnf install ollama 来安装,但 fedora 源里面的 ollama 版本较老,不合适,还是使用官网的安装方法更好:
curl -fsSL https://ollama.com/install.sh | sh
查看 ollama 的服务文件:
❯ cat /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
[Install]
WantedBy=default.target
默认使用 ollama:ollama 用户和用户组启动,其配置文件路径为 /var/lib/ollama/
可能需要手动创建这个文件夹并设用户组:
sudo mkdir /var/lib/ollama/
sudo chown -R ollama:ollama /var/lib/ollama/
在文件 /etc/systemd/system/ollama.service 的 [service] 添加几个环境变量:
Environment="OLLAMA_IGPU_ENABLE=true"
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"
分别为启用 intel 核显(以前是 OLLAMA_VULKAN=true,新版本偷偷改了,坑人);监听所有 IP,运行 WebUI 访问。
sudo systemctl daemon-reload
sudo systemctl restart ollama
此外,你可能还需要安装 vulkan 驱动,fedora 如下:
sudo dnf install mesa-vulkan-drivers vulkan-loader vulkan-tools
Vulkan 排错
vulkaninfo工具:
❯ vulkaninfo | grep "GPU id"
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Received return code -9 from call to vkCreateInstance in ICD /usr/lib64/libvulkan_dzn.so. Skipping this driver. 'DISPLAY' environment variable not set... skipping surface info WARNING: [Loader Message] Code 0 : ICD for selected physical device does not export vkGetPhysicalDeviceDisplayPlanePropertiesKHR! WARNING: [Loader Message] Code 0 : ICD for selected physical device does not export vkGetPhysicalDeviceDisplayPropertiesKHR! GPU id = 0 (Intel(R) Iris(R) Xe Graphics (RPL-P)) GPU id = 1 (llvmpipe (LLVM 22.1.7, 256 bits))
能看到 GPU 则说明 vulkan 驱动正常。
- ICD 文件路径,通常它们在
/usr/share/vulkan/icd.d/目录下
❯ cat /usr/share/vulkan/icd.d/intel_icd.x86_64.json
{
"ICD": {
"api_version": "1.4.348",
"library_arch": "64",
"library_path": "/usr/lib64/libvulkan_intel.so"
},
"file_format_version": "1.0.1"
}
程序通过这个文件找驱动,需要存在。
- ollama 对 vulkan 的支持
检查编译后的二进制是否包含 Vulkan 符号:
❯ strings /usr/local/bin/ollama | grep -i "ggml_vulkan"
esc cancelggml_vulkan:\s+(\d+)\s+=.*\|\s+uma:\s+([01])\s+\|evicting intermediate blob which no longer existsllama-server model fits alongside existing models
有输出则说明当前版本 ollama 支持 vulkan,只要是官网安装的最新版,都支持。
安装模型测试
这里使用 qwen3.5:4b 进行测试。
ollama pull qwen3.5:4b
ollama run qwen3.5:4b
❯ ollama run qwen3.5:4b
>>> 测试对话
Thinking...
好的,用户说“测试对话”.....
使用 sudo intel_gpu_top 查看核显使用情况:
intel-gpu-top: Intel Alderlake_p (Gen12) @ /dev/dri/card0 - 1419/1446 MHz; 1% RC6; 23.59/45.42 W; 118 irqs/s
ENGINES BUSY MI_SEMA MI_WAIT
Render/3D 93.67% |
可见 GPU 已经跑起来了。