2301_76761127/vn-address-normalizer-npu
模型介绍
文件和版本
Pull Requests
讨论
分析

qox/vn-address-normalizer — Ascend NPU 迁移验收

1. 模型身份

  • 模型:qox/vn-address-normalizer(越南语地址规范化 seq2seq Transformer: src_emb 287/tgt_emb 269 字符级词表,d_model=256,encoder 4 层 / decoder 3 层, norm_first + gelu,约 6.59M 参数,fp32)
  • 官方 URL:https://huggingface.co/qox/vn-address-normalizer (镜像:https://ai.gitcode.com/hf_mirrors/qox/vn-address-normalizer)
  • 固定 revision:5d0de6d07356774e861f72684e4807bdbc137351
  • 权重:model.safetensors;许可:MIT

2. 硬件软件矩阵(平台栈未替换)

  • 官方 Hosted 昇腾容器,逻辑设备 npu:1,设备名 Ascend910_9362
  • 使用官方 Hosted 容器预装的 CANN、PyTorch 和 torch_npu,不由本仓替换
  • 模型级依赖(见 requirements.txt):safetensors、numpy

3. 全新容器准备

权重从官方固定 revision 快照离线加载(本仓不含权重):

git clone https://ai.gitcode.com/hf_mirrors/qox/vn-address-normalizer ./model
git -C ./model checkout 5d0de6d07356774e861f72684e4807bdbc137351
git -C ./model lfs pull

python -m venv .venv --system-site-packages
. .venv/bin/activate
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

inference.py 检查必需文件存在,但不在运行时校验仓库身份、revision、SHA、manifest 或固定参数量。

4. 唯一推理入口

. .venv/bin/activate
python inference.py --model_path ./model --device npu:0 \
  --seed 20260816 --output_json npu.json

加载路径:按快照 config.json 超参重建 S2S 架构(代码 vendored 自上游 MIT 发布的 inference.py,逐行一致),safetensors load_file + load_state_dict 装载;推理复刻上游 encode + 逐步 step 路径: encoder(src_key_padding_mask=(src==0))→ 自 BOS=2 起贪婪 argmax 解码, 固定 32 步(不设 EOS 早停,保证输出契约恒定)。

5. 固定样本、输出计数与有限值要求

完整测试用例为 8 组固定合成源 token-id 序列(逐样本种子固定:BOS=2 + 长度 20+i×7 的随机 body(id∈[4,286])+ EOS=3,PAD=0 补齐至 MAX_SRC=128)。每条样本输出 32 个生成 token id,总计 8×32=256 值;计数、样本身份、输出形状、logits 有限值任一不符即失败。

降级范围声明(degraded scope,协调者 tracker note 2026-08-17 UNBLOCK 批准): 上游从未发布 src_vocab.json / tgt_vocab.json(其自有 inference.py 要求二者 位于 model_v3_final/,但发布快照该目录仅有 clean_canonicals.json 与 legacy_ward_idx.json),文本级规范化因此无法从已发布制品复现。本验收绕过文本 预处理,直接向 vendored S2S 检查点喂合成 token-id 序列(id 限制在声明词表范围 内:src<287、tgt<269);不覆盖上游 normalize() 的文本解析、trie 检索与 canonical 映射逻辑(见 §10)。

6. Full-NPU-only 验收契约

本轮不运行 CPU Golden,不做 CPU/NPU 精度比较。验收项为真实 NPU 设备链、8 个样本、256 个完整有限输出、exit_status=0,以及活跃 PID/完整命令/npu-smi 的两个时间点证据。上游词表缺失的降级边界保持 §5 所述,不扩大到文本规范化质量结论。

7. 真实 NPU 运行与实测指标

RUN:audit/hosted-npu-20260817T165139Z;活跃推理 PID 13022。

  • requested/model/tensor/output 均为 npu:1,设备名 Ascend910_9362
  • 8 个固定 token-id 样本、256 个生成 id,logits 有限,finite_values=True、 exit_status=0
  • CPU_GOLDEN_RUN=NO,ACCURACY_COMPARE_RUN=NO
  • 降级范围:仅批准的合成 token-id 输入;生成语义质量未评估
  • 结论:FULL_NPU_RESULT=PASS

8. 真实证据图

  • assets/agent_workflow.png:完整提示词与 V4F 初段规划回复
  • assets/npu_device_call.png:PID 13022 存活早期,完整命令与 npu-smi
  • assets/model_result.png:设备链、计数、降级边界、有限值和 PASS 摘要

稍晚时点的第二组真实截图已单独归档。

9. Fail-closed 门禁

NPU 不可用、实际 model/tensor/output 任一不在 NPU、输出数量不为 256、logits 出现 NaN/Inf、 退出码非零、降级边界扩大或证据截图缺失,均禁止提交。

10. 提交与限制

唯一验收入口为 inference.py。本轮未运行 CPU Golden 或精度比较,生成质量 未评估;降级范围:因上游未发布 src/tgt 词表,本验收仅覆盖 S2S 检查点的 token-id 域前向/解码,不覆盖文本 规范化端到端链路(§5)。完整 NPU JSON、日志与 PID 采样保留在 Hosted 审计区, 本仓提供最小复现代码、摘要和三张真实截图。

本仓为 2301_76761127 队伍交付件(与备份账号合并提交)。