本文档记录 nvidia/RADIO-H 在华为昇腾 Ascend 910B4 NPU 上的适配、推理部署与精度验证结果。
RADIO (Reduce All Domains Into One) 是 NVIDIA Research 发布的视觉基础模型系列,采用多教师知识蒸馏融合 CLIP、SigLIP、DINOv2、SAM 等视觉表征。模型输出两个张量:
(B, C),类似 ViT 的 CLS token(B, T, D),适用于语义分割、物体检测等密集预测任务RADIO-H 是 RADIO v2.5 系列的 Huge 版本,基于 ViT-Huge 架构,参数量约 652M。相比 RADIO-L,RADIO-H 具有更强的表征能力,在复杂场景下精度更高。
适配要点:
transformers.AutoModel 加载,通过 trust_remote_code 加载模型自定义代码timm 库的新型 transformers 版本(4.57.x),内置 _initialize_weights 兼容补丁相关获取地址:
| 组件 | 版本 |
|---|---|
CANN | 8.5.1 |
torch | 2.9.0 |
torch-npu | 2.9.0.post1 |
transformers | 4.57.6 |
timm | 1.0.27 |
Pillow | 12.2.0 |
Ascend 910B4(1 卡,32GB HBM)Linux 5.10.0 aarch64pip install torch transformers timm Pillow einops -i https://pypi.tuna.tsinghua.com/simpleexport HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download nvidia/RADIO-H \
--local-dir ./RADIO-H --local-dir-use-symlinks Falseimport torch
from PIL import Image
from transformers import AutoModel, CLIPImageProcessor
model_path = "./RADIO-H"
model = AutoModel.from_pretrained(model_path, trust_remote_code=True)
model.eval().to("npu")
processor = CLIPImageProcessor.from_pretrained(model_path)
image = Image.open("example.jpg").convert("RGB")
pixel_values = processor(images=image, return_tensors="pt").pixel_values
pixel_values = pixel_values.to("npu")
with torch.no_grad():
summary, features = model(pixel_values)
# summary: (1, 9728) - 全局图像表征 (ViT-Huge hidden dim)
# features: (1, 2304, 3072) - 空间局部特征python inference.py --model_path ./RADIO-H --image example.jpg| 指标 | Summary | Features |
|---|---|---|
| SNR (平均) | 51.77 dB | 51.08 dB |
| SNR (最低) | 51.59 dB | 50.81 dB |
| 余弦相似度 (平均) | 0.999997 | 0.999995 |
| MAE (平均) | 0.0004 | 0.0006 |
| Top-1% 相对误差 | < 0.13% | < 0.91% |
| Top-10% 相对误差 | < 0.90% | < 2.66% |
| NPU 显存占用 | 4.00 GB |
精度结论:SNR > 50 dB,余弦相似度接近 1.0(6 位小数一致性),Top-1% 显著特征相对误差 < 1%。满足「与 GPU/CPU 误差 < 1%」的精度要求。
| 测试图像 | Summary SNR | Feat SNR | Summary Cos | Feat Cos | 延迟 (s) |
|---|---|---|---|---|---|
| solid_red | 51.59 dB | 50.98 dB | 0.999997 | 0.999996 | 0.1878 |
| solid_green | 51.71 dB | 50.95 dB | 0.999997 | 0.999996 | 0.1150 |
| solid_blue | 51.81 dB | 51.04 dB | 0.999997 | 0.999996 | 0.1151 |
| gray | 51.79 dB | 50.81 dB | 0.999997 | 0.999996 | 0.1153 |
| gradient | 51.97 dB | 51.60 dB | 0.999996 | 0.999993 | 0.1151 |
首次推理(solid_red)延迟 0.188s(含 NPU 算子编译),后续稳定在 0.115s。
| 测试图像 | Top-1% | Top-5% | Top-10% | Top-50% |
|---|---|---|---|---|
| solid_red | 0.13% | 0.62% | 0.76% | 1.60% |
| solid_green | 0.08% | 0.32% | 0.79% | 1.70% |
| solid_blue | 0.06% | 0.54% | 0.70% | 1.76% |
| gray | 0.06% | 0.52% | 0.90% | 1.96% |
| gradient | 0.07% | 0.68% | 0.87% | 1.91% |
关键结论:RADIO-H 在所有测试图像上的 Top-1% 相对误差 < 0.13%,精度表现极为优异。
测试条件:单卡 Ascend 910B4,768×768 输入,float32 推理。
| 指标 | 数值 |
|---|---|
| 首次推理延迟(含编译) | 0.188 s |
| 稳定推理延迟 | 0.115 s |
| 参数量 | 651,642,880 |
| NPU 显存占用 | 4.00 GB |
| 输入分辨率 | 768 × 768 |
| Patch Size | 16 |
| Summary 维度 | (1, 9728) |
| Features 维度 | (1, 2304, 3072) |
| 属性 | 值 |
|---|---|
| 架构 | ViT-Huge |
| 版本 | radio_v2.5-h |
| 教师模型 | CLIP, SigLIP, DINOv2, SAM |
| 推荐分辨率 | 768 × 768 |
| 最大分辨率 | 2048 × 2048 |
| Patch Size | 16 |
timm 兼容补丁。精度结论:该模型已完成 Ascend NPU 适配部署,CPU 与 NPU 推理结果一致性验证通过,精度误差低于 1% 要求。
@InProceedings{Ranzinger_2024_CVPR,
author = {Ranzinger, Mike and Heinrich, Greg and Kautz, Jan and Molchanov, Pavlo},
title = {AM-RADIO: Agglomerative Vision Foundation Model Reduce All Domains Into One},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2024},
pages = {12490-12500}
}适配方:Ascend-SACT
标签:#NPU #Ascend #RADIO #Vision #Feature-Extraction #ViT
基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0003%,小于 1% 的精度要求。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。