如何利用GPT技术提升树莓派的智能化水平

如今,哪个领域还未受到人工智能的影响?自从ChatGPT的广泛流行之后,大模型的竞争激烈展开,并且这场竞争也延伸到了树莓派的领域。尽管近期树莓派新产品上市并未引发热烈关注,但它的受欢迎程度在开发者中依然不减。过去,许多人将树莓派视为开发的小玩具,或将工业版本的树莓派用作生产力工具。而如今,GPT的出现则彻底改变了这一局面。

图片 把GPT放在树莓派上

在2023年3月,有开发者开始尝试将GPT集成到树莓派上。一位名为Georgi Gerganov的软件工程师开发了“llama.cpp”工具,使其能够在Mac本地运行Meta的GPT-3级AI模型LLaMA。虽然在树莓派上运行时速度较慢,但其成功引起了广泛关注。同时,斯坦福大学的研究团队也在研究这一技术,并推出了开源项目Alpaca,利用ChatGPT API生成52000个训练语料数据,并成功fine-tune LLaMA 7B模型,接近OpenAI text-davinci-003的效果,成本也仅约600美元。

2024年2月,创客社区启动了一个项目,旨在将大型语言模型(LLM)本地化。该项目名为“世界上最简单的类GPT语音助手”,意在实现完全离线的GPT语音服务。具体而言,使用树莓派(如RPi 4)配合麦克风和扬声器进行语音输入输出,安装Whisper软件将语音转为文字,随后将文字输入给LLM进行推理处理,并通过eSpeak软件将结果转化为语音回复。

最近,北京邮电大学的“万物有灵”团队也成功在树莓派上运行GPT实验。他们将类GPT-3大模型进行量化压缩,成功加载到树莓派中,堪称“大象进冰箱”。对于包含70亿个参数的LLaMA-7B模型,其最低内存需求为8GB或12GB,而许多树莓派设备的内存往往仅为4GB或8GB,加载模型的过程就已成为限制其使用的障碍。通过模型量化技术,模型权重得以压缩,若要使用更大模型或在更受限的设备上运行,模型分割和迁移到集群的策略也成为可能。通过权重逐步加载的方式,一个具备认知能力的小型智能体得以诞生。

图片 超炫酷的漫游者机器人

Floyd是一款基于树莓派的漫游者机器人,由YouTube博主Larry开发。它使用树莓派4B作为主控板,借助一个HAT模块对外部组件进行控制。Floyd不仅能够移动,还具备与人类的语音互动能力,能够通过麦克风和扬声器进行即时反馈。

图片 再做一个桌面机器人

另一位创客David Packman开发了基于树莓派的机器人MBO-AI,其外观设计灵感来自于动漫《Adventure Time》。该机器人具有强大的交互功能,能够实现脱机唤醒词检测、调用ChatGPT 3.5进行聊天以及图像分析等多种功能。

图片 在树莓派上语音识别

大多数大型模型目前仍在云端服务器上运行,终端设备通常通过API调用获取响应。用户最关心的问题是如何实现完全离线的操作。国外网友成功利用Raspberry Pi 4和一块128x64 I2C的单色OLED显示屏在树莓派上运行了语音识别和LLaMA-2 GPT。该显示屏的安装非常简单,只需在Raspberry Pi设置中启用I2C接口即可。

大语言模型的实现

要实现大语言模型,首先需要安装相应的库:

pip3 install llama-cpp-python huggingface-hub sentence-transformers langchain

接下来,使用huggingface-cli工具下载所需模型:

huggingface-cli download TheBloke/Llama-2-7b-Chat-GGUF llama-2-7b-chat.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks False

使用较小的模型可以提高运行速度,而较大的模型则可能提供更好的结果。下载模型后,可以通过以下代码使用它:

from langchain.llms import LlamaCpp
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
from langchain.prompts import PromptTemplate
from langchain.schema.output_parser import StrOutputParser

llm: Optional[LlamaCpp] = None
callback_manager: Any = None
model_file = "tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf" # OR "llama-2-7b-chat.Q4_K_M.gguf"
template_tiny = """<|system|>You are a smart mini computer named Raspberry Pi. Write a short but funny answer.</s><|user|>{question}</s><|assistant|>"""
template_llama = """<s>[INST] <<SYS>>You are a smart mini computer named Raspberry Pi. Write a short but funny answer.</SYS>>{question} [/INST]"""
template = template_tiny

def llm_init():
    """ Load large language model """
    global llm, callback_manager
    callback_manager = CallbackManager([StreamingCustomCallbackHandler()])
    llm = LlamaCpp(model_path=model_file, temperature=0.1, n_gpu_layers=0, n_batch=256, callback_manager=callback_manager, verbose=True)

def llm_start(question: str):
    """ Ask LLM a question """
    global llm, template
    prompt = PromptTemplate(template=template, input_variables=["question"])
    chain = prompt | llm | StrOutputParser()
    chain.invoke({"question": question}, config={})

此处,Raspberry Pi能够在5秒内录制音频,随后语音识别模型将音频转换为文本,最后将转录的文本发送给LLM处理。此方法还可以进一步改进,例如使用自动音频电平阈值。实现成功后,会得到如下输出:

图片 GPT+树莓派实现的AI拍立得

Kelin和Ryan设计了一款名为“诗歌相机”(Poetry Camera)的AI新物种,结合了树莓派和热敏打印机等硬件。

图片 Poetry Camera

该相机使用树莓派Zero 2 W与1200万像素的树莓派Camera Module 3,按下快门后,通过ChatGPT识别照片并生成诗歌,再由热敏打印机打印出来。

图片 支持ChatGPT的智能手表

YouTube博主MayLabs展示了一款基于树莓派的智能手表,支持ChatGPT,用户可在任何地方进行语音交互。

随着AI技术的不断进步,树莓派已成为创新AI项目的热门平台。从能够离线操作的语音识别系统,到集成了ChatGPT的机器人Floyd,再到支持ChatGPT的桌面机器人MBO-AI,这些项目展示了树莓派在AI领域的无限可能性。

树莓派与AI的结合,不仅为技术爱好者和开发者提供了实验和创作的平台,也为我们打开了一扇通向智能世界的大门。