如何在ZYNQ本地部署DeepSeek模型

科技时尚 2025-12-23 chy123 3537

以下文章来源于OpenFPGA,作者碎碎思

一个将最小号 DeepSeek 模型部署到 AMD Zynq UltraScale+ MPSoC 处理系统的项目。

ccb047e2-da13-11f0-8c8f-92fbcf53809c.png

1. 引言

如果你过去几年没注意人工智能的大趋势,那么你可能不知道大型语言模型(LLM)已在 AI 领域占据重要地位。

这些模型能够理解人类的文本查询,并生成文本回应。之所以称“大模型”,是因为它们通常在大量网页、书籍、对话、代码等数据上训练。

其本质并非“真正的智能”,而是深度学习模型——基于复杂数学运算(如线性代数、优化算法)实现的预测机制。

常见的做法是:若希望获得良好性能,通常依赖高性能的 GPU(例如 AMD Instinct GPU)进行推理。

但在某些应用场景,我们可能希望将 LLM 部署在 边缘设备(edge device) 本地执行。出于这个目的,本项目将在 ZUBoard(含 Arm Cortex-A53 内核的 Zynq UltraScale+ MPSoC)上运行一个较小的 DeepSeek 模型。

部署在边缘设备的优势包括:

隐私:模型在本地运行,无需上传数据到云端。

离线访问:不依赖宽带或云服务。

成本:节省托管云推理的费用。

但工程中必须在 隐私、成本、性能之间做权衡。

2. 什么是 DeepSeek

如果你还不熟悉 DeepSeek:这是一系列高性能的开放权重 LLM 和大规模多模态模型(LMM),用于推动开放 AI 研究。

这些模型从零开始训练,使用了数万亿 tokens 的多语言网页、学术文献、代码库及精编数据集。

架构上基于 Transformer,并加入了诸如:Grouped Query Attention (GQA)、SwiGLU 激活函数、多查询注意力层,以提升推理效率。

模型尺寸可选范围:1.5B、7B、13B 参数及以上,以便在资源使用与准确度之间平衡。

DeepSeek-VL(视觉-语言版本)扩展支持图像数据与文本监督,能够进行跨模态推理、视觉问答、图片-文本生成。

其还提供量化版本(4 bit、8 bit)以适配边缘设备与移动部署。

在多个基准上(如 MMLU、GSM8K、HumanEval、MMMU)表现出接近或达到最先进水平,同时优化 CPU/GPU 推理效率。

3. 在 Zynq UltraScale+ MPSoC 上开始

项目使用 PYNQ 平台作为 DeepSeek 安装基础。

步骤如下:

从 PYNQ 官网下载适用于 Avnet ZUBoard 的镜像,并将镜像烧录至 SD 卡。

将板上的启动开关设为 SD 卡启动,插入 SD 卡,并通过 USB UART以太网将 ZUBoard 连接至主机。

cd7b3c22-da13-11f0-8c8f-92fbcf53809c.jpg

启动后使用浏览器访问 http://pynq:9090,密码通常为 xilinx。

打开终端,准备安装 DeepSeek 模型。

ce2eddcc-da13-11f0-8c8f-92fbcf53809c.png

4. 准备工作

由于 ZUBoard 仅配备 1 GB 的 LPDDR4 内存,需在 SD 卡上建立足够的交换(swap)空间,以防止内存耗尽导致系统崩溃。

具体命令示例:

swapon --show 
sudo swapoff /var/swap 
sudo rm /var/swap 
sudo chmod 600 /var/swap 
sudo mkswap /var/swap 
sudo swapon /var/swap

执行完成后,通过 swapon --show 可确认现在有约 4 GB 的 swap 空间。

ce890dba-da13-11f0-8c8f-92fbcf53809c.png

5. 安装 Ollama 与 DeepSeek

使用开源工具 Ollama 来运行 LLM,本项目使用 Ollama 框架。

安装命令示例:

curl -fsSL https://ollama.com/install.sh | sh

系统无 GPU,可忽略相应警告。

cee699c6-da13-11f0-8c8f-92fbcf53809c.png

在安装成功后,下载 DeepSeek 1.5B 参数版本。示例命令:

mkdir deepseek 
exportHOME=/home/xilinx/deepseek 
ollama pull deepseek-r1:1.5b

cf45bf5a-da13-11f0-8c8f-92fbcf53809c.png

6. 测试

在 ZUBoard 上运行模型示例命令:

ollama run deepseek-r1:1.5b

系统将显示提示符,等待你的输入。

cf99c51e-da13-11f0-8c8f-92fbcf53809c.png

我做的第一件事就是询问它关于模型的问题。

cff32190-da13-11f0-8c8f-92fbcf53809c.png

模型信息如下图所示。

d04c1b6a-da13-11f0-8c8f-92fbcf53809c.png

然后,像操作普通 LLM 一样与该模型进行交互。

d0a93a84-da13-11f0-8c8f-92fbcf53809c.png

可在另一个终端运行 top 命令来观察系统资源消耗。

d0fd8300-da13-11f0-8c8f-92fbcf53809c.png

需要注意:

参数较少(1.5B)意味着推理能力有限。

使用 swap 空间意味着性能会受到影响。

7. 总结

该项目展示了:即便没有 GPU,也能在边缘设备(如 ZYNQ)上部署 LLM。尽管性能受限,但具备“本地离线自动推理”的能力,在特定应用场景中极具价值。