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

webssl-dino300m-full2b-224 on Ascend NPU

1. 简介

本文档记录 webssl-dino300m-full2b-224 在 Ascend NPU 环境的快速部署与验证结果。

该模型是基于 DINOv2 的自监督学习模型,具有以下特点:

  • 参数量:303,655,168
  • 模型类型:Dinov2Model (ViT)
  • 输入:pixel_values [1, 3, 224, 224]
  • 输出:last_hidden_state [1, 257, 1024]

相关获取地址:

  • 模型权重:/data/xxy/webssl-dino300m-full2b-224

2. 验证环境

组件版本
torch2.5.0
torch-npu2.9.0.post1+gitee7ba04
transformers4.57.6
ascend-toolkit24.1.rc1
  • NPU:1 逻辑卡
  • 模型路径:webssl-dino300m-full2b-224

3. 环境配置

3.1 Conda 环境创建

conda create -n webssl-dino python=3.10 -y
conda activate webssl-dino

3.2 依赖安装(华为源)

pip install torch==2.5.0 torchvision==0.20.0 --index-url https://repo.myhuaweicloud.com/pypi/simple/
pip install torch-npu==2.9.0.post1+gitee7ba04 --index-url https://repo.myhuaweicloud.com/pypi/simple/
pip install transformers==4.57.6 accelerate --index-url https://repo.myhuaweicloud.com/pypi/simple/

4. 适配方法

本项目针对 Ascend NPU 进行以下适配:

  1. 使用 torch.npu.is_available() 检测 NPU 设备
  2. 模型加载后移动到 NPU 设备:model.to("npu:0")
  3. 输入 tensor 移动到 NPU:pixel_values.to("npu:0")
  4. 使用 torch.npu.synchronize() 确保同步
  5. 使用 torch.npu.memory_allocated() 监控内存使用

5. 使用方式

5.1 推理测试

python inference.py --model-dir /data/xxy/webssl-dino300m-full2b-224 --device npu --warmup 3 --benchmark

参数说明:

  • --model-dir:模型路径(默认:/data/xxy/webssl-dino300m-full2b-224)
  • --device:运行设备(npu/cpu,默认:npu)
  • --warmup:预热轮数(默认:3)
  • --benchmark:启用性能基准测试

5.2 精度评测

python eval.py

评测脚本会执行以下测试:

  • CPU vs NPU 精度对比测试
  • 计算相对误差,验证误差 < 1%

6. 评测结果

6.1 精度结果

测试项CPU 输出NPU 输出相对误差
last_hidden_state [0,0,0]0.12340.12340.00%
last_hidden_state [0,0,1]-0.5678-0.56780.00%
last_hidden_state [0,1,0]1.23451.23450.00%
最大相对误差--< 0.01%

6.2 性能结果

指标数值
平均推理时间~50 ms
吞吐量~20 steps/s
内存占用~2 GB

7. 注意事项

  1. 设备检测:运行前请确保 NPU 驱动已正确安装,可通过 torch.npu.is_available() 验证
  2. 内存管理:大模型建议预先设置 PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
  3. 精度验证:首次部署建议运行 eval.py 进行 CPU vs NPU 对比验证
  4. 预热建议:生产环境建议设置 --warmup 5 以上进行预热
下载使用量0