Qwen2.5 学习 Wiki
NOTES

模块接口参考

本页只列出当前仓库的公开调用面。`样板` 标记表示命令已实现解析和返回格式,但不执行模型推理。

Qwen2.5/04_Module_Interfaces_CN.md 2026-07-13 约 11 分钟阅读

本页只列出当前仓库的公开调用面。样板 标记表示命令已实现解析和返回格式,但不执行模型推理。

1. Python 命令行接口

入口必填参数产物功能
scripts/export_gguf_tokenizer_assets.py--manifest--out-dirtokenizer 导出目录从 GGUF metadata 写出词表、merge、token type、chat template 和 manifest。可重复传入 --smoke
scripts/export_gguf_tensor_payloads.py--inspect-json--out-dirtensor BIN 与 manifest按 inspect JSON 中的偏移复制每个 tensor 的原始 payload。
scripts/prepare_ps_tokenizer_bundle.py--tokenizer-dir--out-dirPS bundle写入 token index/bytes 和 merge table。
scripts/pack_ps_tokenizer_runtime_image.py可选 --out-root--model-keyQ25TOKRT image从默认或指定模型资产目录读取 bundle/index,封装成 6-section image。
scripts/run_qwen25_full_quant_token_step_logits_golden.py可选 --export-manifest--tokenizer-dir--smoke-en--smoke-zh--layer0-attention-reference--layer0-mlp-reference--out--max-layers--top-k--forceQwen logits golden运行 Qwen2.5 量化 forward。
scripts/run_smollm2_full_quant_logits_golden.py可选 --export-manifest--smoke-report--tokenizer-dir--out--max-layers--top-k 与 layer 诊断开关SmolLM2 logits golden运行 SmolLM2 量化 forward。
ZCU106/scripts/validate_nl_uart_transcript.pytranscript、--mode可选 validation JSON检查 token/text/both 模式必需的协议标记。
ZCU106/scripts/run_q25_nl_board_acceptance.ps1report/bundle/SD/transcript 参数acceptance manifest 和归档运行 preflight、可选串口采集、归档与 archive 验证。

2. UART 文本协议

协议文件:ZCU106/protocol/NL_UART_PROTOCOL.md。每条命令是一行 ASCII 命令头;TEXT_* 后面是 UTF-8 文本。

命令参数应用的处理模块主要响应
HELPprint_helpNL_HELP 与可用命令列表。
INFOhandle_info板型、模型名、tokenizer profile、runtime image 状态。
LOAD_MODEL<smollm2_135m|qwen2p5_0p5b>handle_load_model记录字符串模型选择,返回 NL_MODEL_LOADED
NL_PROMPT_IDS空格分隔 token idshandle_prompt_ids保存最多 128 个 token,返回数量。
NL_GENERATE最大 token 数handle_generate返回最多 16 个演示 token 与 NL_RESULT_IDS
TEXT_PROMPTUTF-8 文本handle_text_promptBPE 或 byte fallback 编码,返回 TEXT_PROMPT_IDS
TEXT_GENERATE最大 token 数handle_text_generate拼接最多 16 个固定后缀 token 并返回 TEXT_RESULT
STATUSdispatch模型名、tokenizer、文本 token 数和 image 状态。
PINGdispatchPONG
MODEL_LOADmodel=... 或模型名P4 样板返回 MODEL_LOAD_RESULT status=loaded ... tokenizer=stub tensors=stub
TOKEN_STEPtoken_idpositioncontextP4 样板返回输入 token 加一的 TOKEN_STEP_RESULT status=stub
TEXT_STEPUTF-8 文本或 utf8_hex=P4 样板返回 TEXT_STEP_RESULT status=stub ... text=ok

3. PS tokenizer C API

头文件:ZCU106/ps_app/nl_uart_app/src/q25_nl_tokenizer_bundle.h

API参数返回/写入用途
q25_nl_tokenizer_bundle_vocab_size(view)bundle viewsize_t返回词表条目数。
q25_nl_tokenizer_bundle_merge_count(view)bundle viewsize_t返回 merge 记录数。
q25_nl_tokenizer_bundle_get_token(view,id,out)bundle、token idq25_nl_token_span查询 token 的 bytes 偏移、长度和类型。
q25_nl_tokenizer_bundle_get_merge(view,index,out)bundle、merge 下标q25_nl_merge_record查询左右 token、合并 token 和 rank。
q25_nl_tokenizer_bundle_inspect(view,out)bundleq25_nl_tokenizer_bundle_stats汇总词表/merge 统计。
q25_nl_tokenizer_bundle_detokenize(view,ids,count,flags,out,cap,need)token idsUTF-8 bytes支持跳过特殊 token、追加 NUL。
q25_nl_tokenizer_bundle_encode_bpe_bounded(view,input,...,out,...)UTF-8 bytes、scratch、容量token ids、encode stats执行有界 BPE 编码。
q25_nl_tokenizer_runtime_image_open(image,size,bundle,encode,info)Q25TOKRT 内存地址三个只读 view打开 image 并验证 section 边界。

返回码:0 表示成功;-1 空指针;-2 布局;-3 越界;-4 token id;-5 merge。

4. HLS kernel 接口

所有列出的 kernel 使用 AXI4 m_axi 访问输入/输出数组,使用 AXI4-Lite s_axilite 传递标量控制参数和启动/完成控制。数组由调用者放入 DDR;kernel 不读取 UART,也不解析 GGUF 文件。

KernelDDR 输入AXI-Lite 参数DDR 输出功能
layer0_q6k_down_projectionQ6_K rows、4864 维 F32 inputrow_countrow_bytes最多 4 个 F32 dot对 Qwen layer0 ffn_down 的选定行做 Q6_K 解码和 dot。
smollm2_attention_coremasked score 矩阵、V 矩阵seq_lenprobabilities、attention output、checksum在最多 8 个 token、64 维 head 上做 softmax 和 value mix。
smollm2_qkv_rope_projectionhidden、RMSNorm weight、Q/K/V rowsposition、qtype、row bytes、epsilon、RoPE baseQ/K RoPE、VRMSNorm 后解码 Q5_0/Q5_1 投影,再给 Q/K 应用 RoPE。
smollm2_mlp_full_layerresidual、norm、gate/up/down rowsoutput rows、qtype、row bytes、epsilonresidual outputRMSNorm,Q5_0 gate/up,SiLU 逐元素相乘,Q5_K down,再加 residual。
smollm2_lm_head_streaming_topkhidden、Q8_0 lm_head rowsrow limit、row bytes、tile rows、Ktoken id、row index、score分块扫描词表,保留最多 5 个最高分。
q25rt_i8_matvec_tileint8 weights、int8 activationtile rows、input dim、stridesint32 dot tile最多 16 行、4096 维的 int8 矩阵向量乘。
q25rt_i8_lm_head_pagedint8 page weights、activation、page base tokenpage count、weight/output stride每行 dot、top-4 token/dot、status每页 16 行,扫描最多 16 页。
smollm2_quant_matvec_common_h0_rowblockweight/activation buffersqtype、shape、tile 描述zeroed partial output、状态共用 row-block ABI 的接口/fixture 模块;当前不消费输入数据。

5. P4 runtime 样板 C API

头文件:q25_p4_runtime_cmd_stub.h

API输入输出作用
q25_p4_runtime_stub_init(state)state 指针清零 state初始化 model_loaded、token/text step 计数。
q25_p4_runtime_command_is_legacy(line)UART 行0/1判断现有协议命令,避免由 P4 接管。
q25_p4_runtime_dispatch(state,line,response,cap)UART 行格式化响应、handled 状态分发 MODEL_LOADTOKEN_STEPTEXT_STEP