[AI]从零开始的树莓派运行DeepSeek模型教程
一、前言
在前面的教程中,教了大家如何在windows中使用llama.cpp来运行DeepSeek模型。根据前面的教程中,我们也了解到了,我们只需要编译好llama.cpp就可以运行DeepSeek以及类似的LLM模型。那么本次教程就来教大家如何使用树莓派来运行大模型。这里我树莓派运行的是Linux系统,也就是说,你将本次教程中的内容学会以后,你可以在任何Linux和类Linux的终端中完成大模型的部署。如果你准备好了,就让我们开始吧!
二、谁适合本次教程
因为已经涉及到操作Linux了,并且还是操作Linux的开发板,学习本教程之前请具备一定的Linux基础和一定的解决问题的能力。本次的操作可以说是比较简单的,一般不会出现问题,如果你在安装环境或者编译时报错,可以尝试在浏览器中寻找类似的错误与这个错误对应的解决办法。学习本教程之前,建议学习我之前发布的在windows中运行llama.cpp的教程:
llama.cpp环境部署:[AI]从零开始的llama.cpp部署与DeepSeek格式转换、量化、运行教程_deepseek hf转gguf-CSDN博客
因为树莓派的性能太低了,我们需要对模型进行量化才能使用,所以现在的方案是,在windows上将模型格式和量化处理好,然后再将模型文件传输到树莓派上。而完成上面的操作就需要部署llama.cpp。
三、环境的准备
这里要求大家准备一个树莓派,这里我使用的是树莓派5,当然,也建议大家使用树莓派5。树莓派5运行1B并且F16量化的模型已经非常慢了。所以不推荐大家使用树莓派5以下的版本。这里要求大家将树莓派的系统安装好,并且可以远程到或者是使用HDMI连接显示器。总之需要大家能够操作到树莓派就行了。后面我就使用SSH远程树莓派进行演示。
四、llama.cpp的编译
这里已经我为我的树莓派装好了一个全新的系统,并且使用SSH连接到了树莓派:
还有就是要求大家树莓派连接到互联网,这里假如我们ping一个网址需要能ping通:
1.安装llama.cpp编译所需的环境
因为树莓派本质属于国外的嵌入式开发板,所以可能一些软件源我们拉取比较慢甚至无法拉取,那么现在我们就来换一些树莓派的下载源。这里参考了:debian | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
这里我们首先使用下面的命令打开软件源的配置文件:
sudo nano /etc/apt/sources.list
这里我们使用“#”将原本的源都注释掉:
然后将下面的内容复制到原本的源的下面:
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib
完成以上操作以后,我们保存并退出文件。
这里我们使用下面的命令来更新一下我们重新设置的源:
sudo apt update
如图所示,我们已经更新好了:
下面我们来安装编译所需的环境,直接使用下面的命令即可:
sudo apt install cmake gcc g++
这里执行完上面的命令以后llama.cpp的环境就安装完成了。
2.llama.cpp源码拉取
这里拉取llama.cpp的源码我们需要使用到git命令,下面我们先使用下面的命令来安装一下git:
sudo apt install git
安装好git命令以后,我们就可以直接使用下面的命令拉取llama.cpp的源码了:
git clone https://github.com/ggml-org/llama.cpp.git
如果你这里拉取失败了,可以尝试配置一些正向代理,这里用小猫咪的代理举例,大家开启局域网代理,并且启动系统代理:
然后使用下面的命令来配置git clone的代理:
git config --global http.proxy http://192.168.112.22:7890
git config --global https.proxy http://192.168.112.22:7890
这里的“192.168.112.22”是我在内网中小猫咪所在设备的IP地址,大家写成自己的即可。
配置完成以后,我们应该就可以借助小猫咪的代理将llama.cpp的源码拉下来了:
如果有小伙伴使用上面的方法没办法拉取项目,可以考虑使用下面的git镜像站拉取:
git clone https://gitee.com/ggml-org/llama.cpp.git
使用gitee需要大家输入以下自己的账号。
如果上面的方法都不行,那就直接前往llama.cpp的开源主页下载源码压缩包,llama.cpp开源主页:
下载完以后,大家自行解压即可。解压得到的文件和直接拉取得到的文件是一样的。
不管是直接使用命令还是下载的压缩包进行解压,我们就可以得到下面的文件和文件夹:
3.llama.cpp的编译
现在我们准备开始编译llama.cpp。这里我们需要在llama.cpp的项目目录下新建一个文件夹,我们在llama.cpp的项目目录下使用下面的命令:
mkdir build
然后使用下面的命令进入这个目录:
cd build/
进入目录以后,我们使用下面的命令生成makefile文件:
cmake .. -DLLAMA_NATIVE=OFF
这里加上“-DLLAMA_NATIVE=OFF”是为了在ARM设备中提升兼容性。
执行命令以后,就生成了编译相关的文件,这些文件指导了编译的过程:
命令执行完以后,我们的bulid目录下也多了很多文件:
然后我们使用下面的命令进行编译:
make -j$(nproc)
后面的“-j$(nproc)”是为了自动传递多核参数。也就是说它会自动识别树莓派的处理器数量并且调用处理器进行编译。
命令执行以后,编译就开始了:
编译的过程中可能出现警告,大家不用在意。只要没出现错误,都可以忽略。因为树莓派的性能确实比较低,所以编译的时间也相对较长。
如果你在未来的某天构建失败了,首先可以考虑去llama.cpp的开源主页看看编译目前的llama.cpp需要多少的cmake版本。当然,也可以将cmake和llama.cpp都降级到我目前的版本。现在是2025年2月23日,目前我的CMake版本是“3.25.1”:
当我们编译结束以后,build的bin文件夹下,就生成了许多可执行文件,这些就是我们后面要用到文件了:
至此,我们llama.cpp的编译就结束了。
五、使用llama.cpp运行GGUF格式的模型
在前面我们已经部署好了llama.cpp,现在我们就使用llama.cpp来运行GGUF格式的模型了,至于什么是GGUF格式的模型以及如何对模型进行量化,在之前的windows部署llama.cpp里面讲过。大家可以参考那篇教程:
llama.cpp的部署及使用:[AI]从零开始的llama.cpp部署与DeepSeek格式转换、量化、运行教程_deepseek hf转gguf-CSDN博客
当我们将一个模型格式转换,这里我使用“DeepSeek-R1-Distill-Qwen-1.5B”模型,格式转换后如图所示:
这里我们使用ftp服务将这个文件传输到树莓派中,在终端中输入下面的命令:
sftp chulingxiao@192.168.112.10
这里的“chulingxiao”是登录使用的用户名,大家输入自己的用户名即可。后面的IP地址大家修改为自己树莓派的IP地址即可。
进入sftp模式以后,就可以使用sftp命令了:
使用put命令上传文件,格式如下:
put 本地文件路径 树莓派文件路径
这里我们首先在树莓派的llama.cpp的models目录下新建一个以模型名称命名的目录,使用下面的命令:
mkdir DeepSeek-R1-Distill-Qwen-1.5B
然后使用sftp将本地的模型文件上传到我们新建的目录中,这里我使用的命令如下,大家根据自己的路径修改命令即可:
ut F:\OpenProject\llama.cpp\models\DeepSeek-R1-Distill-Qwen-1.5B\DeepSeek-R1-Distill-Qwen-1.5B-F16.gguf /home/chulingxiao/llama.cpp/models/DeepSeek-R1-Distill-Qwen-1.5B/
模型上传后,如图所示:
模型上传完成以后,我们就用我们编译出来的二进制文件来运行这个模型,这里我们回到项目目录使用下面的命令:
./build/bin/llama-cli -m ./models/DeepSeek-R1-Distill-Qwen-1.5B/DeepSeek-R1-Distill-Qwen-1.5B-F16.gguf
大家这里需要根据自己的路径写命令。
输入命令以后。模型就启动起来了:
启动完成以后,就可以进行对话了:
至此,我们在树莓派运行DeepSeek就已经完成了。以后,只要是类似的模型都可以使用这样的方法来使用树莓派来运行。
六、结语
本次教程中,教了大家如何使用树莓派来运行DeepSeek大模型,当然,也希望大家具有举一反三的能力,上面的方法在其它的Linux系统中也适用。剩下的就留给大家自己探索吧!最后,感谢大家的观看!