找到本地 GGUF blob,读取模型 metadata 和 tensor 目录。
每个模块的具体功能
输入是模型 manifest 和 GGUF;输出是可复用的 tokenizer/tensor 资产目录。
A. 模型资产模块
将 tokenizer 词表、token 类型、merge 规则和 chat template 导出为可检索文件。
按 GGUF 数据偏移把每个 tensor 的原始量化 payload 复制为独立 BIN。
写出每项资产的大小和 SHA-256 的 manifest。
输入是模型 manifest 和 GGUF;输出是可复用的 tokenizer/tensor 资产目录。
B. tokenizer 打包模块
将 tokens.jsonl 变成按 token id 排列的 index 与 byte payload。
将 merge 文本变成 A53 可顺序读取的 16 字节记录。
建立 byte-to-token、merge pair 和 special token 索引。
将六类 section 写入单一 Q25TOKRT image。
由 C API 将 image 映射为 bundle view 和 encode view。
输入是导出的 tokenizer;输出是 Q25TOKRT 和对它的只读 C view。
C. Host 参考计算模块
读取原始量化块并按 GGML 类型反量化。
计算 embedding、RMSNorm、Q/K/V 投影、RoPE、attention、MLP、final norm、lm_head 的选定范围或完整 forward。
对固定 prompt/token ids 写出中间向量、logits、top-k 和 JSON manifest。
从同一份数据裁剪 HLS kernel 所需的输入行和期望输出。
输入是 tensor payload 和 token ids;输出是 golden JSON 与 HLS fixture。
D. HLS/PL 算子模块
| 算子族 | 算法范围 | 数据类型/尺寸 | 输出 |
|---|---|---|---|
| embedding/RMSNorm | lookup、归一化、选定 top1 bridge | F32、Q8_0 | hidden/normalized vector 或候选分数 |
| QKV/RoPE | norm、Q/K/V 线性投影、旋转位置编码 | SmolLM2:576 hidden,Q5_0/Q5_1 | Q/K/V 向量 |
| attention | masked softmax、V 加权求和 | 最多 8 token,64 维 head | probabilities、context vector、checksum |
| MLP | norm、gate/up、SiLU、down、residual | SmolLM2:576 到 1536 到 576 | residual output |
| quant matvec | 选定行或 row tile 的反量化 dot | Q4_K/Q5_K/Q6_K/Q8_0 或 int8 | partial/dot 输出 |
| lm_head | 量化行 scoring、top-k | Q8_0 或 int8 页 | token id 与分数 |
每个 kernel 只处理传入的 DDR 缓冲区和控制寄存器。kernel 间不存在通过 UART 自动串联的调用。
E. PS/A53 模块
启动时可选地从编译期给定地址打开 Q25TOKRT。
从 UART0 或 UART1 读取一行命令,同时向两个 UART 发送响应。
保存 token prompt、文本 prompt、当前模型名称和 tokenizer image 状态。
TEXT_PROMPT 使用 BPE image 或逐字节 fallback,打印 token ids。
TEXT_GENERATE 组合已有 token 与固定 " ok" 后缀,解码并打印文本。
将 P4 的三个新命令转交 q25_p4_runtime_dispatch。
F. 板级执行模块
生成或收集 XSA、BSP、ELF、SD payload、runtime image。
为 board run 建立报告目录和步骤日志。
可从指定 COM 端口采集 UART transcript,也可接受已有 transcript 文件。
检查 NL_INFO、NL_PROMPT_IDS、NL_GENERATE、NL_RESULT_IDS、TEXT_PROMPT、TEXT_GENERATE、TEXT_RESULT 等标记。
归档 transcript、构建物、manifest 与验证结果。
G. 产物验证模块
| 验证对象 | 方式 | 输出 |
|---|---|---|
| tokenizer/tensor 文件 | size 与 SHA-256 | manifest 条目 |
| tensor 导出 | 逐文件大小与 SHA-256 | export verification JSON |
| HLS fixture | manifest 中的输入与期望值 | CSim/cosim/csynth 日志 |
| UART transcript | 必需协议标记和模板/synthetic 标记 | uart_transcript_validation.json |
| board archive | 归档目录与步骤记录 | archive verification 结果 |