本科毕设“基于昇腾 AI 架构的高效化无人机射频信号识别”的推理端代码仓库,对应云端仓库为 wh-wang132/ResNet_Acl,上游训练端仓库为 wh-wang132/ResNet。
当前仓库聚焦两类工作:
src.accuracy:基于 ACL 的 OM 精度评测src.efficiency:基于 ACL 的 OM 效率评测src.visualization:离线聚合精度/效率产物并生成论文分析图表
同时提供一个不触发真实 ACL 推理的仓库预检入口:
src.validate:校验数据集、split manifest、ATC 产物、样本 shape/dtype 契约,并预检src.efficiency所需的 complexity 前置条件
ResNet_Acl/
├── Data/ # 24 类无人机射频 .npy 样本
├── input/
│ ├── atc/
│ │ ├── pruning_fp16/ # 剪枝 + FP16 导出的 OM 产物
│ │ └── amct_deploy/ # AMCT 量化部署产物
│ └── splits/
│ └── dataset_split__train0.60_val0.20_test0.20_seed42.json
├── output/
│ ├── accuracy/ # 精度评测输出
│ ├── efficiency/ # 效率评测输出
│ └── visualization/ # 论文插图输出
├── autorun/ # 遍历全部 artifact 的批量脚本
└── src/
├── accuracy/
├── efficiency/
├── validate/
└── common/
项目使用 pixi 管理运行环境,pixi.toml 当前固定:
- Python
3.12 - Ascend CANN Toolkit
8.5.0 - Ascend 310B ops
8.5.0
仓库运行时环境变量放在 .envrc 中,当前会完成:
- 设置
REPO_ROOT source .pixi/envs/default/Ascend/ascend-toolkit/set_env.sh- 补充
PYTHONPATH=${REPO_ROOT}/src
推荐使用 direnv 自动加载该环境:
sudo apt-get install direnv
echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
source ~/.bashrc
direnv allow如果不使用 direnv,则在执行任何推理或校验命令前手动加载:
source .envrc下文所有命令默认都建立在 .envrc 已加载的前提下。
安装后可先做仓库预检,不触发真实 ACL 推理:
pixi run python -m src.validate --sample_limit 8默认 src.validate 也会预检 src.efficiency 所需的 complexity 条件,因此需要 atc 可用,并会调用 atc --mode=1 做离线 OM 解析。如果只想排查数据、manifest 和 shape/dtype 契约,可显式跳过:
pixi run python -m src.validate --sample_limit 8 --skip_complexity_precheck如果只想检查某个分支或单个 artifact:
pixi run python -m src.validate --branch pruning_fp16 --sample_limit 8
pixi run python -m src.validate \
--branch pruning_fp16 \
--artifact_path input/atc/pruning_fp16/resnet18_2d/from_ratio0.60_steps5_global_ft10_bs64 \
--sample_limit 8查看命令行参数:
pixi run python -m src.accuracy --help
pixi run python -m src.efficiency --help
pixi run python -m src.validate --help
pixi run python -m src.visualization --help精度评测示例:
pixi run python -m src.accuracy \
--branch pruning_fp16 \
--artifact_path input/atc/pruning_fp16/resnet18_2d/from_ratio0.60_steps5_global_ft10_bs64 \
--num_instances 1 \
--buffer_depth 1效率评测示例:
pixi run python -m src.efficiency \
--branch amct_deploy \
--artifact_path input/atc/amct_deploy/resnet18_2d/from_ratio0.80_steps16_global_ft10_bs64 \
--num_instances 1 \
--buffer_depth 1 \
--warmup_steps 20 \
--repeat 5批量遍历全部 artifact:
sh autorun/autorun_accuracy.sh --limit 128
sh autorun/autorun_efficiency.sh --limit 128 --repeat 3
sh autorun/autorun_visualization.sh离线生成论文插图:
pixi run python -m src.visualization --strict- 当前 ATC 产物按
batch_size=1编译,推理端只接受--batch_size 1 - 数据样本默认来自
Data/**/*.npy - 默认 split manifest 为
input/splits/dataset_split__train0.60_val0.20_test0.20_seed42.json - 当前内置推理分支只有
pruning_fp16和amct_deploy atc_summary.json中stage、branch、source_interface、resolved_input_shape是推理端强依赖字段- 目前 ACL dtype 映射仅支持
float16和float32
src.accuracy 默认写到 output/accuracy/<branch>/...,核心输出包括:
summary.jsonconfusion_matrix.csvconfusion_matrix.pngper_class_metrics.csv
src.efficiency 默认写到 output/efficiency/<branch>/...,核心输出包括:
summary__instances{N}_buffer{M}.json
其中 summary__instances{N}_buffer{M}.json 现在额外包含:
parameter_count:直接透传atc_summary.json中的参数量operation_count:按单次前向的理论MACs统计operation_count_included_op_types:当前被计入MACs的 OM op typeoperation_count_excluded_op_types:当前显式忽略的 OM op type
当前 operation_count 只统计卷积和矩阵乘家族算子,不把 Add、Cast、TransData、量化/反量化等部署辅助算子混入理论 MACs。
src.visualization 默认写到 output/visualization/paper/,核心输出面向论文插图,包括:
index.jsonpaper_summary.mdtables/paper_top5_candidates.csvtables/paper_branch_pair_summary.csvtables/paper_pareto_candidates.csvplots/fig1_pareto_error_throughput.svgplots/fig2_pareto_error_latency.svgplots/fig3_fp16_int8_pair_summary.svgplots/fig4_complexity_tradeoff.svg- 可选
plots/fig5_per_class_recall_delta.svg
该模块只消费已有 output/accuracy 与 output/efficiency,不导入 ACL、不调用 ATC、不触发真实推理。论文图默认使用 SVG,可通过 --format png --dpi 300 生成位图版本。由于大多数模型精度高于 0.99,涉及精度对比的主图使用 error_rate = 1 - accuracy 并采用对数坐标轴;涉及计算量、参数量和 latency 的主图也采用对数坐标轴。当前图表会客观呈现本次测量中 FP16 pruning 与 INT8 AMCT 的精度、吞吐和延迟差异。
训练端 wh-wang132/ResNet 需要稳定提供:
- 类别顺序和
class_to_idx .npy样本布局- 导出 ONNX/ATC 所需的输入输出 shape 与 dtype
model_name / experiment_name维度下的实验命名
推理端 wh-wang132/ResNet_Acl 消费这些产物并执行 ACL 推理与评测。
详细目录约定和字段契约见 docs/interface_contract.md。