RADIO-B on Ascend NPU
1. 简介
本文档记录 RADIO-B(NVIDIA AM-RADIO 视觉编码器)在昇腾 NPU(Ascend 910B3)环境的适配部署与精度验证结果。
RADIO-B 是一种聚合式视觉基础模型(约 98M 参数),输出 2304 维 summary token 和 768 维空间特征,可用于图像分类、检索、分割等下游任务。本项目完成该模型在昇腾 NPU 上的推理适配,验证 NPU 与 CPU 结果的精度误差 < 1%。
相关地址:
2. 验证环境
| 组件 | 版本 |
|---|
python | 3.11.x |
torch | 2.10.0+cpu |
torch_npu | 2.10.0 |
transformers | 5.8.1 |
timm | 1.0.27 |
einops | 0.8.2 |
CANN | 8.5.1 |
3. 模型信息
| 项目 | 值 |
|---|
| 模型架构 | RADIO (ViT-based, multi-teacher) |
| 参数量 | ~98M |
| Summary 特征 | 2304 维 |
| 空间特征 | 768 维 (196 patches) |
| 输入尺寸 | 3×224×224 |
| 权重格式 | safetensors |
| 框架 | PyTorch (transformers + trust_remote_code) |
4. Conda 环境安装
conda create -n radio python=3.11 -y
conda activate radio
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 timm einops safetensors pillow --index-url https://repo.huaweicloud.com/repository/pypi/simple/
5. 推理执行
python3 inference.py --model_path /path/to/RADIO-B --image_path /path/to/img.jpg
python3 inference.py ... --device cpu
python3 benchmark.py --model_path /path/to/RADIO-B
6. 参数说明
| 脚本 | 参数 | 默认值 |
|---|
| inference.py | --device | npu:0 |
| benchmark.py | --npu_device / --num_warmup | npu:0 / 3 |
7. 精度评测
| 输出 | 相对误差 | 余弦相似度 | SNR |
|---|
| summary | 0.787701% | 0.999969 | 42.07 dB |
| spatial | 0.775504% | 0.999971 | 42.21 dB |
| 指标 | 实测值 | 阈值 | 状态 |
|---|
| 向量级相对误差(最差) | 0.79% | < 1% | PASS |
8. 性能数据
| 操作 | 耗时 |
|---|
| CPU(FP32) | 2.10s |
| NPU(FP32,3轮预热) | 0.24s |
| 加速比 | 8.59x |
9. 注意事项
- 使用
trust_remote_code=True 加载本地自定义模型代码。
- 依赖
timm 和 einops 库。
- 输出为 tuple (summary, spatial_features)。
- 权重文件不包含在适配仓库中。