X
Xiaoxy510/phikon-v2-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

phikon-v2 on Ascend NPU

1. 简介

本文档记录 phikon-v2 在昇腾 NPU 环境的适配与验证结果。

模型信息:

  • 模型类型:Vision Transformer (ViT-L/16)
  • 参数量:300M
  • 输入尺寸:[1, 3, 224, 224]
  • 输出:last_hidden_state + pooler_output

相关地址:

  • 权重下载地址(HuggingFace):https://huggingface.co/owkin/phikon-v2
  • 原项目地址:https://github.com/facebookresearch/dinov2

2. 验证环境

组件版本
torch2.10.0
torch_npu2.10.0
transformers5.8.1
  • NPU:1 逻辑卡
  • 模型路径:/data/xxy/phikon-v2
  • Conda 环境:phikon-v2

3. 环境配置

3.1 创建 conda 环境

conda create -n phikon-v2 python=3.11 -y
conda activate phikon-v2

3.2 安装依赖

pip install torch==2.10.0 torchvision --index-url https://download.pytorch.org/whl/cpu
pip install torch_npu transformers pillow -i https://repo.huaweicloud.com/repository/pypi/simple

3.3 验证环境

python -c "import torch; print('NPU available:', torch.npu.is_available())"

4. 适配方法

Phikon-v2 基于 DINOv2 模型,通过 HuggingFace AutoModel 加载,主要适配工作:

  1. 设备迁移:使用 model.to("npu:0") 将模型权重迁移到 NPU
  2. 输入处理:将输入张量移至 NPU 设备 pixel_values.to("npu:0")
  3. 同步调用:NPU 推理后调用 torch.npu.synchronize() 确保计算完成

5. 使用方式

5.1 基本推理

# 使用随机张量推理
python inference.py

# 使用图片推理
python inference.py --image /path/to/image.jpg

# 指定设备
python inference.py --device cpu
python inference.py --device npu:0

5.2 精度与性能评测

python eval.py

评测结果将输出到终端并保存到 log.txt。

6. 评测结果

6.1 精度评测

使用随机输入对比 CPU 与 NPU 输出,计算最大绝对误差相对于值范围的百分比。

输出最大绝对误差相对误差 (%)
last_hidden_state1.67e-020.1997
pooler_output8.47e-030.3246
全局1.67e-020.3246 ✅

精度阈值要求:相对误差 < 1%

6.2 性能评测

指标CPUNPU
平均推理耗时2314.75 ms27.25 ms
加速比1x84.95x

首次 NPU 推理耗时较长(包含图编译开销),预热后平均推理耗时 27.25 ms。

7. 文件结构

phikon-v2-ascend/
├── inference.py    # 推理脚本
├── eval.py         # 精度与性能评测脚本
├── log.txt         # 评测日志
└── README.md       # 本文档

8. 注意事项

  1. 首次 NPU 推理包含图编译开销,性能测试需先预热
  2. 模型输入尺寸为 [1, 3, 224, 224](与原版一致)
  3. Conda 环境名称与模型名称一致:phikon-v2
  4. 精度计算采用相对于值范围的百分比,避免小值导致的相对误差放大