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真正落地到生产环境中。

Ollama ARM环境搭建流程 1. 依赖检查 架构/内存/磁盘/glibc 2. 选择安装方式 二进制 vs 源码编译 3. 安装与验证 启动服务/拉取模型 安装方式对比 二进制安装 快速稳定,推荐 源码编译 定制优化,进阶 性能优化建议 限制CPU核心 → 调整上下文长度 → 使用量化模型

公众号:蓝海资料掘金营,微信deep3321