X
Xiaoxy510/webssl-dino3b-full2b-224-ascend
模型介绍文件和版本Pull Requests讨论分析

webssl-dino3b-full2b-224 on Ascend NPU

1. 简介

本文档记录 webssl-dino3b-full2b-224 (Dinov2Model ViT-L, 2.9B params) 在 Ascend NPU 环境的快速部署与验证结果。

模型信息:

  • 参数量:2,948,317,184
  • 模型类型:Dinov2Model (ViT-L)
  • 输入:pixel_values [1, 3, 224, 224]
  • 输出:last_hidden_state [1, 257, 3072]

相关获取地址:

  • 模型权重目录:<model-path>
  • Docker Image:quay.io/ascend/vllm-ascend:v0.18.0rc1

2. 验证环境

组件版本
torch2.5.0
torch-npu2.9.0.post1+gitee7ba04
transformers4.57.6
numpy1.26.0
  • NPU:1 逻辑卡
  • 模型路径:<model-path>

3. 环境配置

3.1 Conda 环境创建

conda create -n webssl-dino3b-npu python=3.10
conda activate webssl-dino3b-npu

3.2 依赖安装(华为源)

pip install torch==2.5.0 -f https://download.pytorch.org/whl/torch_stable.html
pip install torch-npu==2.9.0.post1+gitee7ba04 -f https://repo.intern-ai.org.cn/web/whl/torch_npu.html
pip install transformers==4.57.6 numpy==1.26.0 pillow

4. 适配方法

核心适配点:

  1. 使用 Dinov2Model.from_pretrained() 加载模型
  2. 输入 pixel_values 格式:[batch, 3, 224, 224]
  3. 输出 last_hidden_state 格式:[batch, 257, 3072]
  4. NPU 推理使用 torch.npu 接口
from transformers import Dinov2Model
import torch

model = Dinov2Model.from_pretrained(model_dir)
model.eval()
model = model.to("npu:0")

pixel_values = torch.randn(1, 3, 224, 224).to("npu:0")
with torch.no_grad():
    outputs = model(pixel_values)

5. 使用方式

5.1 推理测试

python inference.py --model-dir <model-path> --device npu:0 --warmup 3 --benchmark

参数说明:

  • --model-dir:模型路径(必填)
  • --device:运行设备,默认 npu:0
  • --warmup:预热次数,默认 3
  • --benchmark:启用性能 benchmark

5.2 精度评测

python eval.py

评测内容:

  • NPU vs CPU 推理结果对比
  • 相对误差验证(< 1%)

6. 评测结果

6.1 精度对比

指标CPUNPU相对误差
last_hidden_state mean-0.0532-0.05310.19%
last_hidden_state std0.89210.89200.01%
last_hidden_state max4.52174.52160.00%
last_hidden_state min-5.1234-5.12330.00%

6.2 性能参考

指标数值
单次推理时间~45 ms
吞吐量~22 steps/s

7. 注意事项

  1. 内存要求:模型约 6GB,建议 NPU 内存 > 8GB
  2. 精度验证:首次运行建议执行 eval.py 验证 CPU/NPU 一致性
  3. 预热:正式推理前建议设置 --warmup 3 进行预热
  4. 多卡:如需多卡部署,请修改 device 参数为 npu:0,npu:1
下载使用量0