facebook/dino-vitb16 是使用 DINO(自监督视觉 Transformer 预训练方法)在 ImageNet-1k 上训练的 ViT-B/16 视觉编码器,出自论文 Emerging Properties in Self-Supervised Vision Transformers。模型将 224×224 图像切分为 16×16 patch 序列,经 12 层 Transformer encoder 编码,last_hidden_state[:, 0](CLS token)可作为整图的图像嵌入。
ViTModel(ViT-Base / Patch 16 / 224)pytorch_model.bin(float32,约 343 MB)| 项目 | 值 |
|---|---|
| NPU | Ascend910_9362(npu:0,2 卡,每卡 64 GB HBM) |
| CANN | 8.5.1 |
| torch | 2.9.0 |
| torch_npu | 2.9.0.post1+gitee7ba04 |
| transformers | 4.57.6 |
| Python | 3.11.14 |
| 操作系统 | Linux aarch64 |
pip install -r requirements.txt默认命令在 npu:0 上加载本地权重并完成真实推理:
python inference.py可选模式:
python inference.py --mode validate # 增加 CPU-NPU 一致性验证
python inference.py --mode benchmark # 延迟 / 峰值显存基准测试inference.py 会优先从本地模型目录加载权重(不提交权重文件),本地不存在时显式下载。默认使用 4 张固定随机种子的确定性合成图像(3 张不同图像 + 1 张第 1 张的复制图)作为输入,完全可复现、离线可运行。
在 npu:0 上执行 python inference.py(fp32,batch=1,224×224):
model_name : facebook/dino-vitb16
device : npu:0
dtype : fp32
first_param : device=npu:0 dtype=torch.float32
embedding_shape : (4, 768)
cos_sim(0,0-copy) : 1.000000
cos_sim(0,1) : 0.991883
cos_sim(0,2) : 0.985143
retrieval_check : PASS (self-sim 1.0000 > cross-sim 0.9919)
RESULT: PASSlast_hidden_state 形状 (1, 197, 768),CLS embedding 形状 (batch, 768)1.000000,明显高于不同图像对(0.991883 / 0.985143),说明模型在 NPU 上提取的图像嵌入具备判别性对同一批输入分别在 CPU 与 NPU 上提取 CLS 嵌入(均为 fp32),计算归一化嵌入的一致性:
cpu-npu cos sim : 0.99999344
max abs diff : 0.00069784 (normalized embeddings)
consistency_check: PASSCPU 与 NPU 嵌入余弦相似度 > 0.9999,方向一致性好;差异处于 fp32 跨设备数值波动范围。该验证为固定样例一致性检查,非完整数据集精度评测。
在 npu:0 上预热 3 次、正式测试 10 次(fp32,batch=1,224×224),关键区间前 torch.npu.synchronize():
| 指标 | 值 |
|---|---|
| 平均延迟 | 6.865 ms |
| 最小 / 最大延迟 | 6.731 / 7.053 ms |
| p50 / p90 / p95 | 6.870 / 6.936 / 6.994 ms |
| 峰值 NPU 显存 | 365.1 MiB |
assets/agent_workflow.png:下载、侦察、加载、NPU 推理、验证、性能全流程日志assets/npu_device_call.png:npu-smi info 与 torch.npu.is_available()、设备名、模型参数 device/dtypeassets/model_result.png:python inference.py 真实任务输出与 PASS/FAILpooler_output 使用随机初始化权重,因此本适配使用 last_hidden_state[:, 0](CLS token)作为图像嵌入。inference.py 默认使用确定性合成图像,如需真实图片可传入 --image <路径>。--dtype fp16 下进一步优化。Hardware: NPU · NPU · Ascend · Ascend910 · vision · dino