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 ollama
sudo usermod -a -G ollama $(whoami)配置ollama为系统启动服务。
sudo vim /etc/systemd/system/ollama.service[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"
[Install]
WantedBy=default.target# 重新加载 systemd 配置并启用 ollama 服务
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
# 安装成功后会打印出对应的版本
luckfox@luckfox:~$ ollama -v
ollama 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.whl
rknpu-driver
└── rknpu_driver_x.x.x_xxxxxxx.tar.bz2
scripts
├── 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运行之后如下图所示,接下来向该模型提出问题即可:
