目前大模型研究非常广泛,但是对于个人用户如何部署一个大模型通常是比较麻烦的,而llama.cpp项目作为一个使用cpp来完成大模型推理的开源工具,对于没有丰富硬件资源的用户来说是一个很好用的工具,可以将中意的大模型十分简单的部署在自己的设备上。以下内容为使用llama.cpp将大模型部署在端侧设备K230上。
1. llama.cpp
下载源码
1
git clone https://github.com/ggerganov/llama.cpp.git
准备K230编译工具链
首先说明一点,llama.cpp是一个纯c/c++的项目,虽然有相应的python文件作为模型转换工作,但是对于直接部署模型来说并不是很重要(毕竟个人用户也没有什么机会自己训练一个大模型,而预训练好的大模型在huggingface是很多的,同时llama.cpp需要的gguf格式的模型也可以在fuggingface上找到)。既然是c项目,那么很容易就可以通过交叉编译来生成K230上可运行的程序。
也可以使用带有rvv intrinsic的工具链进行编译,例如gcc14,这个自行尝试即可
K230的编译工具链很容易获取,编译过K230_sdk镜像的话,是可以在其toolchain目录下找到对应的工具链,拿来直接用就好。(现在我假设你已经有了噢)
1 | drwxr-xr-x 10 curio curio 4.0K 11月 20 12:24 Xuantie-900-gcc-linux-6.6.0-glibc-x86_64-V3.0.1 |
现在还缺少K230相关的编译选项,可以通过K230的编译器nncase repo来获取,保留以下内容即可:
1 | set(CMAKE_SYSTEM_NAME Linux) |
将以上内容写入到.cmake 文件中,在后面编译中会用到
- 编译
1
2
3
4export RISCV_ROOT_PATH=/PATH/TO/YOUR/TOOLCHAIN/Xuantie-900-gcc-linux-6.6.0-glibc-x86_64-V3.0.1/
cd llama.cpp
cmake . -B build -DCMAKE_TOOLCHAIN_FILE=/PATH/TO/YOUR/TOOLCHAIN/k230.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j
成功编译后可以在build/bin目录下找到llama-cli
下载模型
直接在huggingface上下载准备上板执行
将llama.cpp 和 qwen2.5-0.5b-instruct-q2_k.gguf拷贝到K230上执行命令
1
./llama-cli -m qwen2.5-0.5b-instruct-q2_k.gguf -p "system name whatever" -cnv
这里的
-cnv
是用于开启对话模式,稍等几分钟就可以进行对话(虽然现在推理还很慢,如果开启rvv优化,这个2bit 量化的模型在K230上性能可以达到0.8t/s)