#NPU
EfficientNet-B6 是 Google 提出的 EfficientNet 系列中的较大规模变体,基于复合缩放(Compound Scaling)方法对深度、宽度和分辨率进行统一缩放。该模型在 ImageNet 上预训练,具备较高的图片分类精度,适用于通用图像识别场景。
google/efficientnet-b6| 项目 | 说明 |
|---|---|
| NPU 型号 | Ascend 910B4 |
| NPU 健康状态 | OK |
| HBM 容量 | 32768 MB |
| 架构 | aarch64 |
| 项目 | 版本 |
|---|---|
| Python | 3.11.14 |
| torch | 2.9.0+cpu |
| torch_npu | 2.9.0.post1+gitee7ba04 |
| transformers | 4.57.6 |
| torchvision | 0.24.0 |
| pillow | 12.2.0 |
| requests | 2.33.1 |
| numpy | 1.26.4 |
pip install -r requirements.txt若当前环境已安装 torch 和 torch_npu,请勿强制覆盖,以免破坏现有 CANN 驱动兼容性。
本工程默认通过 Hugging Face Transformers 的 from_pretrained 接口加载模型权重。若直接访问 Hugging Face 受阻,脚本已内置环境变量:
os.environ.setdefault("HF_ENDPOINT", "https://hf-mirror.com")权重将从 https://hf-mirror.com/google/efficientnet-b6 镜像下载并缓存到本地。
python inference.pyinference.py 使用 Transformers 专用类(EfficientNetImageProcessor + EfficientNetForImageClassification)加载模型,若不可用则自动回退到 AutoImageProcessor + AutoModelForImageClassification。
npu:0assets/test.jpg 进行推理logs/inference.loglogs/prediction.txt实际运行结果(已完成):
Top-5 predictions:
1. kite: 0.089300
2. black stork, Ciconia nigra: 0.046627
3. bald eagle, American eagle, Haliaeetus leucocephalus: 0.034968
4. parachute, chute: 0.020273
5. bee eater: 0.019923注意:
assets/test.jpg为随机生成的 224x224 占位图(因网络受限无法下载公开图片)。若需获得更具语义意义的分类结果,请替换为真实图片。
eval_accuracy.py 使用同一张 assets/test.jpg,在 CPU 和 NPU 上分别执行一次前向推理,对比 logits 与概率分布差异。
python eval_accuracy.py评估指标:
max_abs_diff (logits): CPU 与 NPU 输出 logits 的最大绝对差mean_abs_diff (logits): 平均绝对差prob_max_diff: Softmax 概率最大差值top1_match: Top-1 预测是否一致prob_error < 1%: 概率最大差是否小于 1%实际运行结果(已完成):
max_abs_diff (logits): 0.00282216
mean_abs_diff (logits): 0.00048342
prob_max_diff: 0.00014306
top1_match: True
prob_error < 1%: True
Assessment: CPU/NPU floating-point implementation difference.结论:NPU 推理与 CPU 基线结果一致,精度差异在浮点实现误差范围内,模型适配正确。
benchmark.py 在 NPU 上预热 5 次,正式测试 20 次,统计推理延迟与吞吐量。
python benchmark.py实际运行结果(已完成):
| 指标 | 数值 |
|---|---|
| 测试轮数 | 20 |
| 平均延迟 | 61.074 ms |
| 最小延迟 | 48.062 ms |
| 最大延迟 | 106.567 ms |
| 吞吐量 | 16.37 images/s |
| 文件 | 说明 |
|---|---|
logs/env_check.log | 环境检查记录(npu-smi、Python 包版本、NPU 可用性) |
logs/inference.log | inference.py 完整运行日志(含 Top-5 结果) |
logs/prediction.txt | Top-1 预测标签与置信度摘要 |
logs/accuracy.log | eval_accuracy.py 精度对比结果 |
logs/benchmark.log | benchmark.py 性能测试详细结果 |
assets/test.jpg 是什么图片?由于当前网络环境无法下载公开测试图片,assets/test.jpg 为使用 PIL 生成的 224x224 随机 RGB 占位图。请在提交前替换为真实图片以获得有意义的分类结果。
Killed(exit code 137)?在本环境中,inference.py 与 eval_accuracy.py 在完成所有计算并写完日志后,进程退出阶段收到系统 Killed 信号(exit code 137)。该现象不影响已保存结果的正确性:logs/inference.log、logs/prediction.txt、logs/accuracy.log 中的推理结果与精度对比数据均已完整写入。问题推测为 torch_npu / CANN 在进程资源回收阶段的行为,而非模型推理失败。benchmark.py 可正常退出(exit code 0)。若需规避,可尝试在脚本末尾显式调用 torch.npu.synchronize() 和 del model 后 gc.collect()。
脚本已配置 HF_ENDPOINT=https://hf-mirror.com。若仍超时,请检查网络连通性,或提前通过 huggingface-cli 将模型下载到本地缓存目录。
请确认:
npu-smi info 能正常输出 NPU 信息;torch_npu 已正确安装且版本与 CANN 匹配;ASCEND_HOME_PATH 指向正确的 CANN 路径。google-efficientnet-b6-NPU/
├── README.md
├── requirements.txt
├── inference.py
├── eval_accuracy.py
├── benchmark.py
├── assets/
│ └── test.jpg
├── logs/
│ ├── env_check.log
│ ├── inference.log
│ ├── prediction.txt
│ ├── accuracy.log
│ └── benchmark.log
├── scripts/
└── screenshots/