问题描述
在 Milk-V Jupiter(SpacemiT K1,Buildroot 系统)上,使用官方 v0.2.0 release 包
(spacemit-llama.cpp.riscv64.0.2.0.tar.gz)运行官方文档推荐的 Qwen3-0.6B-Q4_0 模型,
llama-cli 推理输出全部为问号 ?。-no-cnv 单次推理和交互聊天两种模式均复现。
速度正常(Prompt 27.9 t/s / Generation 2.8 t/s),说明推理流程在跑,但生成内容本身已损坏。
环境
| 项目 |
值 |
| 设备 |
Milk-V Jupiter(SpacemiT K1,RISC-V) |
| 系统 |
Buildroot k1-bl-v2.1-release,内核 6.6.63 |
| glibc |
2.38 |
| llama.cpp |
v0.2.0 release 包(build b10054-64316cd57) |
| 模型 |
modelscope unsloth/Qwen3-0.6B-GGUF 的 Qwen3-0.6B-Q4_0.gguf(官方文档中 K1 平台推荐模型) |
| 模型 md5 |
14d5eac045fd3991175cdc77373925e4(传输后已校验) |
| 内存 |
7.7 GB(进程峰值约 838 MB) |
Buildroot 没有 apt,因此 release 包与运行时依赖均为手动部署(依赖来源与 CI 一致,
见 .github/variables.env):
libspert.so.1:来自 spacemit-com/spine-runtime release 0.6.3
libonnxruntime.so.1:来自 spacemit-com/onnxruntime release 2.0.6(1.24.2+spacemit)
libstdc++.so.6(GCC 14.2,6.0.33):Buildroot 镜像自带的 libstdc++ 只提供到
CXXABI_1.3.14,而 release 库需要 CXXABI_1.3.15
ldd bin/llama-cli 所有库均可解析,无 "not found"。
复现步骤
export LD_LIBRARY_PATH=/root/llama-libs:/root/spacemit-llama.cpp.riscv64.0.2.0/lib
/root/spacemit-llama.cpp.riscv64.0.2.0/bin/llama-cli \
-m /root/Qwen3-0.6B-Q4_0.gguf \
-t 4 --no-mmap -c 2048 \
-no-cnv -n 128 -p "请用一句话介绍RISC-V架构"
实际输出
ggml-spacemit: num_cores=4, core_ids=auto, arch_id=0xa03c, vlen=32, shared_mem=131072, use_ime1=1, use_ime2=0
build : b10054-64316cd57
model : /root/Qwen3-0.6B-Q4_0.gguf
ftype : Q4_0
> 请用一句话介绍RISC-V架构
???????????????????
[ Prompt: 27.9 t/s | Generation: 2.8 t/s ]
> hi
????????????????????????????????...(全部为 ?)
每个生成的 token 都渲染为 ? —— 在 llama.cpp 中这通常意味着 detokenizer 收到了无效的
UTF-8 字节(token id / logits 已损坏),并非显示问题。输入的 prompt 回显正常,仅生成内容损坏。
期望结果
按官方使用指南,Qwen3-0.6B-Q4_0 应输出可读的中英文内容。
疑问
- 该 Buildroot 镜像(
k1-bl-v2.1-release)是否在 v0.2.0 release 的测试范围内?
文档标注 "K1 Buildroot ✅ 支持",但 release 库对 libstdc++ 的要求高于镜像自带版本,
怀疑该组合未被测试过。
- 有没有办法禁用 IME kernel、强制走纯 RVV 路径(例如
GGML_SPACEMIT_* 之类的环境变量),
以便定位损坏是来自 IME1 路径(当前 use_ime1=1)还是其他环节?
- 我覆盖的 Debian GCC 14.2
libstdc++(release 构建使用的是 GCC 14.3 工具链)是否可能
导致此问题?ABI 层面所需的符号均已提供。
愿意配合做进一步诊断(如 llama-bench、不同 -t、其他量化格式等)。
问题描述
在 Milk-V Jupiter(SpacemiT K1,Buildroot 系统)上,使用官方 v0.2.0 release 包
(
spacemit-llama.cpp.riscv64.0.2.0.tar.gz)运行官方文档推荐的 Qwen3-0.6B-Q4_0 模型,llama-cli推理输出全部为问号?。-no-cnv单次推理和交互聊天两种模式均复现。速度正常(Prompt 27.9 t/s / Generation 2.8 t/s),说明推理流程在跑,但生成内容本身已损坏。
环境
k1-bl-v2.1-release,内核 6.6.63b10054-64316cd57)unsloth/Qwen3-0.6B-GGUF的Qwen3-0.6B-Q4_0.gguf(官方文档中 K1 平台推荐模型)14d5eac045fd3991175cdc77373925e4(传输后已校验)Buildroot 没有
apt,因此 release 包与运行时依赖均为手动部署(依赖来源与 CI 一致,见
.github/variables.env):libspert.so.1:来自spacemit-com/spine-runtimerelease0.6.3libonnxruntime.so.1:来自spacemit-com/onnxruntimerelease2.0.6(1.24.2+spacemit)libstdc++.so.6(GCC 14.2,6.0.33):Buildroot 镜像自带的 libstdc++ 只提供到CXXABI_1.3.14,而 release 库需要CXXABI_1.3.15ldd bin/llama-cli所有库均可解析,无 "not found"。复现步骤
实际输出
每个生成的 token 都渲染为
?—— 在 llama.cpp 中这通常意味着 detokenizer 收到了无效的UTF-8 字节(token id / logits 已损坏),并非显示问题。输入的 prompt 回显正常,仅生成内容损坏。
期望结果
按官方使用指南,Qwen3-0.6B-Q4_0 应输出可读的中英文内容。
疑问
k1-bl-v2.1-release)是否在 v0.2.0 release 的测试范围内?文档标注 "K1 Buildroot ✅ 支持",但 release 库对 libstdc++ 的要求高于镜像自带版本,
怀疑该组合未被测试过。
GGML_SPACEMIT_*之类的环境变量),以便定位损坏是来自 IME1 路径(当前
use_ime1=1)还是其他环节?libstdc++(release 构建使用的是 GCC 14.3 工具链)是否可能导致此问题?ABI 层面所需的符号均已提供。
愿意配合做进一步诊断(如
llama-bench、不同-t、其他量化格式等)。