m
mxy-yy/C-RADIOv2-B-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

C-RADIOv2-B Ascend NPU 部署指南

项目简介

C-RADIOv2-B 是一个90M参数的视觉Transformer模型,由NVIDIA开发。本项目提供其在华为 Ascend NPU 环境下的部署方案。

特性

  • 支持 Ascend NPU 推理加速
  • CPU vs NPU 精度对比测试 (< 1% 误差)
  • Vision Transformer 架构 (patch_size=16, 768 hidden)

环境要求

  • 硬件: 华为 Ascend 910 系列 NPU
  • CANN: 8.0.RC1 或更高版本
  • PyTorch: 2.0+ with torch_npu
  • transformers: 4.36.0 (注: 5.x版本存在兼容性问题,需使用4.36.0)

目录结构

C-RADIOv2-B-ascend/
├── inference.py          # 精度测试脚本
├── test.log               # 测试日志
├── README.md             # 本文档

部署步骤

1. 设置环境变量

source /usr/local/Ascend/ascend-toolkit/set_env.sh

2. 安装兼容版本transformers

pip install transformers==4.36.0

3. 准备模型文件

模型文件位于 /opt/atomgit/mxy/C-RADIOv2-B/ 目录下:

  • model.safetensors - 模型权重 (约374MB)
  • config.json - 配置文件
  • hf_model.py - HuggingFace模型定义

4. 执行精度测试

cd C-RADIOv2-B-ascend/
python3 inference.py --device npu:0

测试验证

精度测试结果

指标实测值阈值状态
Summary相对误差0.39%< 1%PASS
Features相对误差0.35%< 1%PASS

性能数据

操作耗时
模型加载4.02s
NPU 推理0.34s

输出规格

  • Summary shape: [1, 2304]
  • Spatial features shape: [1, 729, 768]
  • Summary 范围: [-1.8479, 1.1433]

测试日志

2026-05-19 10:47:13,576 - INFO - C-RADIOv2-B Ascend NPU Inference
2026-05-19 10:47:13,581 - INFO - Model path: /opt/atomgit/mxy/C-RADIOv2-B
2026-05-19 10:47:13,581 - INFO - Device: npu:0
2026-05-19 10:47:17,599 - INFO - Model loaded on device: npu:0
2026-05-19 10:47:17,599 - INFO - Model loaded in 4.02s
2026-05-19 10:47:17,857 - INFO - Inference time: 0.241s
2026-05-19 10:47:27,293 - INFO -   Summary PASS: True, Features PASS: True
2026-05-19 10:47:27,326 - INFO - PRECISION TEST PASSED

使用示例

运行推理

import torch
from PIL import Image
from transformers import AutoModel, AutoImageProcessor

model_path = "/opt/atomgit/mxy/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通道输入
encoderTransformer 编码器Vision Transformer
output特征输出summary + spatial features

重要说明

transformers版本兼容性

C-RADIOv2-B模型与transformers 5.x存在all_tied_weights_keys兼容性问题。需使用transformers 4.36.0版本。

NPU设备选择

推荐使用NPU 4-7进行推理:

  • NPU 0-3: 已占满
  • NPU 4-7: 可用

常见问题

Q: 精度测试失败?

A: 检查NPU驱动是否正确安装,确保CANN环境变量已source,并确认transformers版本为4.36.0。

Q: 模型加载慢?

A: 首次加载会进行权重解析,C-RADIOv2-B为90M模型,加载约需4秒。

Q: 如何选择NPU设备?

A: 使用 --device npu:4 (推荐) 或 npu:5/6/7。

许可证

本项目遵循 C-RADIOv2-B 原始 NVIDIA Open Model License。