当前位置: 首页 > article >正文

在树莓派上运行本地 LLM 和 VLM

原文towardsdatascience.com/running-local-llms-and-vlms-on-the-raspberry-pi-57bd0059c41a?sourcecollection_archive---------0-----------------------#2024-01-14在树莓派上使用 Ollama 本地运行 Phi-2、Mistral 和 LLaVA 等模型https://medium.com/pyesonekyaw?sourcepost_page---byline--57bd0059c41a--------------------------------https://towardsdatascience.com/?sourcepost_page---byline--57bd0059c41a-------------------------------- Pye Sone Kyaw·发布于 Towards Data Science ·阅读时长 7 分钟·2024 年 1 月 14 日–https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b138fcad68e649f781cde62d61d153ab.png使用 Ollama 在树莓派上托管 LLM 和 VLM — 来源作者有没有想过在自己的设备上运行自己的大语言模型LLM或视觉语言模型VLM你可能有过这样的想法但从零开始设置环境、下载合适的模型权重、以及设备是否能承载模型的疑虑可能让你有些犹豫。让我们再进一步。想象一下在一个不大于信用卡大小的设备上操作你自己的 LLM 或 VLM——一台树莓派。难以想象一点也不。我是在写这篇文章所以它绝对是可能的。可能没错。但你为什么要这么做呢目前边缘的 LLM 似乎有些不可思议。但这个特定的小众用例应该随着时间的推移而成熟我们肯定会看到一些很酷的边缘解决方案通过全本地生成式 AI 解决方案在设备端部署。这也是关于突破极限看看什么是可能的。如果在计算能力的极端范围内可以做到那在树莓派和强大服务器 GPU 之间的任何级别上都可以做到。传统上边缘 AI 与计算机视觉密切相关。探索在边缘部署 LLM 和 VLM 为这一新兴领域增添了令人兴奋的维度。最重要的是我只是想用我最近购买的树莓派 5 做些有趣的事情。那么我们如何在树莓派上实现这一切呢使用 Ollama什么是 OllamaOllama已经成为在个人计算机上运行本地 LLM 的最佳解决方案之一无需从头开始设置麻烦。只需几个命令所有内容都能顺利设置。根据我的经验它在多个设备和模型上都能完美运行且一切都是自包含的。它甚至暴露了一个用于模型推理的 REST API因此如果需要你可以让它在树莓派上运行并从其他应用程序和设备调用它。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/25665bd9949055ec8e2ed0a29e83ea4c.pngOllama 官网还有Ollama Web UI这是一款与 Ollama 完美兼容的美丽 AI UI/UX 界面适合那些对命令行界面感到不安的人。可以将其视为一个本地的 ChatGPT 界面。这两个开源软件共同提供了我认为是目前最好的本地托管 LLM 体验。Ollama 和 Ollama Web UI 也支持像 LLaVA 这样的 VLM这为这种边缘生成 AI 应用场景打开了更多的可能性。技术要求你只需要以下几个条件树莓派 5或使用 4速度较慢——选择 8GB RAM 版本以便容纳 7B 模型。SD 卡——最小 16GB尺寸越大可以存储更多模型。已加载适当的操作系统如 Raspbian Bookworm 或 Ubuntu。一个互联网连接正如我之前提到的在树莓派上运行 Ollama 已经接近硬件的极限。理论上任何比树莓派更强大的设备只要运行 Linux 发行版并且具有相似的内存容量都应该能够运行 Ollama 和本文讨论的模型。1. 安装 Ollama为了在树莓派上安装 Ollama我们将避免使用 Docker 以节省资源。在终端中运行curl https://ollama.ai/install.sh|sh运行上述命令后你应该看到类似于下图的内容。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/bb3793bb2c4843f497f4e73232983878.png来源作者如输出所示前往 0.0.0.0:11434 验证 Ollama 是否在运行。由于我们使用的是树莓派看到‘WARNING: No NVIDIA GPU detected. Ollama will run in CPU-only mode.’是正常的。但如果你在一个应该有 NVIDIA GPU 的设备上执行这些指令说明出现了问题。如遇任何问题或更新请参考Ollama GitHub 仓库。2. 通过命令行运行 LLM查看官方 Ollama 模型库获取可以通过 Ollama 运行的模型列表。在 8GB 的树莓派上7B 以上的模型将无法运行。我们将使用 Phi-2这是微软推出的 2.7B LLM目前采用 MIT 许可证。我们将使用默认的 Phi-2 模型但你可以自由使用 这里 中找到的其他标签。查看 Phi-2 的模型页面看看如何与其互动。在终端中运行ollama run phi一旦你看到类似下面的输出你就已经在 Raspberry Pi 上运行了一个 LLM就是这么简单。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/49c2e2e0adacb151d5df152f9a79421e.png来源作者https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/f998a88c1609414a0df28296d7c24245.png这是与 Phi-2 2.7B 的互动。显然你不会得到相同的输出但你能明白意思。 | 来源作者你可以尝试其他模型如 Mistral、Llama-2 等但请确保 SD 卡有足够的空间来存储模型权重。自然模型越大输出就越慢。在 Phi-2 2.7B 上我每秒大约能得到 4 个 token但使用 Mistral 7B 时生成速度下降到每秒大约 2 个 token。一个 token 大致等于一个单词。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1e4a03f08206bd6b1839a3b9bda9da8b.png这是与 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 操作系统已经为我们安装了这个版本。我们首先需要安装 Node.js。在终端中运行curl-fsSL https://deb.nodesource.com/setup_20.x|sudo-E bash-\ sudo apt-get install-y nodejs如果需要可以将 20.x 更改为更合适的版本以便未来的读者参考。然后运行下面的代码块。git clone https://github.com/ollama-webui/ollama-webui.git cd ollama-webui/# Copying required .env filecp-RPp example.env.env# Building Frontend Using Nodenpm i npm run build# Serving Frontend with the Backendcd./backend pip install-r requirements.txt--break-system-packages sh start.sh这是对 GitHub 上提供的内容的稍微修改。请注意为了简洁起见我们没有遵循最佳实践比如使用虚拟环境并且我们使用了 — break-system-packages 标志。如果遇到找不到 uvicorn 的错误请重新启动终端会话。如果一切顺利你应该能够通过 Raspberry Pi 上的0.0.0.0:8080访问 Ollama Web UI或者如果你通过同一网络上的其他设备访问可以通过 http://Raspberry Pi 的本地地址:8080/ 访问。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0370778c38e9e9f6934c1657dc6b70b1.png如果你看到这个是的它成功了 | 来源作者一旦你创建了一个帐户并登录你应该会看到类似下图的界面。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d47c4570ae32b131c008cb4fde2e1d02.png来源作者如果你之前下载过一些模型权重应该会在下拉菜单中看到它们。如果没有你可以去设置中下载一个模型。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c30e7ce637b4c6e9c2fb346cb3737e84.png可用的模型将在此处显示 | 来源作者https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/320964e9287eebf5ddb47c817225ac9e.png如果你想下载新模型前往设置 模型以拉取模型 | 来源作者整个界面非常简洁直观因此我不会详细解释它。它真的是一个做得非常好的开源项目。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/dcb666e351985cb48670b7a30d3effdd.png这是通过 Ollama Web UI 与 Mistral 7B 的互动 | 来源作者4. 通过 Ollama Web UI 运行 VLM正如我在本文开头提到的我们还可以运行 VLM。让我们运行 LLaVA一个流行的开源 VLM它也恰好被 Ollama 支持。为了实现这一点通过界面拉取“llava”以下载权重。不幸的是与大型语言模型LLMs不同Raspberry Pi 上的图像解读设置需要相当长的时间。下面的示例处理时间大约为 6 分钟。大部分时间可能是因为图像处理部分尚未得到充分优化但这一点在未来肯定会有所改善。令牌生成速度约为 2 个令牌/秒。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4fd80948dfb710e5691d6841cdbd63ed.png查询图像来源Pexels总结到目前为止我们已经完成了本文的目标。总结一下我们成功地使用 Ollama 和 Ollama Web UI 在 Raspberry Pi 上运行了 Phi-2、Mistral 和 LLaVA 等 LLM 和 VLM。我完全能想象出在 Raspberry Pi或其他小型边缘设备上本地托管的 LLM 有很多应用场景尤其是如果我们针对像 Phi-2 这样的模型4 个令牌/秒的速度在某些应用场景中通过流式传输来看是可接受的。“小型”LLM 和 VLM 领域虽然它们被冠以“大型”的名称显得有些矛盾但这是一个活跃的研究领域最近发布了不少模型。希望这一新兴趋势能够持续下去更多高效且紧凑的模型能够继续发布这绝对是未来几个月值得关注的内容。免责声明我与 Ollama 或 Ollama Web UI 没有任何关联。所有观点和意见均为个人观点不代表任何组织。

相关文章:

在树莓派上运行本地 LLM 和 VLM

原文:towardsdatascience.com/running-local-llms-and-vlms-on-the-raspberry-pi-57bd0059c41a?sourcecollection_archive---------0-----------------------#2024-01-14 在树莓派上使用 Ollama 本地运行 Phi-2、Mistral 和 LLaVA 等模型 https://medium.com/pyes…...

利用计算机视觉进行跑步效率分析:与埃利乌德·基普乔格的比较分析

原文:towardsdatascience.com/running-efficiency-with-computer-vision-a-comparative-analysis-with-eliud-kipchoge-736eb80c574f 如何利用计算机视觉提高跑步效率? https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/…...

无代码玩法:OpenClaw网页控制台配合Qwen3.5-9B处理电商截图

无代码玩法:OpenClaw网页控制台配合Qwen3.5-9B处理电商截图 1. 为什么选择OpenClaw处理电商截图 作为一个经常网购的技术爱好者,我发现自己经常需要手动整理不同平台的商品价格信息。传统的做法是截图后人工录入Excel,既耗时又容易出错。直…...

UPnP_Generic库:嵌入式设备自动端口映射实战指南

1. UPnP_Generic库深度技术解析:嵌入式设备自动端口映射的工程实践1.1 为什么嵌入式开发者需要UPnP_Generic库在嵌入式物联网项目中,当设备需要从公网访问本地Web服务(如传感器数据页面、远程控制接口或OTA升级服务器)时&#xff…...

OpenClaw会议纪要助手:Qwen3-14b_int4_awq转写与重点提炼

OpenClaw会议纪要助手:Qwen3-14b_int4_awq转写与重点提炼 1. 为什么需要自动化会议纪要 作为远程工作者,我每周要参加至少15场跨时区会议。过去手动整理纪要时经常遇到三个痛点:一是录音转文字耗时(1小时会议需要2小时整理&…...

OpenClaw长期运行优化:Qwen3.5-9B-AWQ-4bit内存泄漏排查

OpenClaw长期运行优化:Qwen3.5-9B-AWQ-4bit内存泄漏排查 1. 问题背景与现象描述 上周我的OpenClaw网关服务在连续运行72小时后突然崩溃,导致自动化任务全部中断。查看系统监控发现内存占用从初始的2GB逐渐增长到16GB(我的服务器总内存&…...

ssh进阶用法

ssh登录与ssh配置文件 使用ssh可以从一台设备登录到另一台已开启sshd服务的远程设备。 Ubuntu-22.04 coliDESKTOP-J45M1NUM:~$ ssh yukari172.28.24.152 The authenticity of host 172.28.24.152 (172.28.24.152) cant be established. ECDSA key fingerprint is SHA256:YSC…...

基于WebAssembly的Harness扩展机制

基于WebAssembly的Harness扩展机制:构建灵活、安全且高性能的CI/CD生态系统 一、引言 钩子 (The Hook) 想象一下这个场景:您正在使用Harness构建您的CI/CD流水线,但您需要一个特定的功能——也许是一个专有的代码扫描工具,或者是与您内部系统集成的自定义步骤。传统上,…...

AI Agent Harness Engineering 的记忆架构:短期、长期与情景记忆的工程实现

AI Agent Harness Engineering 的记忆架构:短期、长期与情景记忆的工程实现 副标题:构建具有类人记忆能力的智能代理系统完整指南 第一部分:引言与基础 (Introduction & Foundation) 1. 引人注目的标题 (Compelling Title) “AI Agent Harness Engineering 的记忆架构…...

多核通信中的环形缓冲区设计与实现

1. 核间通信与环形缓冲区基础在现代多核处理器系统中,核间通信(IPC)是实现并行计算和任务协同的关键技术。共享内存是最常用的核间通信方式之一,它允许多个处理器核心通过访问同一块物理内存区域来交换数据。这种方式的优势在于避免了数据拷贝&#xff0…...

TLT库:面向Arduino的Telit ME310G1蜂窝通信轻量级C++ SDK

1. 项目概述TLT(Telit Library for Arduino)是一个面向嵌入式蜂窝通信的轻量级C库,专为CodeZoo ME310G1 Telit模块在Arduino平台上的集成而设计。该库并非从零构建,而是基于Arduino官方MKRNB库(arduino-libraries/MKRN…...

M5Unit-DigiClock模块:基于I²C的即插即用数字时钟解决方案

1. 项目概述 M5Unit-DigiClock(SKU: U146)是 M5Stack 推出的一款紧凑型数字时钟单元模块,专为 M5Stack Core 系列主控(如 Core2、CoreS3、Atom Echo)及兼容 ESP32 系列 MCU 的开发板设计。该模块并非通用 RTC 芯片的简…...

企业SEO优化与网站内容建设的关系是什么

企业SEO优化与网站内容建设的关系是什么 在现代数字营销中,企业SEO优化与网站内容建设是两个密不可分的重要环节。SEO优化(Search Engine Optimization)旨在提升网站在搜索引擎中的排名,而网站内容建设则是展示和传递企业信息的基…...

主流开源协议解析与选择指南

1. 开源协议:程序员必须掌握的法律常识第一次在GitHub上创建仓库时,面对那一长串开源协议选项,我和大多数新手一样直接懵了。MIT、Apache、GPL...这些看似简单的缩写背后,实则隐藏着影响深远的法律约束。作为从业十年的开发者&…...

OpenClaw多模型切换指南:Qwen3-4B与本地LLM混合调用

OpenClaw多模型切换指南:Qwen3-4B与本地LLM混合调用 1. 为什么需要多模型混合调用 去年冬天,当我第一次尝试用OpenClaw自动化处理技术文档时,发现一个尴尬的现象:用Qwen3-4B生成代码示例效果很好,但让它润色一段产品…...

Linux 的 link 命令

Linux 中的 link 命令用于创建硬链接(hard link),这是 Linux/Unix 文件系统中的一种特殊文件连接方式。与符号链接(symbolic link)不同,硬链接直接指向文件的 inode,而不是通过路径名引用。 命…...

Linux 的 df 命令

df (disk free) 命令是 Linux 系统中用于显示文件系统磁盘空间使用情况的常用工具。它可以报告文件系统的总容量、已用空间、可用空间以及挂载点等信息。 基本语法 df [选项] [文件或目录]常用选项 -h 或 --human-readable 以易读格式显示大小(KB, MB, GB&#xf…...

OpenClaw开源贡献:为Qwen3-4B开发新技能并提交社区

OpenClaw开源贡献:为Qwen3-4B开发新技能并提交社区 1. 为什么我们需要更多社区贡献的技能 去年冬天,当我第一次尝试用OpenClaw自动化处理每周的Markdown文档整理时,发现现有的技能库缺少一个能批量处理Front Matter的工具。这个痛点让我意识…...

RTOS在嵌入式开发中的核心价值与实战应用

1. RTOS在嵌入式开发中的核心价值我第一次接触RTOS是在2015年开发工业控制器时遇到的困境。当时用裸机编程实现多任务调度,代码已经膨胀到难以维护的程度。一个简单的功能修改需要通读上万行代码,调试一个BUG经常引发连锁反应。直到引入RTOS后&#xff0…...

OpenClaw多任务测试:Qwen3-32B在RTX4090D上的并行处理极限

OpenClaw多任务测试:Qwen3-32B在RTX4090D上的并行处理极限 1. 测试背景与动机 最近在折腾本地AI自动化时,遇到一个实际问题:当OpenClaw同时处理多个任务时,显存会成为瓶颈吗?我手头正好有台配备RTX4090D(…...

第23章 2014真题作文

目录 题目2014.11-论软件需求管理 题目2014.11-论非功能性需求对企业应用架构设计的影响 题目2014.11-论软件的可靠性设计 题目2014.11-论网络安全体系设计 题目2014.11-论软件需求管理 软件需求管理是一个对系统需求变更了解和控制的过程。需求管理过程与需求开发过程相互…...

第22章 2013真题作文

目录 题目2013.11-论软件架构建模技术与应用 题目2013.11-企业应用系统的分层架构风格 题目2013.11-论软件可靠性设计技术的应用 题目2013.11-分布式存储系统架构设计 题目2013.11-论软件架构建模技术与应用 软件架构用来处理软件高层次结构的设计和实施,它以精…...

如何利用地理位置信息优化网站的本地SEO效果

如何利用地理位置信息优化网站的本地SEO效果 在当今数字化时代,网站的本地SEO(搜索引擎优化)效果直接影响着网站的流量和用户转化率。利用地理位置信息进行本地SEO优化,不仅能够提升网站在本地用户中的可见性,还能有效…...

【复现】基于Lyapunov非线性控制-模型预测控制(LMPC)与反步法+自主水下航行器(AUV)的轨迹跟踪控制研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Linux内核模块加载机制深度解析

1. Linux内核模块加载机制深度解析在Linux系统开发中,内核模块的动态加载机制为开发者提供了极大的灵活性。作为一名长期从事内核开发的工程师,我经常需要深入理解模块加载的完整流程,这对调试复杂驱动问题和性能优化至关重要。本文将以linux…...

MacOS极简部署OpenClaw:Phi-3-mini-128k-instruct镜像快速体验

MacOS极简部署OpenClaw:Phi-3-mini-128k-instruct镜像快速体验 1. 为什么选择这个组合? 上周我在测试各种开源模型时,偶然发现了Phi-3-mini-128k-instruct这个轻量级模型。它的响应速度和对指令的理解能力让我印象深刻,特别是12…...

Arduino控制乐歌/升谱电动升降桌的UART物联网方案

1. 项目概述LoctekMotion_IoT_arduino 是一个面向 Loctek Motion(国内常称“乐歌”)与 FlexiSpot(国内常称“升谱”)品牌电动升降桌的开源 Arduino 控制库,核心目标是将传统电动升降桌改造为具备物联网能力的智能办公终…...

PicoBricks-for-ESP32库详解:面向教育的ESP32硬件抽象封装

1. 项目概述PicoBricks-for-ESP32 是 Robotistan 官方发布的 Arduino 兼容库,专为 ESP32 微控制器平台设计,用于驱动 PicoBricks 教育开发板。该库并非通用硬件抽象层,而是面向特定硬件拓扑的垂直集成方案——其核心价值在于将 PicoBricks 板…...

STC51单片机串口ISP下载程序全攻略

1. STC51单片机ISP串口下载程序详解作为一名嵌入式开发工程师,我经常需要给各种单片机下载程序。STC51系列单片机因其性价比高、开发简单而广受欢迎。今天我就来详细讲解STC51单片机通过串口ISP下载程序的全过程,包括硬件连接、软件配置和常见问题处理。…...

linux——信号灯

信号灯集合(可以包含多个信号灯)IPC对象是一个信号的集合(多个信号量)semaphore函数原型: int semget(key_t key, int nsems, int semflg); //创建一个新的信号量或获取一个已经存在的信号量的键值。 所需头文件…...