用途:把任意 HuggingFace 模型迁移到昇腾 NPU 的 torchair 图模式(torch.compile),做数值校验并测量加速效果。脚本与模型无关,靠配置驱动输入、递归比较输出,换模型通常只需改 --model_name_or_path。
主要能力:scripts/torch_air_infer.py 做单后端推理与延迟统计;scripts/benchmark.py 对比 torchair / npu_eager / cpu 三个后端的精度与性能,输出 JSON 和 Markdown;scripts/run_benchmark.sh 为通用驱动,依次准备模型、试跑推理、跑基准。
关键约束:必须先导入 torch_npu 再导入 torchair,否则图模式不生效。示例:先 import torch、import torch_npu,再 import torchair,随后用 torchair.CompilerConfig() 与 torchair.get_npu_backend(compiler_config=config) 调 torch.compile(model, backend=npu_backend, dynamic=False)。
使用方式:先 source $ASCEND_HOME/ascend-toolkit/set_env.sh,可设 export HF_ENDPOINT=https://hf-mirror.com。按顺序执行:CPU eager 试跑确认输入输出可解析;NPU eager 确认模型能在 NPU 跑;NPU torchair 图模式即迁移目标;最后跑三后端对比,例如 python scripts/benchmark.py --model_name_or_path <path-or-id> --backends torchair,npu_eager,cpu --device npu --dtype float16 --batch_size 1 --warmup 10 --iterations 100 --output_dir benchmark_results/<model>。需要严格 <1e-3 对齐时用 --dtype float32 重跑。也可用 bash scripts/run_benchmark.sh <path-or-id> [out_subdir] 一步完成。
精度与性能门槛:以 CPU fp32 为基准,指标为余弦相似度、最大绝对差、最大相对误差。PASS 为 max_abs_diff 不大于 1e-3 且 cosine 不低于 0.999;PASS_COSINE 表示余弦达标(fp16 下常见);否则 FAIL。性能上首次迭代为编译开销单独报告,稳定期用不少于 100 次迭代统计 p50/p95/p99,每次计时结束前调 torch.npu.synchronize(),并报告吞吐与峰值 HBM。
适用场景与排查:适用于模型在昇腾 NPU 上迁移验证、精度对齐与加速评测。CPU 步骤失败说明模型需要自定义输入构建(见 references/methodology.md 的 BaseModelLoader.build_inputs);NPU eager 失败多为环境问题,检查导入顺序与 set_env.sh;torchair 编译失败按 references/troubleshooting.md 排查,可回退 npu_eager;精度不达标先比较 torchair 与 npu_eager,相同则为 fp16 舍入,不同则为图 bug;权重受限无法下载时可构造配置初始化随机替身,仅用于后端比较而非任务精度。环境版本矩阵、编译器配置、输出预期等详见 references 目录。