[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系统中也适用。剩下的就留给大家自己探索吧!最后,感谢大家的观看!
相关文章:
[AI]从零开始的树莓派运行DeepSeek模型教程
一、前言 在前面的教程中,教了大家如何在windows中使用llama.cpp来运行DeepSeek模型。根据前面的教程中,我们也了解到了,我们只需要编译好llama.cpp就可以运行DeepSeek以及类似的LLM模型。那么本次教程就来教大家如何使用树莓派来运行大模型。…...
2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(二)
2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(二) 第一部分:网络平台搭建与设备安全防护任务书第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务 1:应急响应&…...
Open WebUI本地部署教程
文章目录 1、系统环境配置2、源码下载2.1 github源码地址下载 3、环境启动3.1 后端环境3.2 前端环境 4、问题4.1 浏览器跨域问题4.2 all-MiniLM-L6-v2模型文件下载失败问题4.3 单独部署backend启动报错问题 1、系统环境配置 操作系统:windows/linux/macos Python版…...
Missing required prop: “maxlength“
背景: 封装一个使用功能相同使用频率较高的input公共组件作为子组件,大多数长度要求为200,且实时显示统计子数,部分input有输入提示。 代码实现如下: <template><el-input v-model"inputValue" t…...
dify本地部署
安装docker。 在官网安装docker。 如果遇到wsl报错,就使用 wsl --updata 进行更新。如果问题解决,进入docker应该是如下界面: 克隆 在自己创建的文件内使用 git clone gitgithub.com:langgenius/dify.git 或 git clone https://github.com…...
python学习一
学习网络安全为什么要学python? 1、在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工 具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者 编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定 的编程能力。 2、python是一门编程语言经常用它…...
git branch
文章目录 1.简介2.格式3.选项4.示例参考文献 1.简介 git branch 用于管理分支,包括查看、创建、删除、重命名和关联。 git branch 是 Git 版本控制系统中用于管理分支的命令。分支是 Git 的核心功能之一,允许开发者在同一个代码库中并行开发不同的功能…...
算法-图-数据结构(邻接矩阵)-BFS广度优先遍历
邻接矩阵广度优先遍历(BFS)是一种用于遍历或搜索图的算法,以下是具体介绍: 1. 基本概念 图是一种非线性的数据结构,由顶点和边组成,可分为无向图、有向图、加权图、无权图等。邻接矩阵是表示图的一种数…...
数学建模之数学模型—2:非线性规划
文章目录 非线性规划基本概念与结论凸集与凸函数极值条件无约束条件的极值判断条件有约束条件的极值判断条件 无约束非线性规划一维搜索算法步骤示例特点代码模板 最速下降法算法详细步骤 代码实现示例最优步长的求解 黄金分割法斐波那契法牛顿法阻尼牛顿法模式搜索法Powell方法…...
unity学习51:所有UI的父物体:canvas画布
目录 1 下载资源 1.1 在window / Asset store下下载一套免费的UI资源 1.2 下载,导入import 1.3 导入后在 project / Asset下面可以看到 2 画布canvas,UI的父物体 2.1 创建canvas 2.1.1 画布的下面是 event system是UI相关的事件系统 2.2 canvas…...
ctfshow做题笔记—栈溢出—pwn57~pwn60
目录 前言 一、pwn57(先了解一下简单的64位shellcode吧) 二、pwn58 三、pwn59(64位 无限制) 四、pwn60(入门难度shellcode) 前言 往前写了几道题,与shellcode有关,关于shellc…...
数据结构 1-2 线性表的链式存储-链表
1 原理 顺序表的缺点: 插入和删除移动大量元素数组的大小不好控制占用一大段连续的存储空间,造成很多碎片 链表规避了上述顺序表缺点 逻辑上相邻的两个元素在物理位置上不相邻 头结点 L:头指针 头指针:链表中第一个结点的存储…...
ArcGIS Pro进行坡度与坡向分析
在地理信息系统中,坡度分析是一项至关重要的空间分析方法,旨在精确计算地表或地形的坡度,为地形特征识别、土地资源规划、环境保护、灾害预警等领域提供科学依据。本文将详细介绍如何利用ArcGIS Pro这一强大的地理信息系统软件,进…...
My first Android application
界面元素组成: 功能代码: /*实现功能:当输入内容后,欢迎文本发生相应改变,并清除掉文本域内容当未输入任何内容时,弹出提示文本以警告用户*/val greetingText findViewById<TextView>(R.id.printer)…...
ZLMediaKi集群设置
要在集群环境中部署 ZLMediaKit,您可以按照以下步骤进行操作。ZLMediaKit 是一个高性能的流媒体服务器,支持 RTMP、RTSP、HLS 等协议。以下是一个详细的集群部署方案: ### 1. 环境准备 - **服务器**:准备多台服务器,…...
Docker基础实践与应用举例
Docker 是一个轻量级容器化平台,通过将应用及其依赖打包到容器中,实现快速部署和环境一致性。以下是 Docker 的实践与应用场景举例,结合具体操作步骤: 一、基础实践 1. 快速启动一个容器 # 运行一个Nginx容器,映射宿…...
Innovus中快速获取timing path逻辑深度的golden脚本
在实际项目中我们经常会遇到一条timing path级数特别多,可能是一两页都翻不完。此时,我们大都需要手工去数这条path上到底有哪些是设计本身的逻辑,哪些是PR工具插入的buffer和inverter。 数字IC后端手把手培训教程 | Clock Gating相关clock …...
百度AI图片助手,免费AI去水印、画质修复、画面延展以及局部替换
最近,要是你常用百度图片,可能已经发现了它新添的一个超实用功能——百度AI图片助手。但很多朋友不知道它的入口地址,我们今天给大家分享一下。 这个功能的出现,在图片编辑修改方面带来了极大便利,它涵盖了AI去水印、…...
【前端】Axios AJAX Fetch
不定期更新,建议关注收藏点赞。 目录 AxiosAJAXCORS 允许跨域请求 Fetch Axios axios 是一个基于 Promise 的 JavaScript HTTP 客户端,用于浏览器和 Node.js 中发送 HTTP 请求。它提供了一个简单的 API 来发起请求,并处理请求的结果。axios …...
测试面试题:以一个登录窗口为例,设计一下登录界面测试的思路和方法
在测试登录窗口时,可以从 表单测试、 逻辑判断和 业务流程三个方面设计测试思路和方法。以下是一个详细的测试方案: 1. 表单测试 表单测试主要关注输入框、按钮等UI元素的正确性和用户体验。 测试点: 输入框测试 用户名和密码输入框是否正常显示。输入框是否支持预期的字符类…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
