分享:Ubuntu 环境下如何在 Intel xpu 上运行 ollama 驱动 Qwen3
设置 Ollama 运行环境
获取 Intel Analytics IPEX 镜像
从 Docker Hub 中提取 IPEX 映像,这里使用私有仓库
docker pull hub.yiqisoft.cn/intelanalytics/ipex-llm-inference-cpp-xpu:latest
启动 Ollama 容器
创建 shell 运行脚本
由于Docker启动容器的命令比较长,所以将其保存为脚本比较方便,方便调整和重启。start-ipex-llm.sh
#!/bin/bash
docker run -d --restart=always \
--net=bridge \
--device=/dev/dri \
-p 11434:11434 \
-v ~/.ollama/models:/root/.ollama/models \
-e PATH=/llm/ollama:$PATH \
-e OLLAMA_HOST=0.0.0.0 \
-e no_proxy=localhost,127.0.0.1 \
-e ZES_ENABLE_SYSMAN=1 \
-e OLLAMA_INTEL_GPU=true \
-e ONEAPI_DEVICE_SELECTOR=level_zero:0 \
-e DEVICE=Arc \
--shm-size="16g" \
--memory="32G" \
--name=ipex-llm \
hub.yiqisoft.cn/intelanalytics/ipex-llm-inference-cpp-xpu:latest \
bash -c "cd /llm/scripts/ && source ipex-llm-init --gpu --device Arc && bash start-ollama.sh && tail -f /llm/ollama/ollama.log"
运行脚本
sh start-ipex-llm.sh
下载 Qwen3 模型
docker exec ipex-llm ollama pull qwen3:8b
在 Intel Core Ultra 机器上使用 Ollama
使用命令行
docker exec -it ipex-llm ollama run qwen3:8b
- 运行测试
root@HP:~# docker exec -it ipex-llm ollama run qwen3:8b
>>> 你好
Thinking...
好的,用户发来“你好”,我需要友好回应。首先,确认用户的需求,可能是测试或开始对话。保持自然,用中文回应,避免机械感。可以加入表情符号增加亲切感,同时保持简洁。确保符合规范,不涉及敏感内
容。接下来,用轻松的语气打招呼,并邀请用户提问或分享需求。例如:“你好!😊 有什么我可以帮你的吗?” 这样既友好又开放,鼓励用户进一步互动。
...done thinking.
你好!😊 有什么我可以帮你的吗?
>>> Send a message (/? for help)
使用 API
curl -s http://localhost:11434/v1/completions -H "Content-Type: application/json" -d '{
"model": "qwen3:8b",
"prompt": "你好"
}' | json_pp
{
"choices" : [
{
"finish_reason" : "stop",
"index" : 0,
"text" : "<think>\n嗯,用户发来“你好”,我需要回应。首先,用户可能正在测试我是不是能正常响应,或者只是随便打个招呼。我应该用友好的语气回应,同时保持简洁。\n\n接下来,我要考虑用户可能的意图。他们可能想开始一段对话,或者只是随便聊聊。不管怎样,我应该主动提供帮助,比如询问有什么我可以协助的。\n\n另外,用户可能有不同的需求,比如需要信息、帮助解决问题,或者只是想找人聊天。所以回应要开放,让用户感到被欢迎和被重视。\n\n还要注意语气,保持自然和亲切。避免使用太正式的语言,让用户觉得轻松。比如用“你好!有什么我可以帮你的吗?”这样既友好又开放。\n\n最后,确认回应是否符合规范,没有使用任何markdown格式,保持口语化。检查是否有拼写错误,确保回复正确无误。\n</think>\n\n你好!有什么我可以帮你的吗? 😊"
}
],
"created" : 1752292111,
"id" : "cmpl-521",
"model" : "qwen3:8b",
"object" : "text_completion",
"system_fingerprint" : "fp_ollama",
"usage" : {
"completion_tokens" : 194,
"prompt_tokens" : 9,
"total_tokens" : 203
}
}