Skip to content

[Bug] K1 Buildroot 上运行 Qwen3-0.6B-Q4_0 输出全部为问号(v0.2.0 release,ggml-spacemit 后端) #42

Description

@nowang6

问题描述

在 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 应输出可读的中英文内容。

疑问

  1. 该 Buildroot 镜像(k1-bl-v2.1-release)是否在 v0.2.0 release 的测试范围内?
    文档标注 "K1 Buildroot ✅ 支持",但 release 库对 libstdc++ 的要求高于镜像自带版本,
    怀疑该组合未被测试过。
  2. 有没有办法禁用 IME kernel、强制走纯 RVV 路径(例如 GGML_SPACEMIT_* 之类的环境变量),
    以便定位损坏是来自 IME1 路径(当前 use_ime1=1)还是其他环节?
  3. 我覆盖的 Debian GCC 14.2 libstdc++(release 构建使用的是 GCC 14.3 工具链)是否可能
    导致此问题?ABI 层面所需的符号均已提供。

愿意配合做进一步诊断(如 llama-bench、不同 -t、其他量化格式等)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions