系统流程
flowchart LR A[Ollama manifest / GGUF blob] --> B[GGUF 解析] B --> C[Tokenizer 资产导出] B --> D[量化 tensor payload 导出] C --> E[PS tokenizer bundle] E --> F[Q25TOKRT runtime image] D --> G[Host quant 参考计算] D
从模型文件到板级输出
flowchart LR
A[Ollama manifest / GGUF blob] --> B[GGUF 解析]
B --> C[Tokenizer 资产导出]
B --> D[量化 tensor payload 导出]
C --> E[PS tokenizer bundle]
E --> F[Q25TOKRT runtime image]
D --> G[Host quant 参考计算]
D --> H[HLS fixture 准备]
H --> I[HLS CSim / cosim / csynth]
F --> J[PS/A53 UART 应用]
J --> K[ZCU106 UART transcript]
K --> L[transcript 验证与归档]
G --> M[golden JSON]
I --> N[HLS 报告]逐步说明
| 步骤 | 执行模块 | 读取 | 写入 | 具体工作 |
|---|---|---|---|---|
| 1 | GGUF 检查 | 本地 Ollama manifest 与 blob | 模型结构 JSON | 读取 GGUF 版本、metadata、tensor 名称、维度、类型和偏移。 |
| 2 | tokenizer 导出 | GGUF tokenizer metadata、smoke context ids | tokens.jsonl、merges.txt、token type、chat template、manifest | 把词表、merge 规则和特殊 token 从 GGUF 拆出。 |
| 3 | tensor 导出 | GGUF tensor 目录与 blob | 每个 tensor 的原始 BIN、导出 manifest | 按 GGUF 偏移复制原始量化 payload,保留 Q4_K/Q5_K/Q6_K/Q8_0 等原始布局。 |
| 4 | PS bundle | tokenizer 导出目录 | token index、token bytes、merge table | 为 A53 C 代码生成小端二进制表。 |
| 5 | runtime image | PS bundle 和编码索引 | Q25TOKRT image、manifest | 组合六个 section,使 A53 能从一块内存打开 tokenizer。 |
| 6 | host reference | tensor payload、prompt/token ids | golden JSON、logits、top-k、层中间值 | 在 PC 上执行量化解码、投影、attention/MLP 或完整 forward。 |
| 7 | HLS fixture | 真实 tensor 子集与 host golden | fixture BIN、常量头、fixture manifest | 把指定行、输入向量、期望输出交给独立 kernel 的 testbench。 |
| 8 | HLS 构建 | kernel C++、fixture、HLS cfg | CSim/cosim/csynth 输出 | 将独立算子编译、仿真或综合。 |
| 9 | PS UART | UART 命令、可选 Q25TOKRT 地址和大小 | 串口行、ELF | 解析命令、tokenize/detokenize,并输出协议标记。 |
| 10 | 板级处理 | ELF/XSA/SD 文件、串口 | transcript、验证 JSON、archive | 准备载荷、采集串口、检查命令响应标记、归档产物。 |
一次文本命令的实际路径
sequenceDiagram
participant Host as 串口主机
participant App as nl_uart_app.c
participant Image as Q25TOKRT image
participant Bundle as tokenizer bundle C API
Host->>App: TEXT_PROMPT UTF-8 文本
alt runtime image 已打开
App->>Image: q25_nl_tokenizer_runtime_image_open 在启动时完成
App->>Bundle: q25_nl_tokenizer_bundle_encode_bpe_bounded
Bundle-->>App: token id 数组与统计
else image 未配置
App->>App: q25_tokenize_utf8_bytes
App-->>App: 一字节一 token 的 fallback
end
App-->>Host: TEXT_PROMPT 与 TEXT_PROMPT_IDS
Host->>App: TEXT_GENERATE N
App->>Bundle: 编码固定后缀或使用 fallback
App->>Bundle: q25_nl_tokenizer_bundle_detokenize
App-->>Host: TEXT_RESULTTEXT_GENERATE 在此路径中不运行 transformer 或 HLS kernel。TOKEN_STEP 的命令形状已存在,但由 stub 返回固定规则结果。