C-RADIOv2-B 是一个90M参数的视觉Transformer模型,由NVIDIA开发。本项目提供其在华为 Ascend NPU 环境下的部署方案。
/data/ysws/agentsp/C-RADIOv2-B-ascend/
├── inference.py # 精度测试脚本
├── log.txt # 测试日志
├── README.md # 本文档
├── test_image_0.png # 测试样本1
├── test_image_1.png # 测试样本2
└── test_image_2.png # 测试样本3docker exec -it test-modelagent bashsource /usr/local/Ascend/ascend-toolkit/set_env.shpip install transformers==4.36.0模型文件应放在 /data/ysws/agentsp/C-RADIOv2-B/ 目录下:
cd /data/ysws/agentsp/C-RADIOv2-B-ascend/
python3 inference.py --device npu:4| 指标 | 实测值 | 阈值 | 状态 |
|---|---|---|---|
| Summary相对误差 | 0.39% | < 1% | PASS |
| Features相对误差 | 0.35% | < 1% | PASS |
| 操作 | 耗时 |
|---|---|
| 模型加载 | 4.02s |
| NPU 推理 | 0.34s |
完整测试日志保存在 log.txt
import torch
from PIL import Image
from transformers import AutoModel, AutoImageProcessor
model_path = "/data/ysws/agentsp/C-RADIOv2-B"
processor = AutoImageProcessor.from_pretrained(model_path)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True)
model = model.to("npu:4").eval()
test_image = Image.fromarray(np.random.randint(0, 255, (432, 432, 3), dtype=np.uint8))
inputs = processor(images=test_image, return_tensors="pt")
pixel_values = inputs["pixel_values"].to("npu:4")
with torch.no_grad():
summary, spatial = model(pixel_values)| 组件 | 说明 | 规格 |
|---|---|---|
| embeddings | 补丁嵌入 | patch_size=16, 3通道输入 |
| encoder | Transformer 编码器 | Vision Transformer |
| output | 特征输出 | summary + spatial features |
C-RADIOv2-B模型与transformers 5.x存在all_tied_weights_keys兼容性问题。需使用transformers 4.36.0版本。
推荐使用NPU 4-7进行推理:
A: 检查NPU驱动是否正确安装,确保CANN环境变量已source,并确认transformers版本为4.36.0。
A: 首次加载会进行权重解析,C-RADIOv2-B为90M模型,加载约需4秒。
A: 使用 --device npu:4 (推荐) 或 npu:5/6/7。
本项目遵循 C-RADIOv2-B 原始 NVIDIA Open Model License。