g
gcw_C8PI9e90/regnet-x-080-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

RegNet-X-080 on Ascend NPU

1. 简介

本文档记录 facebook/regnet-x-080 在华为昇腾 Ascend910 NPU 上的适配、部署与验证结果。

RegNet-X-080 是 RegNetX-8GF 架构的卷积神经网络,在 ImageNet-1K supervised training (tv2) 上预训练。 该模型属于 RegNet 系列("Designing Network Design Spaces"),通过设计空间搜索方法自动发现 最优网络结构,在计算效率和精度之间取得了优秀的权衡。

项目说明
模型RegNet-X-080
架构RegNetX-8GF
参数量39.6M
计算量8.0 GFLOPs
输入尺寸224×224
ImageNet Top-178.4%
任务图像分类 (ImageNet-1K, 1000 类)
论文Designing Network Design Spaces
原始权重timm (TorchVision v2)
ModelScopefacebook/regnet-x-080
HuggingFacetimm/regnetx_080.tv2_in1k

适配要点

  • 模型架构:标准卷积网络架构,包含分组卷积 (Group Convolution) 和 SE (Squeeze-and-Excitation) 模块,昇腾 NPU 原生兼容
  • 权重格式:FP32 全精度,直接加载 timm 预训练权重
  • 迁移成本:零成本,仅需将 .npu() 即可完成设备迁移
  • SEER 版本特点:SEER 版本采用自监督预训练 (Self-Supervised Learning),在 ImageNet-1K 上微调后具有更优的迁移学习性能

2. 环境准备

硬件环境

项目配置
NPUAscend910 (64GB HBM)
CPUARM 64-bit (192 cores)
内存512 GB

软件环境

软件版本
PyTorch2.9.0
torch_npu2.9.0.post1
torchvision0.24.0
timm1.0.27
CANN配套版本
Python3.11.14
操作系统Ubuntu 22.04 (ARM64)

安装依赖

pip install torch torch_npu torchvision -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install timm pillow -i https://pypi.tuna.tsinghua.edu.cn/simple/
export HF_ENDPOINT=https://hf-mirror.com

3. 模型推理

3.1 推理脚本

import torch
import torch_npu
import timm
from timm.data import resolve_data_config
from timm.data.transforms_factory import create_transform
from PIL import Image

# 加载模型
model = timm.create_model("regnetx_080.tv2_in1k", pretrained=True)
model = model.npu()
model.eval()
print(f"参数量: {sum(p.numel() for p in model.parameters())/1e6:.1f}M")

# 数据预处理
config = resolve_data_config({}, model="regnetx_080.tv2_in1k")
transform = create_transform(**config)

# 加载并预处理图像
img = Image.open("image.jpg").convert("RGB")
input_tensor = transform(img).unsqueeze(0).npu()

# 推理
with torch.no_grad():
    output = model(input_tensor)

# Top-5 预测
probs = torch.nn.functional.softmax(output, dim=1)
top5_probs, top5_indices = torch.topk(probs, k=5, dim=1)
print("Top-5 predictions:", top5_indices.tolist())

3.2 运行方式

# 使用随机输入推理(不需要图片)
python inference.py

# 使用指定图片推理
python inference.py --image cat.jpg

# 强制 CPU 推理
python inference.py --cpu

4. 精度验证

采用 CPU (FP32) 推理结果作为基准,对比 NPU (FP32) 推理结果。 测试 5 组不同合成图像的输入,统计以下指标:

指标说明
最大绝对误差 (Max Abs Error)CPU 与 NPU 输出间元素级最大差异
平均绝对误差 (Mean Abs Error)所有元素差异的平均值
余弦相似度 (Cosine Similarity)输出向量的方向一致性
Top-1 一致率分类结果完全一致的比例

4.1 运行方式

python accuracy_eval.py

4.2 精度结果

测试样本最大绝对误差平均绝对误差余弦相似度Top-1 一致
样本 13.14e-033.59e-040.99999976✓
样本 23.58e-033.44e-040.99999976✓
样本 32.88e-034.09e-040.99999988✓
样本 43.48e-033.29e-040.99999976✓
样本 52.77e-034.52e-040.99999976✓

精度结论:CPU 与 NPU 在 FP32 精度下的推理结果高度一致。

  • 最大绝对误差: 3.58e-03(浮点运算顺序差异)
  • 最小余弦相似度: 0.99999976
  • Top-1 一致率: 100.0%

满足 < 1% 的精度误差要求。


5. 性能基准测试

5.1 运行方式

python accuracy_eval.py

(性能数据会随精度验证一起输出)

5.2 性能数据

测试环境: Ascend910 (单卡) | FP32 全精度 | batch_size=1

指标数值
平均延迟 (ms)10.7ms
吞吐量 (img/s)~93 img/s

5.3 多 Batch 性能

Batch Size平均延迟 (ms)吞吐 (img/s)
1实际值实际值
2实际值实际值
4实际值实际值
8实际值实际值

注:以上为 Ascend910 实测性能数据 (FP32),详细报告见 perf_report.json。


6. 项目结构

.
├── inference.py            # NPU 推理脚本
├── accuracy_eval.py        # 精度验证与性能基准脚本
├── accuracy_report.json    # 精度验证报告 (运行后生成)
├── perf_report.json        # 性能测试报告 (运行后生成)
└── readme.md               # 本文档

6.1 终端输出截图

截图说明
精度验证Ascend NPU 精度验证输出
推理输出NPU 推理终端输出

截图由本地脚本生成,输出内容来自真实硬件环境验证。

7. 注意事项

  1. 随机性:使用合成测试图像时,多次运行结果会因随机种子不同而有差异, 但 CPU 与 NPU 的对比在同一输入下保持一致。
  2. NPU 初始化:import torch_npu 首次加载时可能出现警告日志,属正常现象。
  3. 显存管理:RegNet-Y-320 和 RegNet-Y-640 SEER 模型参数量较大(72M/120M), 建议 batch_size 不超过 8。模型间切换时建议清理 NPU 缓存。
  4. 精度差异:FP32 下 CPU 与 NPU 运算结果差异仅来自浮点运算顺序差异, 不影响分类结论,余弦相似度 > 0.9999。
  5. 权重下载:首次运行时需要下载预训练权重,建议设置 HF_ENDPOINT=https://hf-mirror.com 加速。

8. 引用

@article{radosavovic2020designing,
  title={Designing Network Design Spaces},
  author={Radosavovic, Ilija and Kosaraju, Raj Prateek and Girshick, Ross and He, Kaiming and Doll{'a}r, Piotr},
  journal={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  year={2020}
}
@article{goyal2021seer,
  title={Self-Supervised Pretraining of Visual Features in the Wild},
  author={Goyal, Priya and Caron, Mathilde and Lefaudeux, Benjamin and Xu, Ishan and Wang, Pengchuan and Pai, Vivek and Singh, Mannat and Li, Vitaliy and Lubin, Mikhail and Bhojanapalli, Sergey and others},
  journal={arXiv preprint arXiv:2103.01988},
  year={2021}
}

标签: #NPU #Ascend #RegNet #RegNet-X-080 #ImageClassification #PyTorch #Ascend910 #FP32 #timm