#NPU #Ascend #image-classification
microsoft/resnet-50 是基于 ResNet-50 架构的图像分类模型,由微软在 ImageNet-1k 数据集上训练得到。ResNet(Residual Network)通过引入残差连接(skip connections)有效缓解了深层网络的梯度消失问题,是计算机视觉领域的经典骨干网络之一。该模型输入为 224×224 的 RGB 图像,输出 1000 个 ImageNet 类别的分类概率。
| 项目 | 规格 |
|---|---|
| NPU 型号 | Ascend 910B4 |
| NPU 数量 | 1 卡 |
| HBM 容量 | 32 GB |
| 健康状态 | OK |
运行前请执行
npu-smi info确认 NPU 状态正常。
| 项目 | 版本 |
|---|---|
| Python | 3.11.14 |
| torch | 2.9.0+cpu |
| torch_npu | 2.9.0.post1 |
| transformers | 4.57.6 |
| torchvision | 0.24.0 |
| Pillow | 12.2.0 |
| numpy | 1.26.4 |
| requests | 2.33.1 |
| CANN | 8.5.1 |
pip install -r requirements.txtrequirements.txt 内容:
torch>=2.0.0
torchvision>=0.15.0
transformers>=4.30.0
pillow>=9.0.0
requests>=2.28.0
numpy>=1.24.0如果环境已安装 torch/torch_npu,请勿强制覆盖,避免破坏现有驱动兼容性。
模型权重通过 transformers 的 from_pretrained 接口自动下载。默认使用镜像端点:
export HF_ENDPOINT=https://hf-mirror.com脚本中已内置 os.environ.setdefault("HF_ENDPOINT", "https://hf-mirror.com"),无需手动设置即可从镜像站下载。
权重下载后默认缓存在 ~/.cache/huggingface/hub/。
python inference.pyassets/test.jpg 作为输入图像AutoImageProcessor + AutoModelForImageClassification 加载模型npu:0logs/inference.loglogs/prediction.txt注意: assets/test.jpg 为本地生成的占位图(640×480 RGB),非真实自然图像。Top-1 预测结果为 web site(置信度约 0.316),该结果仅用于验证推理 pipeline 通断,不代表模型真实精度。如需真实精度验证,请替换为 ImageNet 标准测试集或自然图像。
Top-1 Prediction: web site, website, internet site, site (index=916) confidence=0.315902
Top-2 Prediction: envelope (index=549 ) confidence=0.301865
Top-3 Prediction: face powder (index=551 ) confidence=0.010566
Top-4 Prediction: analog clock (index=409 ) confidence=0.006302
Top-5 Prediction: rule, ruler (index=769 ) confidence=0.004435python eval_accuracy.pyassets/test.jpgAutoImageProcessor 统一处理max_abs_diff: logits 最大绝对差mean_abs_diff: logits 平均绝对差prob max_diff: 概率分布最大绝对差Top-1 match: 两类设备 Top-1 预测是否一致| 指标 | 数值 |
|---|---|
| Logits max_abs_diff | 7.938385e-03 |
| Logits mean_abs_diff | 1.490364e-03 |
| Prob max_diff | 1.080841e-03 (0.11%) |
| CPU Top-1 index | 916 |
| NPU Top-1 index | 916 |
| Top-1 match | True |
| 判定结果 | PASS |
结论: CPU 与 NPU 推理结果高度一致,概率最大差异仅 0.11%,远小于 1% 阈值。logits 层面的微小差异属于 CPU/NPU 浮点实现差异的正常范围。
python benchmark.pynpu:0images/s| 指标 | 数值 |
|---|---|
| 总测试轮次 | 20 |
| 平均延迟 | 12.274 ms |
| 最小延迟 | 11.815 ms |
| 最大延迟 | 12.719 ms |
| 吞吐量 | 81.47 images/s |
测试环境:单卡 Ascend 910B4,batch_size=1,输入尺寸 224×224。
| 文件路径 | 说明 |
|---|---|
logs/env_check.log | 环境检查日志(NPU 信息、Python/包版本) |
logs/inference.log | 推理脚本完整输出日志 |
logs/prediction.txt | Top-1 标签、置信度及 Top-5 列表 |
logs/accuracy.log | CPU vs NPU 精度对比结果 |
logs/benchmark.log | 性能测试原始延迟与统计结果 |
脚本已内置 HF_ENDPOINT=https://hf-mirror.com。如果仍失败,可尝试:
export HF_ENDPOINT=https://hf-mirror.com
export HF_HUB_OFFLINE=0
python inference.py或在网络连通的环境预先下载后拷贝缓存目录。
执行 npu-smi info 检查硬件状态。如果 torch.npu.is_available() 返回 False,请确认:
torch_npu 版本与 CANN 版本匹配/dev/davinci* 的权限请确认:
如果 logits 差异略高但概率差异 < 1% 且 Top-1 一致,通常属于 CPU/NPU 浮点实现差异,可记录为 ACCEPTABLE。
assets/test.jpg 是本工程在无法联网下载时自动生成的 占位图(640×480 RGB 几何图形),非 ImageNet 标准测试图像。推理结果仅用于验证 pipeline 正确性,不反映模型真实精度。请根据实际业务场景替换为真实图像。
microsoft-resnet-50-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/ # 预留截图目录本工程为昇腾模型适配比赛提交项目,仅供技术验证使用。模型权重版权归原版权方(Microsoft)所有,使用请遵循其许可证条款。