3、Ollama环境搭建(Linux/ARM):在树莓派、Jetson Nano等ARM设备上安装Ollama
好,咱们直接进入正题。这一章聊的是ARM设备上装Ollama。说实话,我最早接触Ollama就是在Jetson Nano上跑的,那时候还没什么文档,踩了不少坑。今天我把这些经验整理出来,希望能帮你少走弯路。
3.1 为什么ARM设备值得折腾?
你可能会问:为什么非要在ARM上跑?直接在x86服务器上搞不香吗?
嗯,这里有个关键点——边缘计算。树莓派、Jetson Nano这些设备功耗低、体积小,适合部署在工厂、农场、甚至无人机上。我有个项目就是在农业大棚里用树莓派跑轻量模型,实时监测作物病害。说白了,ARM设备就是边缘侧的“轻骑兵”。
核心观点:Ollama在ARM上跑,不是为了追求算力,而是为了在有限资源下实现本地推理。数据不出设备,延迟低,隐私好。
3.2 依赖检查:别急着装,先看看环境
我个人习惯,装任何软件前先做依赖检查。ARM设备资源有限,漏掉一个依赖可能折腾半天。
3.2.1 系统要求
- 操作系统:Ubuntu 20.04/22.04 (ARM64) 或 Raspberry Pi OS (64-bit)
- 架构:aarch64 (ARMv8) 或 armv7l (树莓派3B+及以下)
- 内存:至少4GB(推荐8GB以上,跑7B模型勉强够)
- 存储:至少10GB空闲空间(模型文件占大头)
注意:树莓派4B只有4GB内存,跑7B模型会非常吃力。我建议用Jetson Nano(8GB版本)或者树莓派5(8GB)。曾经有个学员用树莓派3B跑Ollama,加载模型直接OOM,最后换了设备才搞定。
3.2.2 检查命令
先跑一遍这些命令,确认环境没问题:
# 查看架构
uname -m
# 输出应为 aarch64 或 armv7l
# 查看内存
free -h
# 重点关注 available 列
# 查看磁盘
df -h
# 确保 / 分区有足够空间
# 查看glibc版本(Ollama需要glibc 2.28+)
ldd --version | head -n1
# 输出类似:ldd (Ubuntu GLIBC 2.31-0ubuntu9.16) 2.31
如果glibc版本太低,建议升级系统或者换一个发行版。我记得有一次在旧版Debian上折腾,glibc不满足,最后只能源码编译,那叫一个痛苦。
3.3 安装方式对比:二进制安装 vs 源码编译
Ollama官方提供了两种安装方式。我两种都试过,下面给你做个对比。
| 对比项 | 二进制安装 | 源码编译 |
|---|---|---|
| 安装速度 | 快(几分钟) | 慢(30分钟-2小时) |
| 依赖管理 | 自动处理 | 手动安装(Go、gcc等) |
| 性能优化 | 通用优化 | 可针对ARM指令集优化 |
| 稳定性 | 高(官方测试过) | 中等(取决于编译环境) |
| 适用场景 | 大多数用户 | 需要定制优化或官方未提供二进制 |
我的建议:除非你有特殊需求(比如要启用NEON指令集优化),否则直接用二进制安装。省时省力,还不容易出问题。
3.4 二进制安装(推荐)
Ollama官方提供了ARM64的二进制包。安装过程非常简单:
# 一键安装脚本
curl -fsSL https://ollama.com/install.sh | sh
这个脚本会自动检测架构,下载对应的二进制文件。我在Jetson Nano上跑过,大概3分钟就装好了。
如果网络不好,也可以手动下载:
# 下载ARM64版本
wget https://ollama.com/download/ollama-linux-arm64
# 赋予执行权限
chmod +x ollama-linux-arm64
# 移动到系统路径
sudo mv ollama-linux-arm64 /usr/local/bin/ollama
验证安装:
ollama --version
# 输出类似:ollama version 0.1.39
3.5 源码编译(进阶玩法)
如果你喜欢折腾,或者想针对特定ARM芯片做优化,可以试试源码编译。说实话,我一般只在需要调试底层代码时才用这种方式。
3.5.1 安装依赖
# 安装Go(Ollama用Go写的)
sudo apt update
sudo apt install golang-go gcc git
# 验证Go版本(需要1.21+)
go version
3.5.2 编译步骤
# 克隆源码
git clone https://github.com/ollama/ollama.git
cd ollama
# 编译(这个过程比较慢,Jetson Nano上大概40分钟)
go generate ./...
go build .
# 安装到系统
sudo cp ollama /usr/local/bin/
避坑指南:我曾经在树莓派4B上编译,结果内存不够,编译到一半就挂了。后来加了swap分区才搞定。如果你内存小于8GB,建议先创建swap:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
3.6 启动与验证
装好之后,启动Ollama服务:
# 启动服务(后台运行)
ollama serve &
# 或者用systemd管理(推荐)
sudo systemctl start ollama
sudo systemctl enable ollama
然后拉取一个小模型测试:
# 拉取tinyllama(1.1B参数,ARM设备友好)
ollama pull tinyllama
# 运行测试
ollama run tinyllama "Hello, what is edge computing?"
如果能看到模型正常回复,说明环境搭建成功。我第一次在Jetson Nano上看到模型输出时,还挺激动的——毕竟是在一个巴掌大的设备上跑LLM。
3.7 性能调优小贴士
ARM设备资源有限,这里分享几个我常用的优化技巧:
- 限制CPU核心数:用
OLLAMA_NUM_THREADS环境变量控制,比如export OLLAMA_NUM_THREADS=4,避免吃满所有核心导致系统卡顿。 - 调整模型加载参数:在
Modelfile中设置num_ctx(上下文长度),默认2048,可以降到1024以节省内存。 - 使用量化模型:比如
tinyllama:q4_K_M,4bit量化后模型体积缩小4倍,推理速度也更快。
个人经验:在Jetson Nano上,我一般用phi:q4_K_M(2.7B参数,4bit量化),推理速度大概每秒10-15个token,基本够用。树莓派5的话,建议用tinyllama:q4_K_M,速度会更快一些。
3.8 本章小结
ARM设备上装Ollama,说白了就是三步:检查依赖、选择安装方式、启动验证。二进制安装省心,源码编译适合进阶玩家。我个人建议先用二进制装起来,跑通了再考虑优化。
嗯,这一章就到这里。记住,边缘计算的核心是“在有限资源下做最有效的事”。Ollama在ARM上跑,不是为了追求极致性能,而是让AI真正落地到生产环境中。
公众号:蓝海资料掘金营,微信deep3321