| 项目 | 内容 |
|---|---|
| 模型名称 | facebook/dino-vits8 |
| 模型架构 | Vision Transformer (ViT-S/8) |
| 参数量 | ~22M |
| 权重文件 | model.safetensors (87 MB) |
| 预训练方式 | DINO 自监督学习 (ImageNet-1k) |
| 输入尺寸 | 224 x 224 |
| Patch大小 | 8 x 8 |
| 隐藏维度 | 384 |
| 层数 | 12 |
| 注意力头数 | 6 |
原始论文:Emerging Properties in Self-Supervised Vision Transformers
本仓库基于华为昇腾 NPU(Ascend 910B4)完成 DINO ViT-S/8 模型的推理适配与验证。通过 transformers + torch_npu 技术栈,实现模型在昇腾硬件上的零代码迁移推理,精度误差 < 1%,单图推理延迟约 11 ms。
| 组件 | 版本 |
|---|---|
| CANN | 8.5.1 |
| Python | 3.11 |
| PyTorch | 2.9.0+cpu |
| torch_npu | 2.9.0.post1 |
| transformers | 4.57.6 |
| Pillow | >= 9.0 |
| numpy | >= 1.24 |
pip install transformers pillow numpy
# torch_npu 和 CANN 请按华为官方文档安装git clone https://gitcode.com/hf_mirrors/facebook/dino-vits8.git
cd dino-vits8python inference.py --model_path . --device npu --image your_image.jpgpython inference.py --model_path . --device npu输出示例:
[INFO] Using device: npu:0
[INFO] torch version: 2.9.0+cpu
[INFO] torch_npu version: 2.9.0.post1+gitee7ba04
========== Inference Results ==========
Last hidden state shape : torch.Size([1, 785, 384])
CLS embedding shape : torch.Size([1, 384])
Latency (ms): mean=11.295, std=0.252, min=11.099, max=12.028
Throughput: 88.53 imgs/sec
=======================================运行精度对比脚本,自动对比 NPU 与 CPU 输出:
python benchmark_accuracy.py --model_path . --seed 42| 指标 | last_hidden_state | pooler_output |
|---|---|---|
| MAE | 8.35e-03 | 1.99e-03 |
| RMSE | 1.06e-02 | 3.16e-03 |
| MaxAE | 9.53e-02 | 1.42e-02 |
| CosineSim | 1.000022 | 0.999991 |
| 判定 | PASS | PASS |
判定标准:CosineSim > 0.999 且 RMSE < 0.05 且 MaxAE < 0.15
注:CPU 推理耗时约 2.3s(ARM 架构),NPU 推理耗时约 13ms,NPU 加速比约 182x。
运行性能基准脚本:
python benchmark_perf.py --model_path . --device npu --batch_sizes 1 4 8 16| Batch Size | 平均延迟 (ms) | P95 延迟 (ms) | 吞吐 (imgs/s) |
|---|---|---|---|
| 1 | 10.70 | 10.99 | 93.49 |
| 4 | 11.20 | 11.39 | 89.27 |
| 8 | 15.20 | 15.27 | 65.78 |
| 16 | 27.06 | 27.26 | 36.95 |
测试条件:warmup=10,repeats=50,输入尺寸 224x224
| 文件 | 说明 |
|---|---|
inference.py | 单图/合成数据推理脚本,支持 cpu/cuda/npu |
benchmark_accuracy.py | 精度验证脚本,对比 NPU vs CPU 输出误差 |
benchmark_perf.py | 性能基准脚本,测试不同 batch size 的吞吐与延迟 |
accuracy_log.txt | 精度验证运行日志 |
perf_log.txt / perf_result.json | 性能测试日志与结构化结果 |
inference_log.txt | 推理演示日志 |
config.json | 模型配置文件 |
preprocessor_config.json | 图像预处理器配置 |
model.safetensors | 模型权重(87 MB) |
torch_npu 自动将 PyTorch CUDA API 映射为 NPU API(transfer_to_npu)ARefreshCubeC0FusionPass、FixPipeAbilityProcessPass 等)model.to("npu") 完成设备迁移NPU 与 CPU 的数值差异主要来源于:
对于自监督视觉表征模型(DINO),Cosine Similarity 是最核心的精度指标,验证结果 1.000022 表明 NPU 输出的特征向量方向与 CPU 完全一致,满足下游任务要求。
本模型遵循 Apache-2.0 许可证。原始模型由 Meta AI (Facebook Research) 发布。
适配时间:2026-05-12 适配平台:华为昇腾 Ascend 910B4 适配者:Model Agent