本文档记录 RADIO-L 在 Ascend 910B3 NPU 上的推理适配与精度验证。
RADIO-L(RADIO Large)是 NVIDIA AM-RADIO 系列中的大型视觉基础模型,基于 ViT-L/16 骨干网络(约 304M 参数),参考分辨率 768×768。模型可输出 summary token(全局特征)和 spatial features(空间特征),适用于图像分类、分割、检索等通用视觉任务。
相关获取地址:
| 组件 | 配置 |
|---|---|
| NPU | Ascend 910B3(8×64GB HBM) |
| CPU | 192 核 |
| 组件 | 版本 |
|---|---|
| 操作系统 | EulerOS |
| torch | 2.10.0+cpu |
| torch_npu | 2.10.0 |
| transformers | 5.8.1 |
| timm | 1.0.27 |
| CANN | 8.5.1 |
| NPU 驱动 | 25.5.2 |
export OPENBLAS_NUM_THREADS=128
export OMP_NUM_THREADS=128pip install torch==2.10.0+cpu torchvision==0.20.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 pillow \
--index-url https://repo.huaweicloud.com/repository/pypi/simple/python inference.py \
--model_path ./RADIO-L \
--image_path /path/to/image.jpg \
--device npu:0可选参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
--model_path | 模型路径(HF 格式) | 必填 |
--image_path | 输入图片路径 | 必填 |
--device | 运行设备 | npu:0 |
--no_warmup | 跳过预热 | False |
--warmup_image | 预热用图片(默认同输入) | None |
推理日志示例:
2025-07-14 08:35:48 - INFO - Input: test_image.jpg
2025-07-14 08:35:48 - INFO - Image size: (768, 768)
2025-07-14 08:35:48 - INFO - pixel_values shape: (1, 3, 768, 768)
2025-07-14 08:35:48 - INFO - Inference time: 0.2706s
2025-07-14 08:35:48 - INFO - summary shape: (1, 3072)
2025-07-14 08:35:48 - INFO - features shape: (1, 2304, 1024)python eval.py \
--model_path ./RADIO-L \
--npu_device npu:0评估流程:
支持自定义图片:
python eval.py \
--model_path ./RADIO-L \
--image_path /path/to/your_image.jpg \
--npu_device npu:0NPU vs CPU 逐张量对比结果(FP32,生成测试图 768×768):
| 指标 | 数值 |
|---|---|
| 向量相对误差(Frobenius %) | 0.778983% |
| 余弦相似度 | 0.9999753237 |
| 最大绝对误差 | 1.12e-02 |
| 平均绝对误差 | 1.50e-03 |
| P50 / P90 / P95 / P99 | 1.16e-03 / 3.22e-03 / 4.04e-03 / 5.38e-03 |
| 指标 | 数值 |
|---|---|
| 向量相对误差(Frobenius %) | 0.579109% |
| 余弦相似度 | 0.9999881387 |
| 最大绝对误差 | 2.74e-02 |
| 平均绝对误差 | 2.12e-03 |
| P50 / P90 / P95 / P99 | 1.78e-03 / 4.40e-03 / 5.25e-03 / 6.99e-03 |
||NPU - CPU||_F / ||CPU||_F × 100%,衡量整体数值偏差。阈值 < 1% 为 PASS。| 性能指标 | 数值 |
|---|---|
| CPU 推理时间(FP32) | 2.2086s |
| NPU 推理时间(FP32,3 轮预热后) | 0.2529s |
| 加速比 (CPU / NPU) | 8.73× |
RADIO-L(约 320M 参数,768×768 分辨率)在 Ascend 910B3 NPU 上的 FP32 推理验证结果:
all_tied_weights_keys 错误TypeError: Can't instantiate class <ModelClass> without an `all_tied_weights_keys` attributetransformers 5.8.1 要求模型类显式定义此属性。需在源模型 hf_model.py 的 RADIOModel 类中添加:
all_tied_weights_keys = {}pip install timm --index-url https://repo.huaweicloud.com/repository/pypi/simple/OpenBLAS Warning : Detect OpenMP Loop and this application may hang...设置环境变量:
export OPENBLAS_NUM_THREADS=128
export OMP_NUM_THREADS=128npu-smi info # 检查 NPU 占用
# 指定空闲设备:--device npu:5RADIO-L-ascend/
├── inference.py # 单图推理脚本
├── eval.py # NPU vs CPU 精度与性能评估脚本
├── README.md # 本文档
├── log.txt # 评测运行日志
└── .gitignore # Git 忽略规则