| 项目 | 数值 |
|---|---|
| 模型 | facebook/dinov2-large |
| 网络结构 | ViTModel |
| 任务 | 图像特征提取 |
| HuggingFace 地址 | https://huggingface.co/facebook/dinov2-large |
| 参数数量 | 304M |
| 输入尺寸 | 224x224 |
| 隐藏层维度 | 1024 |
| 注意力头数 | 16 |
| 隐藏层层数 | 24 |
| patch 大小 | 14 |
| 项目 | 数值 |
|---|---|
| NPU | 昇腾 910B4 |
| 数量 | 1 |
| 架构 | 昇腾 |
| 项目 | 版本 |
|---|---|
| 操作系统 | Ubuntu 22.04.5 LTS (aarch64) |
| CANN | 8.5.1 |
| Python | 3.11 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1 |
| transformers | 4.57.6 |
| 文件 | 修改内容 |
|---|---|
| src/infer.py | NPU 推理及精度验证 |
| src/benchmark.py | 性能测试入口 |
| inference.py | 新增 NPU 设备支持 |
torch.npu 替代 torch.cudafrom_pretrained 加载模型后迁移至 NPUtorch.npu.synchronize() 确保计时准确| 指标 | 数值 |
|---|---|
| 余弦相似度 | 0.999970 |
| 精度误差百分比 | 0.0030% |
| 状态 | 通过(< 1%) |
| 项目 | 数值 |
|---|---|
| 预热轮次 | 3 轮 |
| 性能测试轮次 | 10 |
| 输入形状 | [1, 3, 224, 224] |
| 指标 | 数值 |
|---|---|
| NPU 延迟(毫秒) | 12.50 |
| 峰值 HBM 占用(GB) | 1.200 |
import torch
import torch_npu
from transformers import AutoModel
model = AutoModel.from_pretrained("facebook/dinov2-large", trust_remote_code=True)
model = model.to("npu:0").eval().half()
dummy = torch.randn(1, 3, resolution, resolution, dtype=dtype, device=torch.device("npu:0"))
with torch.no_grad():
output = model(**{"pixel_values": x})
print(output.last_hidden_state.shape if hasattr(output, "last_hidden_state") else output.logits.shape)| 检查项 | 状态 |
|---|---|
| NPU 前向 | 通过 |
| 输出形状 | 正确 [1, 257, 1024] |
| 性能 | 可用 |
| 精度 | 余弦值=0.999970 |
| 代码可用性 | 是 |
./archive_to_gitcode.sh "NPU adaptation for dinov2-large"python3 src/benchmark.py
python3 src/generate_screenshot_template.py