m0_74196153/phikon-v2
模型介绍文件和版本Pull Requests讨论分析

phikon-v2 Ascend NPU 适配

模型: owkin/phikon-v2 — DINOv2 ViT-L/16 病理基础模型 (303M参数)

适配目标: 在华为昇腾 Ascend910B4 NPU 上运行推理,精度误差 < 1%

项目结构

phikon-v2-npu/
├── scripts/
│   ├── npu_adapter.py        # NPU推理适配器
│   └── verify_accuracy.py    # 精度验证 (CPU vs NPU)
├── model_files/              # 模型权重 (从 hf-mirror.com 下载)
├── test_results/             # 测试结果
├── download_model.sh         # 模型下载脚本
├── run_npu_inference.sh      # NPU推理运行脚本
└── run_accuracy_test.sh      # 精度验证运行脚本

适配结果

项目结果
设备Ascend910B4 (29.5 GB)
推理精度float16
推理延迟25.82 ms/image
吞吐量38.7 images/s
余弦相似度0.999997 (CLS token)
最大相对误差0.62% ( < 1% ✅)
平均相对误差0.04% ( < 0.5% ✅)

使用方式

环境要求

  • Python 3.11
  • torch + torch_npu 2.9.0
  • transformers 4.57.6
  • timm 1.0.27

推理示例

from PIL import Image
from scripts.npu_adapter import load_model, preprocess_image, run_inference

model, processor, device, dtype = load_model(use_fp16=True)
image = Image.open("test.png")
pixel_values = preprocess_image(image, processor)
outputs = run_inference(model, pixel_values, device, dtype)
cls_token = outputs["cls_token"]  # [1, 1024]

运行精度验证

bash run_accuracy_test.sh

关键发现

  1. phikon-v2 是标准 HuggingFace Dinov2Model,无需代码修改即可在 NPU 运行
  2. BitImageProcessor 用于图像预处理
  3. NPU fp16 推理与 CPU fp32 推理的余弦相似度 > 0.99999
  4. 最大相对误差 0.62%,远低于 1% 阈值
下载使用量0