qq_34566203/RADIO-B-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

RADIO-B on Ascend NPU

1. 简介

本文档记录 nvidia/RADIO-B 在昇腾 NPU(Ascend 910B3)环境的适配部署与精度验证结果。

RADIO-B(Reduce All Domains Into One)是 NVIDIA 发布的视觉基础模型系列之一,Base 规模(~92M 参数)。该模型通过多教师知识蒸馏(CLIP、SigLIP、DINOv2、SAM)训练,输出全局 summary 特征和局部 spatial 特征,适用于分类、分割、检索等下游任务。本项目完成该模型在昇腾 NPU 上的推理适配,并验证 NPU 与 CPU 推理结果的精度误差 < 1%。

相关地址:

  • 权重下载地址(HuggingFace):https://huggingface.co/nvidia/RADIO-B
  • 适配代码仓库:https://gitcode.com/qq_34566203/RADIO-B-ascend

2. 验证环境

组件版本
Python3.11.15
PyTorch2.10.0+cpu
torch_npu2.10.0
transformers5.8.1
CANN8.5.1
NPU 驱动25.5.2
NPU 硬件Ascend 910B3 (8卡)
操作系统Linux (aarch64)

3. 模型信息

项目值
模型架构RADIOModel(自定义,trust_remote_code)
版本radio_v2.5-b
参数量~92M
骨干网络ViT-Base (patch16)
Hidden Size768
输入尺寸768×768(推荐)
输出 summary全局特征向量 (1, C)
输出 features局部空域特征 (1, T, D)
权重格式safetensors
权重大小352MB
原始框架PyTorch (transformers + trust_remote_code)
训练方法多教师特征蒸馏(CLIP + SigLIP + DINOv2 + SAM)
许可证NVIDIA Open Model License

4. Conda 环境安装

创建独立的 conda 环境并安装依赖(使用华为云 PyPI 镜像加速):

# 创建 conda 环境
conda create -n radio-b python=3.11 -y

# 激活环境
conda activate radio-b

# 安装 PyTorch 及相关依赖(华为云镜像)
pip install torch==2.10.0 torchvision==0.25.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/

# 安装 torch_npu(根据环境选择对应版本)
pip install torch_npu==2.10.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/

# 安装 transformers、timm 及其他依赖
pip install transformers timm safetensors pillow --index-url https://repo.huaweicloud.com/repository/pypi/simple/

如果 HuggingFace 网络不通,设置镜像:

export HF_ENDPOINT=https://hf-mirror.com/

5. 推理执行

单张图像推理

# NPU 推理(默认)
python3 inference.py \
    --model_path /path/to/RADIO-B \
    --image_path /path/to/image.jpg \
    --device npu:0

# CPU 推理
python3 inference.py \
    --model_path /path/to/RADIO-B \
    --image_path /path/to/image.jpg \
    --device cpu

精度与性能评测

# 自动生成测试图像,对比 NPU 与 CPU 推理精度
python3 eval.py \
    --model_path /path/to/RADIO-B \
    --npu_device npu:0

评测结果日志将输出到 log.txt。

6. 参数说明

inference.py 参数

参数说明默认值
--model_path模型权重路径必需
--image_path输入图像路径必需
--device运行设备(npu:0 或 cpu)npu:0
--no_warmup跳过预热阶段False
--warmup_image预热用图像路径同 --image_path

eval.py 参数

参数说明默认值
--model_path模型权重路径模型路径
--image_path测试图像路径(默认自动生成)自动生成
--npu_deviceNPU 设备 IDnpu:0
--num_warmupNPU 预热轮数3

7. 精度评测结果

评测方法

使用同一张测试图像(768×768,含线条和几何图案)分别在 CPU(FP32)和 NPU(FP32)上运行推理,对比 RADIO 输出的 summary(全局特征)和 features(空域特征)的差异。

评价指标说明

指标含义判定阈值
向量级相对误差`
余弦相似度NPU 与 CPU 输出向量间的方向一致性> 0.99
最大/平均绝对误差逐元素差值统计,反映数值偏差的绝对量级—
绝对误差分位数误差分布特征(P50/P90/P95/P99)—

精度结果

输出张量向量级相对误差余弦相似度最大绝对误差平均绝对误差
summary0.782577%0.99996960161.14e-021.47e-03
features0.783844%0.99996984002.85e-021.96e-03

绝对误差分布:

输出张量P50P90P95P99
summary1.21e-033.07e-033.79e-034.90e-03
features1.61e-034.05e-034.89e-036.84e-03

判定结论

指标实测值阈值状态
向量级相对误差(summary)0.782577%< 1%✅ PASS
向量级相对误差(features)0.783844%< 1%✅ PASS
余弦相似度(summary)0.9999696> 0.99✅ PASS
余弦相似度(features)0.9999698> 0.99✅ PASS

8. 性能数据

操作耗时
CPU 推理时间(FP32)1.9583s
NPU 推理时间(FP32,3轮预热后)0.2706s
加速比 (CPU / NPU)7.24x

9. 注意事项

  1. trust_remote_code:该模型使用自定义 RADIOModel 架构(依赖 timm),加载时需要设置 trust_remote_code=True。
  2. timm 依赖:RADIO 模型内部使用 timm 的 VisionTransformer,需提前安装 timm。
  3. 图像处理器:该模型使用 CLIPImageProcessor 进行预处理,推荐输入尺寸 768×768。
  4. 多教师特征:RADIO 输出两个张量:summary(全局特征,类似于 CLS token)和 features(空域特征,适用于密集预测任务),两者均需对比精度。
  5. NPU 预热:NPU 首次推理包含算子编译优化,需 1-2 轮预热才能达到稳定性能。脚本默认开启 3 轮预热。
  6. 精度:本模型使用 FP32 精度,NPU 与 CPU 输出误差极小(远小于 1%),不影响下游任务效果。
  7. 权重文件:模型权重(.safetensors)不包含在适配仓库中,需单独下载。