骁龙X2 Elite平台AI实战(1): 搭建本地AI编程助手
前言
最近入手了一台搭载骁龙 X2 Elite (X2E-96-100) 的轻薄本,18 核 Oryon CPU + 85 TOPS Hexagon NPU,这配置不拿来跑本地 AI 简直是浪费。之前已经写过 X2 Elite 的架构解析和 边缘AI应用开发,这次打算系统性地从零开始,手把手带你在这台 ARM64 笔记本上搭建一套完整的本地 AI 开发环境。
整篇分三个部分,包括:
- 第一部分:WSL2 安装 + Ubuntu ARM64 基础环境配置
- 第二部分:Ollama 本地大模型部署与性能实测
- 第三部分:Open WebUI + Continue.dev 打造本地 AI 编程助手
不管你是刚拿到 X2 Elite 新机,还是已经用了一阵子但没折腾过开发环境,跟着走就完事了。
第一部分:WSL2 安装与 Ubuntu ARM64 基础环境配置
一. 为什么用 WSL2 而不是直接装 Linux?
骁龙 X2 Elite 跑的是 Windows 11 ARM64 原生系统。你可以选择直接在 Windows 上装工具链,但我个人强烈建议走 WSL2 路线,原因有三:
- Linux 生态对 AI 工具链的支持远比 Windows ARM64 完善。Ollama、Python 依赖、各种推理框架在 Linux ARM64 上都能原生编译运行。
- WSL2 的性能损耗几乎可以忽略。微软和高通在 ARM64 架构上对 WSL2 做了深度优化,CPU 和内存性能跟原生 Linux 差距在 5% 以内。
- 环境隔离。WSL2 里随便折腾,搞崩了重装也就几分钟的事,不污染宿主机。
二. 前置检查
在动手之前,先把几个前置条件确认好。
2.1 确认 Windows 版本
打开 PowerShell,执行:
winver
确保你的 Windows 版本是 Windows 11 24H2 或更高。X2 Elite 对老版本 Windows 的支持不完整,尤其是 NPU 驱动需要 24H2 才能正常工作。
2.2 确认 ARM64 架构
echo $env:PROCESSOR_ARCHITECTURE
输出应该是 ARM64。
三. 安装 WSL2
3.1 启用 WSL 功能
以管理员身份打开 PowerShell,执行下面两条命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
执行完必须重启电脑,别偷懒跳过。
3.2 安装 WSL2 内核更新包
从微软官方下载 ARM64 版本的 WSL2 内核更新包:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi
下载后双击安装,一路下一步就行。
3.3 将 WSL2 设为默认版本
重启后打开 PowerShell:
wsl --set-default-version 2
这条命令把 WSL2 设为默认版本,后续安装的所有发行版都会自动走 WSL2。
3.4 安装 Ubuntu ARM64
wsl --install -d Ubuntu-24.04
等它下载安装完,会弹出 Ubuntu 终端窗口让你创建用户名和密码。这里建议用户名用小写英文,密码别太简单。
安装完成后验证一下:
wsl -l -v
输出应该显示 Ubuntu-24.04 的 VERSION 是 2。
四. Ubuntu ARM64 基础环境配置
4.1 换国内镜像源
默认的 Ubuntu 源在国外,从国内下载慢得让人想砸电脑。进 WSL2 的 Ubuntu 终端,先备份再换源:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/ports.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
这里用了清华源,你也可以换成阿里云 mirrors.aliyun.com 或者中科大 mirrors.ustc.edu.cn。
4.2 更新系统
sudo apt update && sudo apt upgrade -y
这一步取决于你的网速,一般 3-5 分钟搞定。更新完顺手装一些必备工具:
sudo apt install -y build-essential cmake git curl wget vim net-tools
4.3 配置 Git
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
4.4 安装 Python 3.12 和虚拟环境
Ubuntu 24.04 自带了 Python 3.12,但缺一些开发用的头文件:
sudo apt install -y python3 python3-pip python3-venv python3-dev
验证一下版本:
python3 --version
输出 Python 3.12.x 就对了。
4.5 配置 pip 国内镜像
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << 'EOF'
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
EOF
4.6 安装 VS Code 远程开发支持
回到 Windows 的 PowerShell,装 VS Code(如果还没装的话)。X2 Elite 上 VS Code 有原生 ARM64 版本,直接在官网下载 ARM64 安装包即可。
然后在 WSL2 的 Ubuntu 终端里执行:
code .
这句会自动安装 VS Code Server 到 WSL2 里,之后你就可以在 Windows 的 VS Code 里直接操作 WSL2 里的文件了。
4.7 验证 ARM64 环境
在 WSL2 终端里跑:
uname -m
输出 aarch64,说明 Linux 内核也是 ARM64 的。再跑:
lscpu
你会看到 18 个 CPU 核心,这就是 X2 Elite 的那 18 核 Oryon——12 个性能核 + 6 个能效核。
到这里,WSL2 + Ubuntu ARM64 的基础环境就搭好了。回顾一下我们完成了哪些事:
- 在 X2 Elite 的 Windows 11 ARM64 上启用了 WSL2
- 安装了 Ubuntu 24.04 ARM64
- 配置了国内镜像源
- 装好了 Python、Git 等基础开发工具
- 打通了 VS Code 远程开发
第二部分:Ollama 本地大模型部署与性能实测
上一部分我们把 WSL2 + Ubuntu ARM64 的基础环境搭好了,这里就开始进入正题——在 X2 Elite 上跑本地大模型。
选型上,我直接用 Ollama。原因很简单:Ollama 对 ARM64 支持非常好,安装一条命令搞定,模型管理傻瓜化,还提供了 REST API 方便后续对接。对比 vLLM 和 llama.cpp 裸跑,Ollama 在易用性上吊打。
另外,很多人以为 ARM64 平台上跑大模型会很折腾,实际情况比想象中好得多——Ollama 官方已经提供了 ARM64 的原生二进制,主流开源模型(Qwen2.5、Llama 3.2、DeepSeek-R1 等)都有 ARM64 兼容的 GGUF 量化版本。
一. Ollama 安装
1.1 一条命令安装
进 WSL2 的 Ubuntu 终端:
curl -fsSL https://ollama.com/install.sh | sh
1.2 验证安装
ollama --version
输出类似 ollama version is 0.11.x 就说明装好了。
1.3 启动 Ollama 服务
Ollama 安装后默认不会自动启动服务,需要手动拉起:
ollama serve
这个命令会在前台运行 Ollama 服务,占用 11434 端口。如果你想让它在后台跑:
nohup ollama serve > /tmp/ollama.log 2>&1 &
建议先在前台跑着,方便观察日志。
二. 模型选择与拉取
2.1 模型推荐
X2 Elite 的内存一般是 16GB 或 32GB LPDDR5x,这意味着我们不能跑太大的模型。经过实测,以下模型在这台机器上表现最佳:
| 模型 | 参数量 | 量化 | 内存占用 | 推理速度 |
|---|---|---|---|---|
| Qwen2.5 | 7B | Q4_K_M | ~4.5GB | 18-22 tok/s |
| Llama 3.2 | 3B | Q4_K_M | ~2.2GB | 35-40 tok/s |
| DeepSeek-R1-Distill-Qwen | 7B | Q4_K_M | ~4.7GB | 16-20 tok/s |
| Qwen2.5-Coder | 7B | Q4_K_M | ~4.5GB | 18-22 tok/s |
重点推荐 Qwen2.5:7B 和 Qwen2.5-Coder:7B。Qwen 系列在 ARM64 上的兼容性是最好的,而且中文能力强,写代码也靠谱。Llama 3.2:3B 胜在速度快,适合做实时对话。
2.2 拉取模型
ollama pull qwen2.5:7b
ollama pull qwen2.5-coder:7b
ollama pull llama3.2:3b
每个模型大概 4-5GB,三个模型总共约 13GB。网速快的话 15 分钟内搞定。
2.3 查看已安装模型
ollama list
输出你会看到已拉取的模型列表和大小。
三. 运行模型与实测
3.1 交互式对话
最基础的用法:
ollama run qwen2.5:7b
进去后直接打字聊天。试几个典型问题:
>>> 用 Python 写一个快速排序算法
>>> 解释一下 Transformer 的注意力机制
>>> 帮我写一段 C++ 的智能指针使用示例
回答质量日常辅助编码和知识问答完全够用。
3.2 实测性能数据
我在这台 X2E-96-100(32GB 内存版本)上做了完整的性能测试,数据如下:
Qwen2.5:7B (Q4_K_M)
- 首 token 延迟:0.8s
- 生成速度:18-22 tokens/s
- 内存占用:4.5GB
- CPU 占用:85%-95%(全核负载)
- 温度:68℃(持续推理 30 分钟后)
Qwen2.5-Coder:7B (Q4_K_M)
- 首 token 延迟:0.9s
- 生成速度:17-20 tokens/s
- 内存占用:4.5GB
- 代码补全场景下表现优秀,上下文理解准确
Llama 3.2:3B (Q4_K_M)
- 首 token 延迟:0.3s
- 生成速度:35-40 tokens/s
- 内存占用:2.2GB
- 速度快但中文能力弱于 Qwen
说实话,18-22 tok/s 的速度已经超过大多数人的阅读速度了,日常使用完全不会觉得卡,而且这是完全离线的——没网也能用,数据不出本地。
3.3 关于 NPU 加速
很多人问:X2 Elite 的 Hexagon NPU 有 85 TOPS 算力,Ollama 能不能用上?
目前的实际情况是:不能。
Ollama 底层用的是 llama.cpp,llama.cpp 目前的推理主要跑在 CPU 上(ARM NEON 指令集加速)。Hexagon NPU 需要模型通过 QNN(Qualcomm Neural Network)工具链转换后才能运行,而 llama.cpp 还没有支持 QNN 后端。
但这不意味着 NPU 在这台机器上是摆设。往下看我们讲 Continue.dev 的时候,我会提到怎么利用 NPU 跑 embedding 模型和代码补全的小模型,这些场景下 NPU 的优势很明显。
四. Ollama REST API 使用
Ollama 自带 REST API,这对后续对接 Open WebUI 和 Continue.dev 至关重要。
4.1 测试 API
curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5:7b",
"prompt": "用一句话介绍高通骁龙X2 Elite",
"stream": false
}'
返回的 JSON 里 response 字段就是模型输出。
4.2 列出模型
curl http://localhost:11434/api/tags
4.3 Python 调用示例
装一下 ollama 的 Python 库:
pip install ollama
写个简单的 Python 脚本测试:
import ollama
response = ollama.chat(
model="qwen2.5:7b",
messages=[
{"role": "user", "content": "你好,介绍一下你自己"}
]
)
print(response["message"]["content"])
跑一下看看,如果正常返回就说明整个链路通了。
五. 设置 Ollama 开机自启
每次手动 ollama serve 太麻烦,配一个 systemd 服务让它开机自动跑:
sudo useradd -r -s /bin/false ollama
sudo tee /etc/systemd/system/ollama.service > /dev/null << 'EOF'
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=0.0.0.0"
[Install]
WantedBy=default.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
注意 OLLAMA_HOST=0.0.0.0 这行,这让 Ollama 监听所有网络接口。如果你只在 WSL2 内部使用可以去掉,但如果想让 Windows 宿主机也能访问(后面 Open WebUI 需要),就必须加上。
验证服务状态:
sudo systemctl status ollama
看到 active (running) 就 OK 了。
X2 Elite 跑 7B 模型 18-22 tok/s,这个速度超出了我的预期。CPU 全核跑满的情况下,温度控制得不错,持续推理半小时也就 68℃。
第三部分:Open WebUI + Continue.dev 打造本地 AI 编程助手
这是本文重点:把本地模型变成一个真正好用的 AI 助手。
具体做两件事:
- Open WebUI:给 Ollama 套一个 ChatGPT 同款界面,让你在浏览器里跟本地模型聊天,支持多轮对话、文档上传、Markdown 渲染。
- Continue.dev:VS Code 里的 AI 编程助手插件,对接本地 Ollama,实现 Tab 补全、代码解释、重构等功能。相当于你自己部署了一个 GitHub Copilot,但完全离线、免费。
这两个工具的 ARM64 兼容性都经过了验证,在 X2 Elite 上跑没有任何问题。
一. Open WebUI 部署
1.1 为什么选 Open WebUI
市面上给 Ollama 做前端的工具不少,但 Open WebUI 是综合体验最好的:
- 界面跟 ChatGPT 几乎一模一样,学习成本为零
- 原生支持 Ollama,不需要额外配置
- 支持多模型切换、对话历史管理、文档上传(RAG)
1.2 安装 Docker
WSL2 的 Ubuntu 里装 Docker:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
第二条命令把你的用户加到 docker 组里,执行完需要退出 WSL2 再重新进来才能生效:
exit
wsl
验证:
docker --version
docker run hello-world
hello-world 正常跑完说明 Docker 没毛病。
1.3 部署 Open WebUI
一条命令:
docker run -d \
--name open-webui \
--restart always \
-p 3000:8080 \
-v open-webui:/app/backend/data \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
ghcr.io/open-webui/open-webui:main
参数解释:
-d:后台运行--name open-webui:容器名称--restart always:Docker 启动时自动重启-p 3000:8080:把容器的 8080 端口映射到宿主机的 3000 端口-v open-webui:/app/backend/data:持久化对话数据-e OLLAMA_BASE_URL=http://host.docker.internal:11434:指向宿主机上的 Ollama 服务
1.4 访问 Open WebUI
在 Windows 浏览器里打开:
http://localhost:3000
第一次打开会让你注册一个管理员账号。
这个账号数据存在本地 Docker 卷里,不存在云端,随便填。
进去后在左上角选择模型,你应该能看到之前 Ollama 里下载的 qwen2.5:7b、qwen2.5-coder:7b、llama3.2:3b。
1.5 测试对话
选 Qwen2.5:7B,试几个问题:
- “解释一下 Rust 的所有权机制”
- “帮我写一个 Python Flask 的 Hello World”
- “把下面这段代码翻译成 C++:[粘贴一段 Python 代码]”
响应速度跟直接在终端里跑 Ollama 一致,18-22 tok/s,体验流畅。
二. Continue.dev 配置
Continue.dev 是目前最流行的开源 AI 编程助手,能直接对接本地 Ollama。装上它,你的 VS Code 就有了一个完全离线的 AI 编程伙伴。
2.1 安装 Continue 插件
在 VS Code 扩展商店搜索 Continue,安装即可。
X2 Elite 上 VS Code 是原生 ARM64 版本,Continue 插件完全兼容。
2.2 配置 Continue 对接 Ollama
安装完成后,VS Code 左侧会出现 Continue 的图标,点击后在右侧面板打开。也可以按 Ctrl+I 快速呼出聊天面板,Ctrl+L 呼出内联编辑。
点击 Continue 面板右下角的设置齿轮,或者直接编辑配置文件。Continue 的配置文件在:
- Windows:
%USERPROFILE%\.continue\config.json - 也可以在 Continue 面板里通过 UI 配置
配置内容如下:
{
"models": [
{
"title": "Qwen2.5-Coder",
"provider": "ollama",
"model": "qwen2.5-coder:7b",
"apiBase": "http://localhost:11434"
}
],
"tabAutocompleteModel": {
"title": "Llama 3.2 3B",
"provider": "ollama",
"model": "llama3.2:3b",
"apiBase": "http://localhost:11434"
},
"embeddingsProvider": {
"provider": "ollama",
"model": "nomic-embed-text",
"apiBase": "http://localhost:11434"
},
"systemMessage": "你是一个专业的编程助手。回答要简洁准确,代码示例要完整可运行。"
}
注意几个要点:
tabAutocompleteModel用了 Llama 3.2 3B,因为它推理速度最快(35-40 tok/s),Tab 补全对延迟非常敏感,不能用 7B 模型。embeddingsProvider需要额外下载 nomic-embed-text 模型:
ollama pull nomic-embed-text
2.3 Continue 功能实测
2.3.1 Tab 自动补全
打开一个 Python 文件,正常写代码。当你输入到一个可以推断后续的位置时,Continue 会弹出灰色的补全建议,按 Tab 接受。
实测效果:写简单函数体、for 循环、列表推导式时命中率很高。复杂业务逻辑的补全质量不如大模型,但毕竟是 3B 的小模型,在离线环境下足够使用了。
2.3.2 对话式辅助 (Ctrl+I)
选中一段代码,按 Ctrl+I,输入:
给这段代码添加详细的类型注解和 docstring
Continue 会把 Qwen2.5-Coder:7B 的回复直接插入到编辑器里。你也可以在右侧面板自由聊天。
2.3.3 代码解释 (Ctrl+L)
选中一段代码,按 Ctrl+L,Continue 会在聊天面板里解释这段代码。适合阅读别人的代码或者回顾自己之前写的复杂逻辑。
2.3.4 @符号上下文
Continue 支持 @符号引用上下文,例如:
@file app.py— 引用当前项目的某个文件@folder src/— 引用整个文件夹@url https://...— 引用网页文档@terminal— 引用最近的终端输出
这个功能在调试的时候特别实用,直接把终端报错喂给模型:
@terminal 这个报错怎么解决?
三. 全链路验证
走到这里,整套系统就搭完了。做一个完整的端到端测试:
场景:用 Python 写一个文件批量重命名工具
- 在 VS Code 里新建
rename_tool.py - 写注释描述需求:
# 批量重命名工具:遍历指定目录,将所有 .jpg 文件按 "IMG_0001.jpg" 格式重命名 - Continue 的 Tab 补全开始给出代码建议,逐段接受
- 遇到不确定的地方,按
Ctrl+I选中代码块,问 “这段代码有没有边界条件没处理?” - Continue 指出文件名冲突的情况没处理,给出改进建议
- 最终在终端运行,有报错的话
@terminal粘贴给 Continue 分析
整个流程下来,除了思路是我自己的,代码编写和调试的效率提升了至少 50%。关键是全程离线,代码不会上传到任何云端服务器。
最终总结
全篇内容整合下来,我们在骁龙 X2 Elite 上搭好了一套完整的本地 AI 开发环境:
| 组件 | 作用 | 部署位置 |
|---|---|---|
| WSL2 + Ubuntu 24.04 | 基础运行环境 | Windows 宿主机 |
| Ollama | 本地大模型推理引擎 | WSL2 Ubuntu |
| Open WebUI | 类 ChatGPT 交互界面 | Docker (WSL2) |
| Continue.dev | VS Code AI 编程助手 | VS Code 插件 |
关键性能指标总结:
- Qwen2.5:7B 推理速度:18-22 tok/s
- Qwen2.5-Coder:7B 代码生成:17-20 tok/s
- Llama 3.2:3B Tab 补全延迟:< 500ms
- 全系统内存占用:~12GB(含三个模型)
- 完全离线运行,零网络依赖
X2 Elite 作为一台 ARM64 笔记本,18 核 Oryon CPU 全核跑推理半小时,68℃ 的温度控制和 18-22 tok/s 的速度,在本地 AI 场景下的表现相当不错。
后面如果有时间,还可以尝试在 X2 Elite 上用 QNN 工具链把模型转换到 NPU 上跑推理——那才是真正把 85 TOPS 算力用起来。
本系列所有操作均基于:
- 骁龙 X2 Elite (X2E-96-100)
- 32GB / Windows 11 24H2
- WSL2 / Ubuntu 24.04 ARM64
其他 X2 Elite SKU 型号步骤通用。
更多推荐
所有评论(0)