#+NPU
本文档记录 XiYanSQL-QwenCoder-3B-2502 在华为昇腾 NPU(Ascend 910B)上的原生 PyTorch 适配、精度验证与性能评测结果。
XiYanSQL-QwenCoder-3B-2502 是 XGenerationLab 开源的 Text-to-SQL 专用模型,基于 Qwen2ForCausalLM 架构微调,在多个 SQL 生成 benchmark 上表现优异。本验证证明该模型可在昇腾 NPU 上通过 torch_npu 直接加载与推理,无需修改模型权重或结构。
相关获取地址:
参考文档:
| 组件 | 版本 |
|---|---|
CANN | 8.5.1 |
PyTorch | 2.9.0+cpu |
torch-npu | 2.9.0.post1+gitee7ba04 |
transformers | 4.57.6 |
Python | 3.11.14 |
1 x Ascend 910B4(32 GB HBM)./model_cache/XGenerationLab/XiYanSQL-QwenCoder-3B-2502pip install torch==2.9.0 transformers>=4.42.0 torch-npu注意:
torch-npu需与当前 CANN 版本匹配,请参考昇腾官方安装指南。
python inference.py \
--model_path ./model_cache/XGenerationLab/XiYanSQL-QwenCoder-3B-2502 \
--device npu \
--dtype bfloat16 \
--prompt "-- 查询所有年龄大于30岁的用户\nSELECT" \
--max_new_tokens 128示例输出:
[INFO] Using device: npu
[INFO] Generated: * FROM users WHERE age > 30;inference.py 内置自动设备选择逻辑(npu > cuda > cpu),并可通过 --device 显式指定:
# CPU 推理
python inference.py --model_path <path> --device cpu --dtype float32
# CUDA GPU 推理
python inference.py --model_path <path> --device cuda --dtype bfloat16
# NPU 推理(默认自动选择)
python inference.py --model_path <path> --device npu --dtype bfloat16使用 accuracy_run.py 对 NPU 推理结果与 CPU 基线进行逐 logits 对比。
| 指标 | 数值 |
|---|---|
| Mean Relative Error | 0.0607% |
| Max Relative Error | 652.85(注:max 指标受 logits 中接近零的离群点影响,不具实际参考意义) |
| RMSE | 0.000166 |
| Cosine Similarity | 1.0000 |
| Top-1 Token Accuracy | 100.00% |
| 生成文本一致性 | 完全匹配 |
结论:NPU 推理精度满足 相对误差 < 1% 的严格要求,生成结果与 CPU 基线完全一致。
运行评测:
python accuracy_run.py \
--model_path ./model_cache/XGenerationLab/XiYanSQL-QwenCoder-3B-2502 \
--device npu \
--dtype float32 \
--max_new_tokens 32 \
--output run_log.txt \
--json accuracy_result.json测试条件:单卡 Ascend 910B4,max_new_tokens=128,do_sample=False,预热 2 轮,正式测试 5 轮取平均。
| 指标 | 数值 |
|---|---|
| Avg Latency | 16.61 s |
| Throughput | 7.71 tokens/s |
| 指标 | 数值 |
|---|---|
| Avg Latency | 18.53 s |
| Throughput | 6.91 tokens/s |
说明:本模型配置为
bfloat16,推荐生产环境使用bfloat16以获得更优的吞吐与显存占用。
运行性能测试:
python inference.py \
--model_path ./model_cache/XGenerationLab/XiYanSQL-QwenCoder-3B-2502 \
--device npu \
--dtype bfloat16 \
--benchmark \
--max_new_tokens 128.
├── inference.py # NPU 适配推理脚本(支持 npu/cuda/cpu 自动选择)
├── accuracy_run.py # 精度与性能评测脚本
├── run_log.txt # 评测运行日志(含 PASS/FAIL 结论)
├── accuracy_result.json # 结构化评测结果
├── readme.md # 本文档
└── model_cache/
└── XGenerationLab/
└── XiYanSQL-QwenCoder-3B-2502/--device 强制指定。bfloat16,在 NPU 上可直接使用;如需严格精度对齐验证,可使用 float32。bfloat16 下约占用 6~7 GB HBM,请确保 NPU 显存充足。0.1)以保持生成 SQL 的确定性。本验证基于公开模型与开源工具链完成,仅供社区参考。实际部署效果受 CANN 版本、驱动版本、硬件批次等因素影响,请以实际环境测试为准。