webssl-dino300m-full2b-224 on Ascend NPU
1. 简介
本文档记录 webssl-dino300m-full2b-224(Web-SSL DINO 300M)在昇腾 NPU(Ascend 910B3)环境的适配部署与精度验证结果。
Web-SSL DINO 300M 是一种基于 Vision Transformer 的视觉特征提取模型(参数量约 304M),使用 DINOv2 自监督方法在 20 亿网络图像上训练,无需语言监督。该模型输出 1024 维 CLS token 特征,适用于图像分类、检索等下游任务。本项目完成该模型在昇腾 NPU 上的推理适配,验证 NPU 与 CPU 推理结果的精度误差 < 1%。
相关地址:
2. 验证环境
| 组件 | 版本 |
|---|
| Python | 3.11.x |
| PyTorch | 2.10.0+cpu |
| torch_npu | 2.10.0 |
| transformers | 5.8.1 |
| safetensors | 0.7.0 |
| CANN | 8.5.1 |
| NPU 硬件 | Ascend 910B3 |
3. 模型信息
| 项目 | 值 |
|---|
| 模型架构 | ViT (DINOv2-based) |
| 参数量 | ~304M |
| 特征维度 | 1024 |
| Layers | 40 |
| Attention Heads | 24 |
| 输入尺寸 | 3×224×224 |
| 权重格式 | safetensors |
| 框架 | PyTorch (transformers) |
| 预训练数据 | 2B MetaCLIP web images |
| 许可证 | CC-BY-NC-4.0 |
4. Conda 环境安装
conda create -n webssl-dino300m python=3.11 -y
conda activate webssl-dino300m
pip install torch==2.10.0 torchvision==0.25.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install torch_npu==2.10.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install transformers safetensors pillow --index-url https://repo.huaweicloud.com/repository/pypi/simple/
5. 推理执行
# NPU
python3 inference.py --model_path /path/to/model --image_path /path/to/img.jpg
# CPU
python3 inference.py --model_path /path/to/model --image_path /path/to/img.jpg --device cpu
# 评测
python3 benchmark.py --model_path /path/to/model
6. 参数说明
| 脚本 | 参数 | 说明 | 默认值 |
|---|
| inference.py | --model_path | 模型路径 | 必需 |
| --image_path | 图像路径 | 必需 |
| --device | npu:0 或 cpu | npu:0 |
| benchmark.py | --model_path | 模型路径 | 必需 |
| --npu_device | NPU 设备 | npu:0 |
| --num_warmup | 预热轮数 | 3 |
7. 精度评测结果
| 输出张量 | 向量级相对误差 | 余弦相似度 | 最大绝对误差 | 平均绝对误差 |
|---|
| features | 0.006683% | 0.9999998212 | 2.58e-04 | 6.17e-05 |
| 指标 | 实测值 | 阈值 | 状态 |
|---|
| 向量级相对误差 | 0.0067% | < 1% | PASS |
| 余弦相似度 | 0.9999998 | > 0.99 | PASS |
8. 性能数据
| 操作 | 耗时 |
|---|
| CPU 推理时间(FP32) | 0.81s |
| NPU 推理时间(FP32,3轮预热后) | 0.15s |
| 加速比 | 5.43x |
9. 注意事项
- 使用
Dinov2Model 加载,输出 last_hidden_state 的 CLS token([:, 0])作为特征。
- 权重文件不包含在适配仓库中,需从 HuggingFace 下载。
- NPU 预热 3 轮消除首次编译开销。