利用 Ollama 在 Raspberry Pi 上托管大语言模型和视觉语言模型 — 来源:作者
你有没有想过在自己的设备上运行大型语言模型(LLM)或视觉语言模型(VLM)?你可能也考虑过,但从头开始搭建环境、下载合适的模型权重以及设备是否能承受这些模型的担忧,这些因素可能让你犹豫起来。
让我们更进一步来想想。想象一下在不超过信用卡大小的设备上运行自己的LLM或VLM——一个这样的Raspberry Pi。不可能吗?这并不是不可能的。毕竟,我正在写这篇帖子,说明这是完全可能的吧?在这里,“LLM”和“VLM”保留英文原词以保持一致性。
可能,但你为什么要这么做?目前,边缘设备上的大语言模型似乎有点离谱。但这种特定用例应该会逐渐成熟,我们肯定会看到一些很酷的边缘解决方案被部署,采用完全本地化的生成式AI模型进行设备端运行。
这也涉及到挑战极限,看看能做到什么。如果能够在计算规模的这一极端做到,那么在任何介于树莓派和强大服务器显卡之间的层级也是可以做到的。
一直以来,边缘AI与计算机视觉密不可分。探索如何在边缘部署大型语言模型(如LLM)和视觉语言模型(如VLM),为这一新兴领域带来了令人兴奋的可能性。
最主要是用我新买的 Raspberry Pi 5 玩得开心。
那么,我们如何在树莓派上做到这一切?使用Ollama!
Ollama是什么?Ollama 已成为在个人电脑上运行本地 LLM 的最佳解决方案之一,无需从零开始设置。只需几个命令即可轻松搞定,毫无问题。在我的使用经历中,它在多种设备和模型上运行得都很棒。它甚至开放了一个 REST API 用于模型推理,所以你可以在 Raspberry Pi 上运行它,并从其他应用程序和设备中调用它。
也有Ollama Web UI,这是一款非常漂亮的AI用户界面/体验,与Ollama无缝运行。对于那些不太愿意使用命令行界面的人来说,它非常有用。可以说,它就是一个本地的ChatGPT界面。
这两个开源软件一起提供了我认为目前是本地托管的LLM的最佳体验。
Ollama和Ollama Web UI也支持视觉语言模型(如LLaVA),这为这个边缘生成式AI用例打开了更多的门。
技术需求你需要的就只是以下这些:
- Raspberry Pi 5(或选择 Raspberry Pi 4 以获得较慢的设置)— 建议使用 8GB 内存版本以适合运行 7B 模型。
- SD 卡 — 至少 16GB,容量越大,能装的模型越多。请预装合适的操作系统,例如 Raspbian Bookworm 或 Ubuntu
- 稳定的互联网连接
就像我之前提到的,运行Ollama在树莓派上已经接近硬件性能的极限。从理论上讲,任何比树莓派更强大的设备,如果运行Linux发行版并具有相似内存,应该都可以运行Ollama及其在本文中讨论的模型。
1. 安装Ollama插件要在树莓派上安装Ollama,我们就不用Docker了,这样可以省资源。
在终端里输入并运行命令
curl https://ollama.ai/install.sh | sh
注:此命令用于从ollama.ai下载并安装脚本。
你应该在运行上述命令后看到下面这样的图。
来源:作者(原文)。
如输出所示,访问 0.0.0.0:11434 来检查 Ollama 是否在运行。因为我们用的是 Raspberry Pi,看到“警告:未检测到 NVIDIA GPU。Ollama 将以纯 CPU 模式运行。”这种情况是正常的。但是,如果你在应该有 NVIDIA GPU 的设备上看到这些说明,那说明某些地方出了问题。
如有任何问题或更新,请查看Ollama GitHub。
2. 在命令行中运行LLM可以看看官方 Ollama 模型库里的模型列表,这些模型都可以用 Ollama 来运行。超过 70 亿参数的模型无法运行在 8GB 内存的 Raspberry Pi 上。我们来用 Phi-2 吧,这是微软的一个 MIT 许可下的 2.7B 参数的大型语言模型。
我们将使用默认的Phi-2模型,但请随意使用在这里找到的其他标签。查看Phi-2模型页面以了解如何与其互动,。
你可以运行这个命令或这个程序,在终端里。
ollama run phi
(技术命令)
一旦你看到类似以下的显示输出,你就已经在 Raspberry Pi 上运行了一个大型语言模型。这就完了。
来源:原文作者
这里有一个与Phi-2 2.7B的互动。显然,你不会得到同样的结果,不过大致意思你应该能猜到。 | 来源
你可以试试其他模型,比如Mistral、Llama-2等,确保SD卡上有足够的空间存放模型权重。
当然,模型越大,输出速度就越慢。在使用Phi-2 2.7B模型时,每秒可以生成大约4个token。而使用Mistral 7B时,生成速度则会降低到每秒大约2个token。一个token大致等同于一个词。
这里有一个与Mistral 7B的互动 | 来源:作者
我们现在有了在 Raspberry Pi 上运行的 LLM,但还没完呢。不是每个人都能用好终端。我们也来运行一下 Ollama Web UI 吧!
3. 安装并运行Ollama Web UI:我们将从现在开始按照官方Ollama Web UI GitHub仓库中的说明进行安装,但不用Docker。它建议Node.js版本至少为20.10,所以我们也将遵循这个建议。它还建议Python版本至少为3.11,不过Raspbian操作系统已经为我们安装了Python 3.11。
我们得先安装Node.js,在终端中运行这个命令。
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\
sudo apt-get install -y nodejs
通过执行此命令来安装 Node.js
如有必要,将 20.x 更改为更适合的版本,以便未来读者。
接着,运行下面的代码段。
git clone https://github.com/ollama-webui/ollama-webui.git
cd ollama-webui/
# 复制示例 .env 文件(强制覆盖权限和时间戳)
cp -RPp example.env .env
# 使用 Node 构建前端
npm i
npm run build
# 切换到后端目录并安装依赖项
cd ./backend
pip install -r requirements.txt --break-system-packages
# 运行启动脚本
sh start.sh
这在GitHub上提供的内容基础上做了一些小改动。为了简单和直接,我们省略了一些最佳实践,例如使用虚拟环境,并使用了破坏系统包的标志。如果你遇到了类似找不到uvicorn这样的问题,请重启终端。
如果一切正常,您应该能够在树莓派上通过http://0.0.0.0:8080访问Ollama Web UI,或者通过http://<树莓派本地地址>:8080/从同一网络中的其他设备访问它。
如果你看到这个,没错,这就对了 | 来源:作者
创建账户并登录之后,你应该会看到类似下面的图片。
来源:作者
如果你之前下载了一些模型权重,建议你在下拉菜单中查找它们,如下所示。如果没有找到,你可以去设置里下载模型。
这里将显示可用的模型 | 来源:作者提供
如果你想下载新模型,在设置 > 模型 中下载模型 | 来源:作者说明
整个界面干净直观,这里不多赘述。这确实是一个做得非常好的真正意义上的开源项目。
这里有个与Mistral 7B的交互,通过Ollama Web UI | 来源:作者提供
4. 通过 Ollama Web UI 运行 VLMs就像我在本文开头提到的,我们也可以运行视觉语言模型(VLMs)。我们来运行一下LLaVA吧,这是一个流行的开源VLM,并且也得到了Ollama的支持。要做到这点,通过界面拉取‘llava’以下载权重。
遗憾的是,与大型语言模型不同,在树莓派上解释图像需要相当长的时间。下面的例子大约花了6分钟才处理完。大部分时间可能是由于图像处理尚未完全优化,但这种情况将来一定会有所改善。令牌生成速度大约为每秒2个令牌。
图片来源:Pexels
总之。目前,我们已经完成了本文的主要目标。简而言之,我们已经在Raspberry Pi上利用Ollama及其Web界面运行了LLM和VLM,诸如Phi-2、Mistral和LLaVA。
我可以想到很多在树莓派(或其他小型边缘设备)上本地部署的LLM的用例,特别是假设我们使用的是类似Phi-2大小的模型,每秒4个token的流式传输速度是可以接受的这样的情况。
“小”LLM和VLM领域,虽然名字听起来有些自相矛盾,因为它们实际上规模很大,但这是一个活跃的研究领域,最近发布了多个模型。希望这一新兴趋势能继续下去,更多的高效且精简的模型能够不断发布!这在未来几个月里绝对是一个值得关注的领域。
声明一下:我与Ollama或Ollama Web UI没有关系。所有观点和意见均为个人,不代表任何单位。
共同學習,寫下你的評論
評論加載中...
作者其他優質文章