过去,在本地运行大语言模型,往往需要高功耗桌面 GPU,还得有足够耐心。而借助树莓派 5 与树莓派 AI HAT+ 2(Hailo-10H),这一门槛已大幅降低。你可以搭建一套紧凑、低功耗的系统,在桌面(或是像我一样放在电视柜上),就能完成大语言模型的本地推理。
本教程将详细介绍,如何基于 Ubuntu Server 24.04、树莓派 AI HAT+ 2、Hailo 兼容 Ollama 的运行时,以及 OpenWebUI,在树莓派 5 上搭建完整的本地 LLM 环境。最终你将得到一个开机自启的持久化系统服务,并可通过纯本地硬件驱动的网页聊天界面交互使用。
我们的目标不是对标数据中心 GPU,而是打造一个实用、私密、全天候在线、完全自主掌控的 AI 节点 —— 可集成到家庭自动化、开发工作流或离线实验中,无需依赖任何外部服务。
最终搭建的系统架构如下:
Browser↓OpenWebUI (systemd service, port 8080)↓hailo-ollama (systemd service, port 8000)↓/dev/hailo0↓Hailo-10H hardware accelerator
主要思路是保持堆栈原生且持久化:不使用Docker,重启后无需手动启动步骤,尽可能减少活动部件。
从“从头搭建”到“稳定运行”
最初的计划很直接:仅使用原生Linux组件,在配备Ubuntu和AI HAT+ 2的树莓派5上运行一个完全本地的大语言模型。
于是我和大多数人一样,从手动编译搭建开始。
这意味着要根据当前运行的内核编译 Hailo 内核驱动、构建运行时库,再逐层对接。理论上能获得最大控制权,但实际却陷入了无休止的维护循环:内核模块对细微变动极其敏感 —— 编译器版本、头文件不匹配、内核小版本更新,都会出问题。解决一个,又冒出下一个。即便设备能正常识别为/dev/hailo0,用户空间运行时也必须与硬件版本完全匹配。有些版本能检测到设备,却无法正常通信;还有些版本在 Ubuntu 上甚至没有打包。
此时,问题不再是“这能工作吗?”——显然可以。
问题是“这会持续工作吗?”
与其继续手动重建所有组件,我改用树莓派仓库里的 Hailo 驱动与运行时包。起初这感觉像是妥协,毕竟底层系统是 Ubuntu,但严格只调用 Hailo 相关组件后,再没出现过兼容性问题,效果立竿见影:
内核模块干净加载
运行时与硬件匹配
模型立即初始化
推理服务器在重启后保持稳定
从源码编译能获得控制权,但使用厂商维护的包能保证稳定性。对这个项目而言,稳定性更重要 —— 也正是这一点,让它从一次实验,变成了可靠、全天候在线的本地 AI 节点。
接下来,我们逐一介绍安装步骤。
注意!在撰写本文时,树莓派针对AI HAT+ 2的官方LLM搭建指南引用的是Hailo GenAI模型库包的5.1.1版本。我在这里也使用了相同版本,以与供应商文档保持一致。此外,5.2.0版本在官方仓库中尚不可用。
步骤1. 安装Hailo内核驱动
第一步安装内核级组件,让 Ubuntu 能正常与加速器通信。所需 Hailo 包可从树莓派软件源获取,先添加该软件源并设置优先级,仅从中安装 Hailo 相关包:
curl -fsSL https://archive.raspberrypi.com/debian/raspberrypi.gpg.key| sudo gpg --dearmor -o /usr/share/keyrings/raspberrypi-archive-keyring.gpgecho "deb [arch=arm64 signed-by=/usr/share/keyrings/raspberrypi-archive-keyring.gpg]http://archive.raspberrypi.com/debian trixie main"| sudo tee /etc/apt/sources.list.d/raspberrypi.list
然后创建一个APT固定文件,以防止Ubuntu开始偏好树莓派仓库中的不相关组件:
nano /etc/apt/preferences.d/raspberrypi-pinPackage: *Pin: origin archive.raspberrypi.comPin-Priority: 1Package: h10-hailort-pcie-driver hailort hailort-* libhailort* hailo*Pin: origin archive.raspberrypi.comPin-Priority: 1001
设置完成后,安装内核驱动和匹配的内核头文件:
sudo apt updatesudo apt install h10-hailort-pcie-driver linux-headers-$(uname -r)
要验证系统是否能识别该设备,请检查Hailo设备节点:
ls -l /dev/hailo*crw-rw-rw- 1 root root 234, 0 Feb 24 23:00 /dev/hailo0
如果/dev/hailo0存在,则内核设置正常。
步骤2. 安装Hailo运行时
驱动加载且设备暴露后,下一层是Hailo运行时本身。这使用户空间应用程序能够正确与加速器通信。安装Hailo-10H运行时:
sudo apt install h10-hailort
然后验证运行时能否与硬件通信:
hailortcli fw-control identify
输出应包含类似以下内容:
Firmware Version: 5.1.1Device Architecture: HAILO10H
这是一个重要检查点。此时,硬件不仅被Linux检测到——实际上还能通过运行时堆栈正确响应。
步骤3. 安装Hailo Ollama运行时
低层组件正常工作后,下一步是推理层。在此设置中,该角色由hailo-ollama承担,它提供了一个与Ollama兼容的API服务器。安装模型库包:
wget https://dev-public.hailo.ai/2025_12/Hailo10/hailo_gen_ai_model_zoo_5.1.1_arm64.debsudo dpkg -i hailo_gen_ai_model_zoo_*.deb
安装后,验证API是否响应:
curl http://localhost:8000/hailo/v1/list
如果一切正常,你应该会得到一个列出可用模型的JSON响应:
{"models":[...]}
此时,后端推理服务已启动并准备就绪。
步骤4. 安装并配置OpenWebUI
对于前端,我想要一个简单的网页界面,且不引入容器,因此直接将OpenWebUI安装到其自己的Python虚拟环境中。
首先,创建一个专用服务用户:
sudo useradd -r -m -d /opt/openwebui -s /usr/sbin/nologin openwebui
然后切换到该用户,并在虚拟环境中安装OpenWebUI:
sudo -u openwebui bashcd /opt/openwebuipython3 -m venv venvsource venv/bin/activatepip install open-webuiexit
将OpenWebUI置于其自己的系统用户下,可使设置更清晰,便于后续管理。
接下来,为OpenWebUI创建一个小型环境文件:
nano /opt/openwebui/envOLLAMA_BASE_URL=http://localhost:8000WEBUI_AUTH=False
这里重要的是OLLAMA_BASE_URL=http://localhost:8000,它将OpenWebUI指向本地的hailo-ollama服务。
步骤5. 为Hailo Ollama创建systemd服务
推理服务也需要自动启动,因此创建一个systemd单元:
nano /etc/systemd/system/hailo-ollama.service[Unit]Description=Hailo Ollama ServiceAfter=network.target[Service]Type=simpleExecStart=/usr/bin/hailo-ollama serveRestart=always[Install]WantedBy=multi-user.target
启用并启动它:
sudo systemctl daemon-reloadsudo systemctl enable hailo-ollamasudo systemctl start hailo-ollama
步骤6. 为OpenWebUI创建systemd服务
要使网页界面在重启后持久化,创建一个systemd服务:
nano /etc/systemd/system/openwebui.service[Unit]Description=OpenWebUI ServiceAfter=network.target hailo-ollama.serviceWants=hailo-ollama.service[Service]Type=simpleWorkingDirectory=/opt/openwebuiEnvironmentFile=/opt/openwebui/envExecStart=/opt/openwebui/venv/bin/open-webui serve --host 0.0.0.0 --port 8080Restart=alwaysRestartSec=3[Install]WantedBy=multi-user.target
然后重新加载systemd,启用服务并启动它:
sudo systemctl daemon-reloadsudo systemctl enable openwebuisudo systemctl start openwebui
启用两个服务后,系统在重启后会干净地恢复,并自动恢复完整的本地LLM堆栈。
步骤7. 访问网页界面
最后,一旦两个服务都在运行,打开浏览器并连接到:
http://<raspberry-pi-ip>:8080
如果后端可访问,模型应自动出现在OpenWebUI中,系统即可使用。
最终思考
树莓派 5 搭配 AI HAT+ 2,完全可以变身本地 LLM 设备,这一点本身就足够惊艳。但要实现这一目标,仍需要精细的集成调试,并非简单即插即用。整套环境稳定后,整洁、安静、自成一体,但性能依然有限,生成速度相对较慢,可用模型范围也较窄。所以别指望它能快速替代 ChatGPT。
更大的问题在于软件支持 —— 尤其是在树莓派官方系统之外。树莓派在 2026 年 1 月推出 AI HAT+ 2,但官方文档仍引用 GenAI 包 5.1.1 版本,而 Hailo 自身生态已面向 Hailo-10H 推出 5.2.0 支持。对一款主打树莓派本地 AI 的产品来说,这种滞后不容忽视,尤其是部分模型已被替换(最明显的是 Llama-3.2–3B-Instruct)。
https://community.hailo.ai/t/llama-3-2-3b-instruct-model/18866
这本身不会导致项目失败,但确实让平台显得不够成熟,也让购买决策更难权衡,除非你特别喜欢钻研折腾。
对热爱实验的爱好者来说,这套方案很有趣;但对期待开箱即用的本地 LLM 平台的用户而言,它目前还达不到预期。
官方网站:https://edatec.cn/zh/cm0
淘宝店铺:https://edatec.taobao.com/
226