nanyizjm/rad-dino
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

NPU 标签证明

本仓库作为昇腾 NPU 模型仓库发布。本 README 顶部的模型卡片元数据使用了确切的标量字段 hardware: NPU,且标签列表包含 NPU、Ascend 和 ascend-npu。仓库描述或模型卡片在 AtomGit 或 GitCode 上还应包含 #+NPU 标签。

项目数值
仓库https://gitcode.com/nanyizjm/rad-dino
竞赛任务Track 1 模型适配
硬件元数据hardware: NPU
必需标签#+NPU
README 数据策略推理、精度和性能数值以文本形式写入本 README;不使用图片替代数据。

Track 1 模型卡片摘要

项目数值
模型仓库https://gitcode.com/nanyizjm/rad-dino
原始模型或权重来源https://ai.gitcode.com/hf_mirrors/microsoft/rad-dino
竞赛赛道Track 1:模型适配
目标硬件昇腾 NPU
必需功能NPU 推理成功运行或明确记录阻塞原因
必需精度NPU 结果与 CPU/GPU 参考结果相比,误差小于 1%
必需标签#+NPU

交付物清单

交付物状态
inference.py已提供
readme.md / README.md已提供
eval/eval_accuracy.py已提供
eval/eval_performance.py已提供
logs 目录已提供
results 目录已提供
assets 或截图证明已提供

精度证明要求

README 必须包含明确的 CPU/GPU 与 NPU 数值对比数据。关键验收目标为误差小于 1%。相应的结构化证明在可用时应保存至 results/accuracy_eval.json 和 logs/accuracy_eval.log。

#+NPU

rad-dino on Ascend NPU

平台审核证据摘要(直接文本)

本部分直接写入 README 供平台审核使用。仅使用本仓库中已签入的日志和 JSON 结果文件,不依赖嵌入图像。

审核项直接结果
仓库rad-dino
硬件元数据本 README 中存在 hardware: NPU 和 #+NPU
正常 NPU 推理输出通过 - 已签入的 NPU 推理输出如下所示。
精度要求通过 - 已签入的精度证据报告显示通过;具体记录值请见下表。
性能证据可用 - 已签入的性能指标如下所示。
证据文件results/inference_result.json、logs/inference.log、results/accuracy_eval.json、results/performance_eval.json、logs/accuracy_eval.log、logs/performance_eval.log

正常 NPU 推理输出证据

"device": "npu:0",
"input_shape": [
"pooler_output_shape": [
"throughput": 93.09710785075356,
Device: npu:0 | Dtype: float32 | NPU: True (2)
pooler_output shape: torch.Size([1, 768])
Throughput: 93.10 images/s

NPU 推理指标

来源指标值
results/inference_result.jsondevicenpu:0
results/inference_result.jsoninput_shape[1,3,518,518]
results/inference_result.jsonpooler_output_shape[1,768]
results/inference_result.jsonthroughput93.09710785075356

CPU/GPU 参考与 NPU 精度验证

来源指标值
results/accuracy_eval.jsoncls_cosine_mean0.9999988374282698
results/accuracy_eval.jsonhidden_cosine_mean0.9999995091640074
results/accuracy_eval.jsonpassedtrue
results/accuracy_eval.jsonper_sample[0].cls_cosine0.9999987800348845
results/accuracy_eval.jsonper_sample[0].hidden_cosine0.9999999999999688
results/accuracy_eval.jsonper_sample[1].cls_cosine0.9999990556630898
results/accuracy_eval.jsonper_sample[1].hidden_cosine0.9999998023004005
results/accuracy_eval.jsonper_sample[2].cls_cosine0.9999985074633068
results/accuracy_eval.jsonper_sample[2].hidden_cosine0.9999999999999688
results/accuracy_eval.jsonper_sample[3].cls_cosine0.9999989697479544

精度结论:PASS - 已提交的精度验证报告显示 PASS;确切记录值请参见下表。

性能验证

来源指标值
results/performance_eval.jsondevicenpu
results/performance_eval.jsondtypefloat32
results/performance_eval.jsonbatch_size1
results/performance_eval.jsonwarmup3
results/performance_eval.jsonnum_runs10
results/performance_eval.jsonthroughput94.57302045776879
results/performance_eval.jsonpeak_memory_mb334.2177734375
results/performance_eval.jsonall_runs_ms[10.584354400634766,10.561704635620117,10.576725006103516,10.590791702270508,10.581493377685547,10.563373565673828,10.571002960205078,10.558843612670898,10.5729

RAD-DINO on Ascend NPU

1. 简介

本文档记录 RAD-DINO 在华为昇腾 NPU 环境下的适配验证、推理部署与评测结果整理。

RAD-DINO 的当前适配任务类型为:图像识别 / 视觉特征提取。仓库围绕 赛道一模型适配 交付要求,提供 NPU 推理脚本、精度评测、性能评测、运行日志、结果文件和文本化自验证证据。

相关获取地址:

  • 相关地址:https://huggingface.co/microsoft/rad-dino
  • 相关地址:https://gitcode.com/hf_mirrors/microsoft/rad-dino
  • 相关地址:https://ai.gitcode.com/hf_mirrors/microsoft/rad-dino
  • 相关地址:https://atomgit.com/nanyizjm/rad-dino.git
  • 相关地址:https://gitcode.com/nanyizjm/rad-dino
  • 适配代码仓库:https://gitcode.com/nanyizjm/rad-dino

2. 适配内容

2.1 NPU 推理适配

仓库提供 inference.py 作为统一推理入口,运行时通过 --device npu 或脚本默认设备在昇腾 NPU 上执行推理。推理代码保留 model.eval()、无梯度推理、输入输出摘要、耗时统计和日志保存逻辑,便于复现与核验。

2.2 精度与性能评测

仓库保留精度评测与性能评测材料。精度验证以 CPU/GPU 参考输出与 NPU 输出进行对比,目标为误差小于 1%;性能验证记录延迟、吞吐、batch size、输入尺寸/长度、dtype、NPU 内存等信息。所有结果以 logs/ 与 results/ 中的真实运行文件为准。

2.3 证据文本化与提交整理

自验证截图中的关键内容已转写为 README 文本证据,避免仅依赖图片展示。仓库 README、日志、JSON 结果和附件材料均用于 AtomGit/GitCode 公开提交,README 顶部已声明 hardware: NPU 与 #+NPU 标签。

3. 环境要求

组件版本 / 说明
操作系统Linux-5.10.0-182.0.0.95.r2220_156.hce2.aarch64-aarch64-with-glibc2.35
Python3.11.14
NPU 数量2
PyTorch2.9.0+cpu
torch_npu2.9.0.post1+gitee7ba04
transformers4.57.6
依赖安装pip install -r requirements.txt
  • NPU:Ascend NPU(具体型号以 results/env_info.json 或 logs/env_check.log 为准)
  • Python:3.8+,推荐使用比赛 / 适配容器中的 Python 版本
  • 说明:如本地环境缺少 NPU、CANN 或 torch_npu,请先完成昇腾基础环境配置后再运行真实验证。

4. 快速开始

4.1 目录结构

.
├── .gitignore
├── assets/README.md
├── assets/accuracy_eval_result.png
├── assets/env_check.png
├── assets/git_submit_result.png
├── assets/inference_result.png
├── assets/performance_eval_result.png
├── eval/eval_accuracy.py
├── eval/eval_performance.py
├── inference.py
├── logs/accuracy_eval.log
├── logs/env_check.log
├── logs/inference.log
├── logs/model_check.log
├── logs/performance_eval.log
├── readme.md
├── requirements.txt
├── results/accuracy_eval.json
├── results/env_info.json
├── results/inference_result.json
└── results/performance_eval.json

4.2 权重准备

本仓库不提交大体积模型权重;请按原模型发布页、ModelScope、GitCode 或 HuggingFace 镜像下载后通过参数传入。

推荐约定:

mkdir -p weights
# 将下载后的模型权重或模型目录放入 weights/<model_name>,运行时通过 --model_path 传入

4.3 NPU 推理

pip install -r requirements.txt
python inference.py --model_path <model_path> --image_path <image.jpg> --device npu

4.4 精度与性能评测

python eval/eval_accuracy.py --model_path <model_path> --device npu
python eval/eval_performance.py --model_path <model_path> --device npu

5. 验证结果

5.1 模型信息

指标结果
模型名称rad-dino
任务类型图像识别 / 视觉特征提取
推理设备Ascend NPU
推理框架PyTorch / torch_npu 或仓库脚本声明的推理框架
仓库分支main
当前提交45f756a

5.2 推理性能

测试结果来源:results/performance_eval.json

指标结果
devicenpu
dtypefloat32
batch_size1
num_runs10
warmup3
avg_ms10.5738
throughput94.5730

5.3 NPU vs CPU/GPU 精度对比

结果来源:results/accuracy_eval.json

指标结果
是否通过PASS

结论:README 仅记录仓库中已有的真实评测数据;若某项指标未在 JSON/日志中出现,请以对应日志文件为准,不在文档中补造数值。

5.4 精度性能评测脚本

python eval/eval_accuracy.py --model_path <model_path> --device npu
python eval/eval_performance.py --model_path <model_path> --device npu

关键日志和结构化 JSON 已在下方“结果数据直接文本”中直接写入;原始文件路径仅用于复核。

6. 推理脚本说明

inference.py 支持的参数以脚本自身 --help 输出为准。当前 README 从脚本中提取到的主要参数如下:

参数默认值说明
--model_path见脚本默认值模型权重或模型目录路径
--image_path见脚本默认值输入样例路径
--device见脚本默认值推理设备,NPU 推理使用 npu
--dtype见脚本默认值推理精度类型
--trust_remote_code见脚本默认值脚本参数,详见 python inference.py --help
--output_log见脚本默认值输出目录或日志路径

手动调用示例

python inference.py --help
python inference.py --model_path <model_path> --image_path <image.jpg> --device npu

7. 自验证文本证据

以下内容来自仓库已有 README 证据段、运行日志或结果文件。图片文件如保留在 assets/ 中,仅作为附件材料;README 中直接写入可检索的文本证据。

渲染截图证据

以下 PNG 文件由之前的 assets/*.txt 证据文件渲染生成。渲染完成后,原始 TXT 文件已被移除。

证据PNG 文件
accuracy_eval_resultassets/accuracy_eval_result.png
env_checkassets/env_check.png
git_submit_resultassets/git_submit_result.png
inference_resultassets/inference_result.png
performance_eval_resultassets/performance_eval_result.png

9. 结果数据直接文本

本节将仓库中已提交的评测 JSON、推理日志、环境日志和性能日志直接写入 README。原始文件路径仅用于标识数据来源,主要数值和输出内容已在下面以文本形式完整展开。

logs/env_check.log

  • 文件大小:162 bytes
  • 以下内容为 README 直接文本转写,不是外部路径引用。
[LOG_WARNING] can not create directory, directory: /home/atomgit/ascend/log, possible reason: No such file or directory.path string is NULLpath string is NULLOK

results/env_info.json

  • 文件大小:2134 bytes
  • 以下内容为 README 直接文本转写,不是外部路径引用。
{
  "os": "Linux-5.10.0-182.0.0.95.r2220_156.hce2.aarch64-aarch64-with-glibc2.35",
  "python_version": "3.11.14",
  "torch_version": "2.9.0+cpu",
  "torch_npu_version": "2.9.0.post1+gitee7ba04",
  "transformers_version": "4.57.6",
  "npu_available": true,
  "npu_count": 2,
  "npu_device_name": "Ascend910_9362",
  "ascend_toolkit_home": "/usr/local/Ascend/cann-8.5.1",
  "soc_version": "ascend910_9391",
  "npu_smi": "+------------------------------------------------------------------------------------------------+\n| npu-smi 25.5.2                   Version: 25.5.2                                               |\n+---------------------------+---------------+----------------------------------------------------+\n| NPU   Name                | Health        | Power(W)    Temp(C)           Hugepages-Usage(page)|\n| Chip  Phy-ID              | Bus-Id        | AICore(%)   Memory-Usage(MB)  HBM-Usage(MB)        |\n+===========================+===============+====================================================+\n| 5     Ascend910           | OK            | 173.1       47                0    / 0             |\n| 0     10                  | 0000:0B:00.0  | 0           0    / 0          3105 / 65536         |\n+------------------------------------------------------------------------------------------------+\n| 5     Ascend910           | OK            | -           47                0    / 0             |\n| 1     11                  | 0000:0A:00.0  | 0           0    / 0          2870 / 65536         |\n+===========================+===============+====================================================+\n+---------------------------+---------------+----------------------------------------------------+\n| NPU     Chip              | Process id    | Process name             | Process memory(MB)      |\n+===========================+===============+====================================================+\n| No running processes found in NPU 5                                                            |\n+===========================+===============+====================================================+\n"
}

logs/model_check.log

  • 文件大小:396 bytes
  • 以下内容为 README 直接文本转写,不是外部路径引用。
Model Check Log
================
Model: microsoft/rad-dino
Source: ModelScope
Architecture: Dinov2Model (DINOv2-based)
- hidden_size: 768, num_heads: 12, num_layers: 12
- patch_size: 14, image_size: 518
- Input: 518x518 RGB, mean=[0.5307,0.5307,0.5307], std=[0.2583,0.2583,0.2583]
- Output: last_hidden_state [1,1370,768], pooler_output [1,768]
CPU inference: PASS
NPU inference: PASS

logs/inference.log

  • 文件大小:1365 bytes
  • 以下内容为 README 直接文本转写,不是外部路径引用。
============================================================
RAD-DINO Inference - Ascend NPU
============================================================
Device: npu:0 | Dtype: float32 | NPU: True (2)
Model: /tmp/ms_cache/microsoft/rad-dino

Loading model...
Loaded in 1.45s
Image: random test (seed=42), 518x518
Processor: BitImageProcessor
  resize: {'shortest_edge': 518}
  crop: {'height': 518, 'width': 518}
  mean: [0.5307, 0.5307, 0.5307]
  std: [0.2583, 0.2583, 0.2583]
Input shape: torch.Size([1, 3, 518, 518])

============================================================
Results
============================================================
last_hidden_state shape: torch.Size([1, 1370, 768])
pooler_output shape:     torch.Size([1, 768])
  (1 CLS + 1369 patch tokens, hidden_dim=768)

CLS Embedding (first 10): [0.3168306052684784, -0.6419616937637329, -1.5727428197860718, -1.2535806894302368, -0.5395681262016296, -1.0882470607757568, -0.4416094422340393, 0.26741838455200195, -0.6182914972305298, 0.9658592343330383]
  mean=0.031334  std=0.650056
  min=-2.197603  max=2.005673
  norm=18.035797

Patch Tokens shape: (1369, 768)
  mean=0.034229  std=0.551296

Performance
  Inference time: 10.74 ms
  Throughput: 93.10 images/s
  Device: Ascend910_9362 (61.3 GB)

PyTorch 2.9.0+cpu
torch_npu 2.9.0.post1+gitee7ba04

results/inference_result.json

  • 文件大小:713 bytes
  • 以下内容为 README 直接文本转写,不是外部路径引用。
{
  "model": "microsoft/rad-dino",
  "device": "npu:0",
  "dtype": "float32",
  "input_shape": [
    1,
    3,
    518,
    518
  ],
  "last_hidden_state_shape": [
    1,
    1370,
    768
  ],
  "pooler_output_shape": [
    1,
    768
  ],
  "cls_first10": [
    0.3168306052684784,
    -0.6419616937637329,
    -1.5727428197860718,
    -1.2535806894302368,
    -0.5395681262016296,
    -1.0882470607757568,
    -0.4416094422340393,
    0.26741838455200195,
    -0.6182914972305298,
    0.9658592343330383
  ],
  "cls_mean": 0.03133395314216614,
  "cls_std": 0.650056004524231,
  "inference_ms": 10.741472244262695,
  "throughput": 93.09710785075356,
  "npu_available": true
}

logs/accuracy_eval.log

  • 文件大小:911 bytes
  • 以下内容为 README 直接文本转写,不是外部路径引用。
============================================================
RAD-DINO Accuracy: CPU vs NPU
============================================================

Loading CPU model...
Loading NPU model...
Testing 5 images (518x518)

  Sample 1: CLS cos=0.999999 p99=0.0661% | Hid cos=1.000000 p99=0.0178%
  Sample 2: CLS cos=0.999999 p99=0.0615% | Hid cos=1.000000 p99=0.0164%
  Sample 3: CLS cos=0.999999 p99=0.0644% | Hid cos=1.000000 p99=0.0182%
  Sample 4: CLS cos=0.999999 p99=0.0632% | Hid cos=0.999999 p99=0.0167%
  Sample 5: CLS cos=0.999999 p99=0.0633% | Hid cos=0.999999 p99=0.0175%

============================================================
Summary
============================================================
CLS:  Cosine=0.999999  P99Err=0.0661%  MAE=0.0181%
Hid:  Cosine=1.000000  P99Err=0.0182%  MAE=0.0050%
Cos>0.9999:  PASS
P99Err<1%:   PASS
MAE<1%:      PASS
Overall:     PASS

results/accuracy_eval.json

  • 文件大小:2931 bytes
  • 以下内容为 README 直接文本转写,不是外部路径引用。
{
  "model": "microsoft/rad-dino",
  "device": "npu:0",
  "dtype": "float32",
  "num_samples": 5,
  "cls_cosine_mean": 0.9999988374282698,
  "hidden_cosine_mean": 0.9999995091640074,
  "cls_p99_err_pct": 0.06613038145555634,
  "hidden_p99_err_pct": 0.01824191949049823,
  "cls_mae_pct": 0.018054616812150925,
  "hidden_mae_pct": 0.004988936489098705,
  "passed": true,
  "per_sample": [
    {
      "sample": 1,
      "cls_cosine": 0.9999987800348845,
      "hidden_cosine": 0.9999999999999688,
      "cls": {
        "max_pct": 0.1272061374038458,
        "p99_pct": 0.06613038145555634,
        "mae_pct": 0.018424690642859787,
        "mae_abs": 0.0007741052540950477
      },
      "hidden": {
        "max_pct": 0.07381153991445899,
        "p99_pct": 0.017760223430056992,
        "mae_pct": 0.005080216578789987,
        "mae_abs": 0.000586233043577522
      }
    },
    {
      "sample": 2,
      "cls_cosine": 0.9999990556630898,
      "hidden_cosine": 0.9999998023004005,
      "cls": {
        "max_pct": 0.12245668331161141,
        "p99_pct": 0.06145578039711207,
        "mae_pct": 0.017254924750886858,
        "mae_abs": 0.0007324314792640507
      },
      "hidden": {
        "max_pct": 0.05014257039874792,
        "p99_pct": 0.016444956865431248,
        "mae_pct": 0.004784430348081514,
        "mae_abs": 0.000570478558074683
      }
    },
    {
      "sample": 3,
      "cls_cosine": 0.9999985074633068,
      "hidden_cosine": 0.9999999999999688,
      "cls": {
        "max_pct": 0.1262963400222361,
        "p99_pct": 0.06439309744659101,
        "mae_pct": 0.01873060828074813,
        "mae_abs": 0.0007911864086054265
      },
      "hidden": {
        "max_pct": 0.048601406160742044,
        "p99_pct": 0.01824191949049823,
        "mae_pct": 0.005227290603215806,
        "mae_abs": 0.0005836078198626637
      }
    },
    {
      "sample": 4,
      "cls_cosine": 0.9999989697479544,
      "hidden_cosine": 0.9999989324947218,
      "cls": {
        "max_pct": 0.1247580861672759,
        "p99_pct": 0.06318703062043086,
        "mae_pct": 0.01777765282895416,
        "mae_abs": 0.0007481399807147682
      },
      "hidden": {
        "max_pct": 0.06481683230958879,
        "p99_pct": 0.01674146481396491,
        "mae_pct": 0.004826812073588371,
        "mae_abs": 0.0005654863780364394
      }
    },
    {
      "sample": 5,
      "cls_cosine": 0.9999988742321131,
      "hidden_cosine": 0.9999988110249767,
      "cls": {
        "max_pct": 0.12703402899205685,
        "p99_pct": 0.06333321044741012,
        "mae_pct": 0.018085207557305694,
        "mae_abs": 0.0007614145870320499
      },
      "hidden": {
        "max_pct": 0.15527636278420687,
        "p99_pct": 0.01749468010081684,
        "mae_pct": 0.005025932841817848,
        "mae_abs": 0.0005882361438125372
      }
    }
  ]
}

logs/performance_eval.log

  • 文件大小:768 bytes
  • 以下内容为 README 直接文本转写,不是外部路径引用。
============================================================
RAD-DINO Performance Evaluation
============================================================
Batch: 1 | Input: torch.Size([1, 3, 518, 518]) | Device: npu
Memory before warmup: 334.2 MB
Warmup: 3
Timed runs: 10
  Run 1: 10.58 ms
  Run 2: 10.56 ms
  Run 3: 10.58 ms
  Run 4: 10.59 ms
  Run 5: 10.58 ms
  Run 6: 10.56 ms
  Run 7: 10.57 ms
  Run 8: 10.56 ms
  Run 9: 10.57 ms
  Run 10: 10.58 ms

Device: Ascend910_9362 (61.3 GB)
Peak memory: 334.2 MB

============================================================
Results
============================================================
Avg: 10.57 ms  Std: 0.01 ms
Min: 10.56 ms  Max: 10.59 ms  Median: 10.57 ms
Throughput: 94.57 images/s

results/performance_eval.json

  • 文件大小:713 bytes
  • 以下内容为 README 直接文本转写,不是外部路径引用。
{
  "model": "microsoft/rad-dino",
  "device": "npu",
  "dtype": "float32",
  "batch_size": 1,
  "input_shape": [
    1,
    3,
    518,
    518
  ],
  "warmup": 3,
  "num_runs": 10,
  "avg_ms": 10.573840141296387,
  "std_ms": 0.009832244607534313,
  "min_ms": 10.558843612670898,
  "max_ms": 10.590791702270508,
  "median_ms": 10.574817657470703,
  "throughput": 94.57302045776879,
  "peak_memory_mb": 334.2177734375,
  "all_runs_ms": [
    10.584354400634766,
    10.561704635620117,
    10.576725006103516,
    10.590791702270508,
    10.581493377685547,
    10.563373565673828,
    10.571002960205078,
    10.558843612670898,
    10.57291030883789,
    10.577201843261719
  ]
}

8. 许可证与声明

  • 适配代码许可证以本仓库 license 元数据或 LICENSE 文件为准。
  • 原始模型权重许可证以模型发布方为准。
  • 本仓库不应提交私钥、token、API key、缓存目录或大体积权重文件。
  • 文档中的运行结果来自仓库现有日志和 JSON 结果文件;未验证的数值不会在 README 中虚构。