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

RADIO-B on Ascend NPU

1. 简介

本文档记录 RADIO-B 在昇腾 NPU 环境的适配与验证结果。

模型信息:

  • 模型类型:Vision Transformer (ViT-B)
  • 参数量:~375MB
  • 输入尺寸:[1, 3, 768, 768]
  • 输出:summary (全局特征) + spatial_features (空间特征)

相关地址:

  • 权重下载地址(HuggingFace):https://huggingface.co/nvidia/RADIO-B
  • 原项目地址:https://github.com/NVlabs/RADIO

2. 验证环境

组件版本
torch2.10.0
torch_npu2.10.0
transformers5.8.1
timm-
einops-
  • NPU:1 逻辑卡
  • 模型路径:/data/xxy/RADIO-B
  • Conda 环境:radio-b

3. 环境配置

3.1 创建 conda 环境

conda create -n radio-b python=3.11 -y
conda activate radio-b

3.2 安装依赖

pip install torch==2.10.0 torchvision --index-url https://download.pytorch.org/whl/cpu
pip install torch_npu transformers pillow timm einops -i https://repo.huaweicloud.com/repository/pypi/simple

3.3 验证环境

python -c "import torch; print('NPU available:', torch.npu.is_available())"

4. 适配方法

RADIO 模型通过 HuggingFace AutoModel 加载,需要 trust_remote_code=True,主要适配工作:

  1. 设备迁移:使用 model.to("npu:0") 将模型权重迁移到 NPU
  2. 输入处理:将输入张量移至 NPU 设备 x.to("npu:0")
  3. 同步调用:NPU 推理后调用 torch.npu.synchronize() 确保计算完成

5. 使用方式

5.1 基本推理

# 使用随机张量推理
python inference.py

# 使用图片推理
python inference.py --image /path/to/image.jpg

# 指定设备
python inference.py --device cpu
python inference.py --device npu:0

5.2 精度与性能评测

python eval.py

评测结果将输出到终端并保存到 log.txt。

6. 评测结果

6.1 精度评测

使用随机输入对比 CPU 与 NPU 输出,计算最大绝对误差相对于值范围的百分比。

输出最大绝对误差相对误差 (%)
summary1.57e-020.4582
spatial_features1.14e-010.0620
全局1.14e-010.4582 ✅

精度阈值要求:相对误差 < 1%

6.2 性能评测

指标CPUNPU
平均推理耗时1258.30 ms15.27 ms
加速比1x82.39x

首次 NPU 推理耗时较长(包含图编译开销),预热后平均推理耗时 15.27 ms。

7. 文件结构

RADIO-B-ascend/
├── inference.py    # 推理脚本
├── eval.py         # 精度与性能评测脚本
├── log.txt         # 评测日志
└── README.md       # 本文档

8. 注意事项

  1. 首次 NPU 推理包含图编译开销,性能测试需先预热
  2. 模型输入尺寸为 [1, 3, 768, 768](与原版一致)
  3. Conda 环境名称与模型名称一致:radio-b
  4. 需要 trust_remote_code=True 加载模型
  5. 模型前向接口使用 x 而非 pixel_values