RAD-DINO on Ascend NPU
1. 简介
本文档记录 microsoft/rad-dino 在昇腾 NPU(Ascend 910B3)环境的适配部署与精度验证结果。
RAD-DINO 是微软健康未来团队发布的胸部 X 线影像基础模型,基于 DINOv2 自监督方法在 88 万张胸部 X 线图像上训练。该模型可输出 CLS 和 patch 级别的视觉特征,适用于分类、分割、检索等医学影像下游任务。本项目完成该模型在昇腾 NPU 上的推理适配,并验证 NPU 与 CPU 推理结果的精度误差 < 1%。
相关地址:
2. 验证环境
| 组件 | 版本 |
|---|
| Python | 3.11.15 |
| PyTorch | 2.10.0+cpu |
| torch_npu | 2.10.0 |
| transformers | 5.8.1 |
| CANN | 8.5.1 |
| NPU 驱动 | 25.5.2 |
| NPU 硬件 | Ascend 910B3 (8卡) |
| 操作系统 | Linux (aarch64) |
3. 模型信息
| 项目 | 值 |
|---|
| 模型架构 | Dinov2Model |
| 参数量 | ~86M |
| Hidden Size | 768 |
| Layers | 12 |
| Attention Heads | 12 |
| Patch Size | 14 |
| 输入尺寸 | 3×518×518 |
| 输出 last_hidden_state | (1, 1370, 768) |
| 输出 pooler_output | (1, 768) |
| 权重格式 | safetensors |
| 权重大小 | 330MB |
| 原始框架 | PyTorch (transformers) |
| 训练方法 | 自监督 DINOv2 |
| 预训练数据 | 88 万胸部 X 线图像 (MIMIC-CXR, CheXpert, NIH-CXR, PadChest, BRAX) |
| 基础模型 | dinov2-base |
| 许可证 | MSRLA |
4. Conda 环境安装
conda create -n rad-dino python=3.11 -y
conda activate rad-dino
pip install torch==2.10.0 torchvision==0.25.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install torch_npu==2.10.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install transformers safetensors pillow --index-url https://repo.huaweicloud.com/repository/pypi/simple/
export HF_ENDPOINT=https://hf-mirror.com/
5. 推理执行
# NPU 推理
python3 inference.py --model_path /path/to/rad-dino --image_path /path/to/xray.jpg --device npu:0
# CPU 推理
python3 inference.py --model_path /path/to/rad-dino --image_path /path/to/xray.jpg --device cpu
# 精度评测
python3 eval.py --model_path /path/to/rad-dino --npu_device npu:0
6. 参数说明
| 参数 | 说明 | 默认值 |
|---|
--model_path | 模型权重路径 | 必需 |
--image_path | 输入图像路径 | 必需 |
--device | 运行设备 | npu:0 |
--npu_device | NPU 设备 ID (eval) | npu:0 |
--num_warmup | NPU 预热轮数 | 3 |
7. 精度评测结果
| 输出张量 | 向量级相对误差 | 余弦相似度 | 最大绝对误差 | 平均绝对误差 |
|---|
| last_hidden_state | 0.285476% | 0.9999941587 | 1.38e-02 | 1.25e-03 |
| pooler_output | 0.261152% | 0.9999966621 | 6.45e-03 | 1.18e-03 |
判定结论: ✅ PASS — 最大向量级相对误差 0.285% < 1%
8. 性能数据
| 操作 | 耗时 |
|---|
| CPU 推理时间 | 0.4765s |
| NPU 推理时间(3轮预热后) | 0.3466s |
| 加速比 | 1.37x |
9. 注意事项
- 518×518 高分辨率输入,产生 1369 个 patch token
- 医学影像预处理使用 MIMIC-CXR 统计数据做归一化
- 权重不含适配仓库,需单独下载