百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何用树莓派跑AI聊天机器人?详细教程来了!

itomcoil 2025-02-13 12:30 20 浏览


编译 | 段祎
编辑 | Panken

芯东西3月30日消息,3月25日,据Tom’s Hardware报道,一位名叫Les Pounder的技术人员修改了软件开发者Georgi Gerganov写的C/C++模型llama.cpp。Les Pounder称,使用具有8GB RAM的Raspberry Pi 4(树莓派:微型电脑主板)下载llama.cpp后,通过运行代码可以创建一个基于LLaMA(社交软件巨头Meta开发的大型语言模型)的类似ChatGPT的聊天机器人。

不过由于中端硬件算力方面的限制,Raspberry Pi 4上的LLaMA运行缓慢,加载聊天内容可能需要几分钟时间。如果想要一个响应更快的聊天机器人,需要配备RTX 3000系列的计算机或更快的GPU。

运行像ChatGPT这样的聊天机器人需要强大算力GPU的支持。从诸如GPT-4、LLaMA等大型语言模型开源以来,许多相关技术人员通过再次开发程序,改变配置,使此类大型语言模型可以成功应用于消费级PC、Raspberry Pi等中端硬件上。如果追求该模型的运行速度,可以使用Linux台式机或笔记本电脑。

一、大模型对本地硬件的要求:运算效率高,内存容量大

此前,如果要想在电脑上运行ChatGPT,不仅需要强大的算力硬件核心,如CPU+GPU、FPGA、ASIC等,而且还需要考虑硬件的稳定性、吞吐量、运算效率等。如今,随着各大型语言模型开源,找到获取它们的路径并不难,但这些大型语言模型占用的内存依旧却非常之大。

例如LLaMa-13B包含36.3GiB(注:计算机硬盘存储单位)的主要数据、6.5GiB用于预量化的4比特模型。这需要24GB VRAM和64GB系统内存的显卡才能获取。甚至还有一个650亿参数的语言模型,需要有英伟达A100 40GB PCIe卡以及128GB的?系统内存才能下载获取。

想要以16比特精度运行基本语言模型,使用英伟达的RTX 4090、RTX 3090 Ti、RTX 3090或Titan RTX显卡可以将性能发挥到最好。所有具有24GB VRAM的卡都可以用于运行具有70亿个参数的语言模型(LLaMa-7B),但很少有家庭用户可能拥有这样的显卡。

但若以8比特精度加载语言模型,就可将VRAM内存容量减半,这意味着任何具有至少10GB VRAM的显卡可以运行LLaMa-7B。以此类推,更好的是,以4比特精度加载语言模型再次将VRAM内存容量减半,从而让LLaMa-13B在10GB VRAM上工作。

▲英伟达RTX 4090(图源:Tom’s Hardware)

ChatGPT对硬件配置的高要求限制了其在类似树莓派这样的中端硬件上运行,但依靠Georgi Gerganov开发的C/C++模型llama.cpp,完成这个项目只需要8GB RAM的Raspberry Pi 4、具有16GB RAM运行Linux的PC、16GB或更大的格式化为NTFS的USB驱动器。

二、在Raspberry Pi 4上运行LLaMA,生成“BOb”聊天机器人

该过程的第一部分是在Linux PC上设置llama.cpp,下载LLaMA 7B模型,转换它们,然后将它们复制到USB驱动器上。同时需要使用Linux PC来转换模型,因为Raspberry Pi中的8GB RAM是不够的。具体操作如下:

1、在Linux PC上打开终端并确保安装了Git(开源的分布式版本控制软件):

2、使用Git克隆数据库:

3、安装一系列Python模块,这些模块将与LLaMA模型一起创建聊天机器人:

4、确保安装了G++和build essential,这些是构建C程序所必须的:

5、在终端中将文件目录更改为llama.cpp:

6、构建项目文件,按回车键运行:

7、使用以下链接下载LLaMA 7B torrent:

8、优化下载,只下载7B和tokenizer文件,其他文件大小达数百GB:

▲操作图(图源:Tom’s Hardware)

9、将LLaMA 7B和分词器文件复制到/llama.cpp/models/。

10、在主目录中打开终端并转到llama.cpp文件夹:

11、将LLaMA 7B模型转换为ggml FP16格式。这可能需要消耗一段时间,使用16GB RAM会使速度更快。此操作将整个13GB
models/7B/consolidated.00.pth文件作为pytorch模型加载到RAM中。在8GB Raspberry Pi 4上尝试此步骤将导致非法指令错误。

12、减少LLaMA 7B模型的大小,将模型量化为4比特:

13、将/models/的内容复制到USB驱动器。

最后一部分,在Raspberry Pi 4上重复llama.cpp设置,然后使用USB驱动器复制模型。然后加载一个交互式聊天会话并问“Bob”一系列问题,除了要求它编写Python代码。此过程中的第9步可以在Raspberry Pi 4或Linux PC上运行。

▲代码图(图源:Tom’s Hardware)

1、在桌面启动Raspberry Pi 4。

2、打开终端并确保安装了Git:

3、使用Git克隆数据库:

4、安装一系列Python模块,这些模块将与LLaMA模型一起创建聊天机器人:

5、确保安装了G++和build essential,这些是构建C程序所必须的:

6、在终端中将文件目录更改为llama.cpp:

7、构建项目文件,按回车键运行:

8、插入USB驱动器并将文件复制到/models/,这将覆盖模型目录中的所有文件。

9、开始与“Bob”聊天会话。这是需要一点耐心的地方,尽管LLaMA 7B模型比其他模型占用内存更小,但对于体积本身就很小的Raspberry Pi来说,它的内存仍然较大,故加载模型可能需要几分钟时间。

10、问“Bob”一个问题,然后按Enter。

▲代码图(图源:Tom’s Hardware)

结语:借力开源大模型,中端硬件也能跑聊天机器人

聊天机器人ChatGPT的爆火吸引了大量用户,人们对类似的生成式AI产生了浓厚的兴趣。自社交巨头Facebook的母公司Meta最近发布全新人工智能大型语言模型LLaMA以来,研究人员和工程师都在积极探索人工智能应用和相关功能。接受了20种语言训练的LLaMA模型已经被大量开发者在生成文本、对话、总结书面材料等应用。

通过采用C/C++和Python语言将LLaMA模型应用在体积小巧的树莓派上,生成的“BOb”机器人便可以和用户进行简单对话,这种自我参与创建聊天机器人并不需要高算力的GPU就能运行。对于人们来说,在简单的硬件上DIY一个专属聊天机器人也不失趣味。

来源:Tom’s Hardware

相关推荐

selenium(WEB自动化工具)

定义解释Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaF...

开发利器丨如何使用ELK设计微服务中的日志收集方案?

【摘要】微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等。我们将重点介绍微服务架构中...

高并发系统设计:应对每秒数万QPS的架构策略

当面试官问及"如何应对每秒几万QPS(QueriesPerSecond)"时,大概率是想知道你对高并发系统设计的理解有多少。本文将深入探讨从基础设施到应用层面的解决方案。01、理解...

2025 年每个 JavaScript 开发者都应该了解的功能

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.Iteratorhelpers开发者...

JavaScript Array 对象

Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...

Gemini 2.5编程全球霸榜,谷歌重回AI王座,神秘模型曝光,奥特曼迎战

刚刚,Gemini2.5Pro编程登顶,6美元性价比碾压Claude3.7Sonnet。不仅如此,谷歌还暗藏着更强的编程模型Dragontail,这次是要彻底翻盘了。谷歌,彻底打了一场漂亮的翻...

动力节点最新JavaScript教程(高级篇),深入学习JavaScript

JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌...

一文看懂Kiro,其 Spec工作流秒杀Cursor,可移植至Claude Code

当Cursor的“即兴编程”开始拖累项目质量,AWS新晋IDEKiro以Spec工作流打出“先规范后编码”的系统工程思维:需求-设计-任务三件套一次生成,文档与代码同步落地,复杂项目不...

「晚安·好梦」努力只能及格,拼命才能优秀

欢迎光临,浏览之前点击上面的音乐放松一下心情吧!喜欢的话给小编一个关注呀!Effortscanonlypass,anddesperatelycanbeexcellent.努力只能及格...

JavaScript 中 some 与 every 方法的区别是什么?

大家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力在JavaScript中,Array.protot...

10个高效的Python爬虫框架,你用过几个?

小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!1.Scrapysc...

12个高效的Python爬虫框架,你用过几个?

实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...

pip3 install pyspider报错问题解决

运行如下命令报错:>>>pip3installpyspider观察上面的报错问题,需要安装pycurl。是到这个网址:http://www.lfd.uci.edu/~gohlke...

PySpider框架的使用

PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...

「机器学习」神经网络的激活函数、并通过python实现激活函数

神经网络的激活函数、并通过python实现whatis激活函数感知机的网络结构如下:左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。用数学式来表示感知机:上面这个数学式子可以被改写:...