源仓库:
qox/vn-address-normalizer(HuggingFace) 任务:越南语地址规范化(address-normalization)—— 非规范地址 → 2025 后行政规范地址,seq2seq + 字典约束 beam search
将越南语地址字符串(可带重音或 ASCII slug,如 p tan dinh q1 tphcm)规范化为
规范行政地址(如 Phường Tân Định, Thành phố Hồ Chí Minh)。模型在 187,817 条
规范地址数据库上做 Trie 约束解码,输出保证在库内。
自定义 S2S Transformer(与官方权重布局完全一致,NPU 算子化分解实现):
nn.TransformerEncoderLayer(d_model=256,4 头,d_ff=1024,GELU)nn.TransformerDecoderLayer(同维度)nn.TransformerEncoderLayer/DecoderLayer 的 forward 会路由到融合算子
aten::_transformer_encoder_layer_fwd,该算子 NPU 后端不支持,torch_npu 会整层
回退 CPU(性能损失)。本仓库将 Enc/Dec 层分解为 MultiheadAttention(SDPA) + LayerNorm + Linear + GELU 等纯 PyTorch 算子,权重布局与官方 state_dict 完全一致
(已在 CPU 验证与官方输出逐位一致,decoder logits max_abs_diff = 0.0),
Transformer 前向全量运行于 NPU,无 CPU fallback;| 组件 | 版本 |
|---|---|
| 昇腾 NPU | Ascend 910 |
| CANN | 8.5.1 |
| Python | 3.11 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
pip install -r requirements.txt# 默认用例(5 个官方示例地址,自动选择 NPU)
python3 inference.py --device npu --device_id 0
# 自定义地址
python3 inference.py --device npu --device_id 0 --input "Phuong Ba Dinh Ha Noi"npu:0(Ascend910_9362,CANN 8.5.1,PyTorch 2.9.0 / torch_npu 2.9.0.post1)valid=5/5,finite_all=True,NPU_INFERENCE_PASS=Truep tan dinh q1 tphcm → Phường Tân Định, Thành phố Hồ Chí Minh(conf=-5.94,958.0ms)4fcaae4f7a2e725aad234533e579884daa227c761b82c1c6a82c7ff73bbc2e3a详细证据见 results/(npu_result.json、inference_evidence.txt、npu_smi.txt)。
inference.py 推理脚本(必选交付)
readme.md 部署说明文档(必选交付)
requirements.txt 环境依赖清单
model_v3_final/ 模型权重与词表/规范地址库(model.safetensors 26MB Git LFS)
results/ 真实 NPU 验证证据mit