DeepSeek 环境搭建
1. DeepSeek 简介
DeepSeek是一家迅速崛起的初创公司,最近因其推出的 DeepSeek-V3 大型语言模型而引起了广泛关注。经过多次技术迭代与优化,DeepSeek-V3 的性能已经达到了与 OpenAI-O1 模型相媲美的水平,甚至在某些方面有所超越。最为吸引人的是,DeepSeek R1 模型已经完全开源,并且可以免费使用。
2. DeepSeek 部署
在 Luckfox omni3576 Debian12上部署 Deepseek 有两种方法,分别是使用 Ollama 工具部署和使用瑞芯微官方的 RKLLM 量化部署。下面分别对这两种部署方式进行介绍。
| 名称 | 下载地址 |
|---|---|
| ollama 软件包(linux-arm64) | 百度网盘下载 |
| DeepSeek 示例程序 | 百度网盘下载 |
| rkllm模型 | 百度网盘下载 |
| 交叉编译工具:gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu | 百度网盘下载 |
2.1 使用 Ollama 工具部署
Ollama 是一个开源的本地大语言模型运行框架,旨在让用户能够轻松地在本地机器上部署和运行大型语言模型(LLM),支持最新的 DeepSeek 模型。
-
下载 Linux-arm64 版本的 Ollama 软件包。(如果无法科学上网且下载速度过慢,可直接使用上面的百度网盘链接进行下载)
curl -L https://ollama.com/download/ollama-linux-arm64.tgz -o ollama-linux-arm64.tgz -
将文件解压到 /usr 目录下。
sudo tar -C /usr -xzf ollama-linux-arm64.tgz
-
创建 ollama 用户和用户组,并将当前用户加入到 ollama 用户组。
sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollamasudo usermod -a -G ollama $(whoami) -
配置ollama为系统启动服务。
sudo vim /etc/systemd/system/ollama.service[Unit]Description=Ollama ServiceAfter=network-online.target[Service]ExecStart=/usr/bin/ollama serveUser=ollamaGroup=ollamaRestart=alwaysRestartSec=3Environment="PATH=$PATH"[Install]WantedBy=default.target# 重新加载 systemd 配置并启用 ollama 服务sudo systemctl daemon-reloadsudo systemctl enable ollamasudo systemctl start ollama# 安装成功后会打印出对应的版本luckfox@luckfox:~$ ollama -vollama version is 0.5.11 -
启动 ollama 运行 Deepseek R1 1.5B 模型大模型。
ollama run deepseek-r1:1.5b -
初次启动模型,需要从ollama网站下载模型文件。


2.2 使用 RKLLM量化部署(PC ubuntu22.04)
RKLLM-Toolkit 是一个开发套件,旨在帮助用户在计算机上进行大语言模型的量化和转换。其功能类似于之前章节中介绍的 RKNN-Toolkit2,都是通过在 PC 平台上提供 Python 接口来简化模型的部署和运行。为了使用 RKNPU,用户需要首先在计算机上运行 RKLLM-Toolkit,将训练好的模型转换为 RKLLM 格式,然后通过 RKNN C API 或 Python API 在开发板上进行部署。对于模型训练和模型转换需要用户自己完成,模型转换可参考 rknn-llm 仓库下 rknn-llm/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/Readme.md 文档。本节我们主要使用瑞芯微转换好的 rkllm 进行演示。
-
克隆 rknn-llm 仓库。
git clone https://github.com/airockchip/rknn-llm.git --depth 1 -
下载完成后,检查目录结构。
doc└── Rockchip_RKLLM_SDK_CN.pdf # RKLLM SDK 中文说明文档└── Rockchip_RKLLM_SDK_EN.pdf # RKLLM SDK 英文说明文档examples├── DeepSeek-R1-Distill-Qwen-1.5B_Demo # 板端 API 推理调用示例工程├── Qwen2-VL-2B_Demo # 多模态推理调用示例工程└── rkllm_server_demo # RKLLM-Server 部署示例工程rkllm-runtime├── runtime│ └── Android│ └── librkllm_api│ └── arm64-v8a│ └── librkllmrt.so # RKLLM Runtime 库│ └── include│ └── rkllm.h # Runtime 头文件│ └── Linux│ └── librkllm_api│ └── aarch64│ └── librkllmrt.so # RKLLM Runtime 库│ └── include│ └── rkllm.h # Runtime 头文件rkllm-toolkit├── rkllm_toolkit-x.x.x-cp38-cp38-linux_x86_64.whl└── rkllm_toolkit-x.x.x-cp310-cp310-linux_x86_64.whlrknpu-driver└── rknpu_driver_x.x.x_xxxxxxx.tar.bz2scripts├── fix_freq_rk3576.sh # RK3576 定频脚本└── fix_freq_rk3588.sh # RK3588 定频脚本 -
进入示例程序目录。
cd rknn-llm/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/deploy -
配置交叉编译器路径,修改 build-linux.sh 文件。
GCC_COMPILER_PATH=~/opts/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu修改为:GCC_COMPILER_PATH=<sdk path>/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- 注意:交叉编译工具通常支持向下兼容,但不支持向上兼容。因此,建议使用 10.2 版本及以上的编译器。交叉编译器可以从官网下载安装,也可以使用 SDK 中自带的版本。
-
运行运行 build-linux.sh 脚本,交叉编译示例程序。
./build-linux.sh -
编译完成后, 会在 deploy 目录下产生 install 文件夹, 其中有编译好的可执行文件, 以及 RKLLM Runtime 库。
install/└── demo_Linux_aarch64├── lib│ └── librkllmrt.so└── llm_demo -
将生成的 demo_Linux_aarch64 文件夹传输到开发板。
scp -r luckfox@192.168.9.185:/home/luckfox -
开发板端运行可执行文件。
cd /userdata/demo_Linux_aarch64/# 设置依赖库环境export LD_LIBRARY_PATH=./lib# 板端推理性能查看:export RKLLM_LOG_LEVEL=1# 运行可执行文件# 用法: ./llm_demo <model_path> <max_new_tokens> <max_context_len>./llm_demo DeepSeek-R1-Distill-Qwen-1.5B_W4A16_RK3576.rkllm 2048 4096 -
运行之后如下图所示,接下来向该模型提出问题即可:
