#+NPU #+昇腾 #+Ascend910 #+CV #+图像分类 #+ViT #+Transformer
本仓库包含了 cv_vit-base_image-classification_Dailylife-labels 在华为昇腾 Ascend910 NPU 上的适配版本,支持 CPU 和 NPU 两种推理方式,并提供了完整的精度验证流程。
该模型来自 ModelScope,主要用于 图像分类 任务。
原始模型地址: cv_vit-base_image-classification_Dailylife-labels
图像分类
PyTorch
图像(Image)
分类标签和置信度分数
| 依赖 | 版本 |
|---|---|
| Python | >= 3.8 |
| PyTorch | >= 2.0.0 |
| torch_npu | >= 2.0.0 |
| ModelScope | >= 1.0.0 |
| mmcv | 1.7.2 |
| mmcls | >= 0.20.0 |
| NumPy | >= 1.20.0 |
| Pillow | >= 9.0.0 |
本适配基于华为 Ascend910 NPU(CANN 8.5.1,显存 64GB)完成。适配内容包括:
# 安装基础依赖
pip install torch torch_npu modelscope mmcv mmcls Pillow numpy
# 设置环境变量
export MODELSCOPE_CACHE=/path/to/cacheCPU 推理:
python3 inference.pyCPU vs NPU 精度对比:
python3 compare_cpu_npu.pyfrom modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
pipe = pipeline(Tasks.IMAGE_CLASSIFICATION, model='iic/cv_vit-base_image-classification_Dailylife-labels', device='cpu')
result = pipe('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/bird.JPEG')
print(result)import torch
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
pipe = pipeline(Tasks.IMAGE_CLASSIFICATION, model='iic/cv_vit-base_image-classification_Dailylife-labels', device='cpu')
pipe.model.cls_model = pipe.model.cls_model.to('npu:0')
# Monkey-patch forward for NPU
orig_forward = pipe.model.forward
def npu_forward(inputs):
for k, v in inputs.items():
if isinstance(v, torch.Tensor):
inputs[k] = v.to('npu:0')
return orig_forward(inputs)
pipe.model.forward = npu_forward
result = pipe('test.jpg')
print(result)关键比较指标:
| 指标 | 值 |
|---|---|
| 最大绝对误差 | 0.006574541330337524 |
| 相对误差 | 1.8086420372128487% |
| 余弦相似度 | 0.9998653531074524 |
| Top-1 标签匹配 | True |
| Top-5 一致率 | 100.0% |
| CPU 推理耗时 | 769.1135406494141 ms |
| NPU 推理耗时 | 157.9117774963379 ms |
| NPU 加速比 | 4.870526776682318x |
NPU 与 CPU 推理结果误差为 1.8086%,超过 1% 阈值。可能原因包括模型内部算子对 NPU 的适配差异或数值精度问题,建议进一步排查。
| 平台 | 推理耗时 (ms) | 加速比 |
|---|---|---|
| CPU | 769.1135406494141 | 1.00x |
| NPU (Ascend910) | 157.9117774963379 | 4.870526776682318x |
以下截图展示了推理的实际运行结果。



#+NPU #+昇腾 #+Ascend910 #+CV #+图像分类 #+ViT #+Transformer