本教程是《RISC-V跑大模型》系列的第二篇文章,手把手教你如何将LLaMA模型移植到RISC-V环境中运行。从环境搭建、模型下载到加载启动,每一步都配有详细说明和常见问题解答,即使是新手也能顺利完成。
1. 环境准备
在开始之前,请确保你的机器满足以下条件,否则可能导致下载失败或运行卡顿:
- 最新版Python:建议使用 Python 3.8 及以上版本,过低版本可能不兼容部分脚本。
- 内存要求:机器必须有足够的内存来加载完整模型。以7B模型为例,至少需要 13~15 GB 的可用内存。如果内存不足,可以考虑后续步骤中的量化模型来降低资源占用。
- 模型文件来源:你需要提前准备好原版LLaMA模型文件,以及扩展了的中文模型(可选,如果你需要中文能力)。
小提示:如果你使用的是云服务器或虚拟机,请先通过 free -h 命令检查内存大小,确保满足要求。
2. 模型下载
从LLaMA原版模型地址上下载所需文件(本教程以7B模型为例)。下载的文件列表如下:
- checklist.chk
- consolidated.00.pth
- params.json
- tokenizer.model
- tokenizer_checklist.chk
下载界面截图(示例):

所有文件下载完成后,目录结构应如下所示:

常见问题1:下载速度很慢怎么办?
建议使用多线程下载工具(如 aria2c)进行加速,或者从国内镜像源下载。
常见问题2:下载的文件校验失败?
请确保下载完整,并比对官方提供的哈希值(checklist.chk 中包含了文件哈希),使用 sha256sum 命令验证每一个文件。
3. 加载并启动
完成模型下载后,进入核心步骤——将模型转换为可在 RISC-V 环境中运行的格式,并启动推理。
3.1 下载并配置 llama.cpp
首先,克隆或下载最新版的 llama.cpp 项目:
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
小提示:如果你在 RISC-V 设备上编译可能会遇到指令集问题,建议使用交叉编译或选择已预编译的二进制文件。
3.2 移动模型文件
将第二步下载的全部文件移动到 llama.cpp/models/ 目录下:
mv /path/to/your/downloaded/files/* ./models/7B/
3.3 转换模型格式
接下来,使用 Python 脚本将 .pth 模型权重转换为 ggml 的 FP32 格式:
python3 convert-pth-to-ggml.py models/7B/ 0
执行成功后,会在 models/7B/ 下生成文件 ggml-model-f32.bin。转换过程截图:

常见问题3:转换时提示 ModuleNotFoundError?
请确保已安装必要的 Python 依赖:pip install torch numpy。如果仍报错,检查 Python 版本是否太老。
3.4 运行模型
编译好 llama.cpp 后,使用 ./main 二进制文件进行推理。可以通过 -m 参数指定模型路径,支持加载 FP16 或 Q4 量化模型以节省内存。以下是一个完整运行命令示例:
./main models/7B/ggml-model-f32.bin --color -f prompts/alpaca.txt -ins -c 256 --temp 0.2 -n 128 --repeat_penalty 1.3
3.5 参数说明
下表列出了常用参数及其作用:
| -ins | 启动类ChatGPT对话交流的运行模式 |
| -f | 指定prompt模板,alpaca模型请加载 prompts/alpaca.txt |
| -c | 控制上下文的长度,值越大越能参考更长的对话历史(默认:512) |
| -n | 控制回复生成的最大长度(默认:128) |
| -t | 控制线程数量(默认:4),可适当增加 |
| --repeat_penalty | 重复惩罚系数,用于减少重复内容(默认1.0),数值越大惩罚越强 |
| --temp | 温度系数,值越低回复的随机性越小,越保守;值越大越有创意 |
| --top_p, top_k | 控制解码采样的相关参数,通常与temp共同使用 |
常见问题4:运行后提示 Segmentation fault 或内存不足?
原因可能是模型太大导致内存溢出。解决方法:使用 Q4 量化模型(在转换时加参数 -q q4_0),或者减小 -c 上下文长度(例如改为128)。
常见问题5:如何加载量化模型?
在运行 ./main 时,-m 参数后指定量化后的 .bin 文件(如 ggml-model-q4_0.bin),并确保该文件已通过量子化脚本(quantize)生成。具体量化步骤可参考 llama.cpp 文档。
完成以上步骤后,你就可以在 RISC-V 环境中与 LLaMA 模型进行交互了。下一次我们将探讨如何优化推理速度与内存占用,敬请期待。
