EfficientNet-B0 是 Google 提出的 EfficientNet 系列中的基线模型,通过复合缩放(Compound Scaling)均衡地扩展网络的深度、宽度和分辨率,在 ImageNet 分类任务上取得了优异的精度-效率权衡。本工程将其适配到华为昇腾 NPU,使用 Transformers 和 torch_npu 完成图片分类推理。
| 项目 | 配置 |
|---|---|
| NPU 型号 | Ascend 910B4 |
| NPU 数量 | 1 卡 |
| 驱动状态 | OK |
| 项目 | 版本 |
|---|---|
| Python | 3.11.14 |
| torch | 2.9.0+cpu |
| torch_npu | 2.9.0.post1+gitee7ba04 |
| transformers | 4.57.6 |
| PIL | 12.2.0 |
| numpy | 1.26.4 |
pip install -r requirements.txt注意:如果环境中已安装 torch 和 torch_npu,请勿强制覆盖,以免破坏现有 CANN 兼容性。
模型权重通过 Hugging Face Transformers 自动下载。若无法直连 Hugging Face,脚本已内置环境变量:
os.environ.setdefault("HF_ENDPOINT", "https://hf-mirror.com")运行时将从 hf-mirror.com 镜像站下载 google/efficientnet-b0 的 processor 和 model 权重。
python inference.py功能说明:
google/efficientnet-b0 的 image processor 和 classification modelnpu:0assets/test.jpg,执行一次真实 NPU 推理logs/inference.loglogs/prediction.txt实际运行结果(占位图):
| 排名 | 标签 | 置信度 |
|---|---|---|
| 1 | velvet | 0.053031 |
| 2 | doormat, welcome mat | 0.041187 |
| 3 | wool, woolen, woollen | 0.027512 |
| 4 | tennis ball | 0.025194 |
| 5 | vulture | 0.021951 |
注意:
assets/test.jpg为本地生成的占位图(224x224 随机 RGB),由于图片内容无实际语义,分类结果为随机分布。如需真实分类效果,请替换为真实图片。
python eval_accuracy.py功能说明:
assets/test.jpgmax_abs_diff、mean_abs_diff、prob_max_diff、top1_matchlogs/accuracy.log实际运行结果:
| 指标 | 数值 |
|---|---|
| Max absolute logits diff | 0.007120 |
| Mean absolute logits diff | 0.001538 |
| Max probability diff | 0.000256 |
| Top-1 match | True |
| 结论 | PASS |
结论:概率差异小于 1% 且 Top-1 一致,NPU 推理精度与 CPU baseline 对齐。logits 存在微小差异属于 CPU/NPU 浮点实现差异的正常范围。
python benchmark.py功能说明:
google/efficientnet-b0 和 assets/test.jpgimages/slogs/benchmark.log实际运行结果:
| 指标 | 数值 |
|---|---|
| Average latency | 0.015683 s |
| Min latency | 0.014857 s |
| Max latency | 0.016914 s |
| Throughput | 63.76 img/s |
| 文件 | 说明 |
|---|---|
logs/env_check.log | 环境检查结果(NPU 信息、Python/依赖版本) |
logs/inference.log | inference.py 完整运行日志 |
logs/prediction.txt | Top-1 / Top-5 预测标签与置信度 |
logs/accuracy.log | CPU vs NPU 精度对比结果 |
logs/benchmark.log | NPU 推理性能基准测试结果 |
Q1:模型下载失败或连接超时?
A:脚本已设置 HF_ENDPOINT=https://hf-mirror.com。如需使用其他镜像,可修改脚本中的环境变量或在外部设置 export HF_ENDPOINT=https://your-mirror.com。
Q2:NPU 不可用?
A:请检查 npu-smi info 输出是否正常,确认 Ascend 驱动和 CANN 环境变量(如 ASCEND_HOME_PATH)已正确配置。
Q3:测试图片是随机图,预测结果没有实际意义?
A:正确。由于当前环境无法联网下载真实图片,assets/test.jpg 是本地生成的占位图。请替换为真实图片以获得有意义的分类结果。
Q4:是否使用了 vLLM / TP / EP / DP / MoE? A:本工程为图片分类任务,未使用 vLLM,也未使用 TP、EP、DP、MoE 等分布式优化。
#NPU #Ascend #EfficientNet #ImageClassification #Transformers #torch_npu