本文档记录 facebook/webssl-mae1b-full2b-224 模型在华为昇腾 NPU 上的适配与验证结果。该模型是基于 ViT-1B 架构的视觉自监督学习模型(Masked Autoencoder),参数量为 1.14B。
运行模式为原生 PyTorch 推理(非 vLLM 服务模式),通过 torch_npu 将模型加载到昇腾 NPU 上进行推理加速。
相关获取地址:
| 组件 | 版本 |
|---|---|
torch | 2.6.0 |
torch_npu | 2.6.0 |
transformers | 4.57.0+ |
Pillow | latest |
| 硬件 | 规格 |
|---|---|
| NPU | Ascend 910B3(1 逻辑卡) |
| CPU | ARM 64 核 |
| 内存 | 512 GB |
cd /opt/atomgit/webssl-mae1b-full2b-224
# 单张图片推理(NPU)
python3 inference.py --image path/to/image.jpg --device npu
# CPU 推理
python3 inference.py --image path/to/image.jpg --device cpu# 自动下载模型并进行 CPU ↔ NPU 精度对比
python3 accuracy_run.py 2>&1 | tee -a log.txt脚本会分别用 CPU 和 NPU 推理同一组随机图片,计算归一化均方误差(NMSE)。
# NPU 性能测试(含 CPU 单次参考)
python3 accuracy_run_perf.py 2>&1 | tee -a log.txt
# 或使用评测所有项目脚本
python3 check_accuracy_run_perf.py 2>&1 | tee -a log.txt该模型为标准 HuggingFace ViTModel 架构,无需修改模型代码即可在昇腾 NPU 上运行:
model.to("npu:0") 即可将模型参数和计算迁移到 NPUnn.Linear, nn.LayerNorm, nn.Softmax, nn.GELU 等)在 torch_npu 上均有原生支持,无需替换torch.npu.synchronize() 确保准确计时expandable_segments:True 优化显存分配环境变量推荐配置:
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export TASK_QUEUE_ENABLE=1测试条件:2 张随机 RGB 图片(224×224),CPU vs NPU last_hidden_state 逐元素对比。
| 指标 | 数值 |
|---|---|
| 平均 NMSE | 5.14e-05(0.0051%) |
| 最大 NMSE | 5.26e-05(0.0053%) |
| 最大绝对误差 | 0.056 |
| 平均绝对误差 | 0.0023 |
| 要求阈值 | < 1% |
| 结果 | ✅ PASS |
NMSE 远低于 1% 阈值,精度完全满足要求。
测试条件:单张 224×224 图片,NPU 预热 5 次后采样 20 次取平均,CPU 单次计时。
| 指标 | NPU (Ascend 910B3) | CPU (ARM 64核) |
|---|---|---|
| 平均延迟 | 37.22 ms | 25,269 ms |
| 吞吐量 | 26.87 img/s | 0.04 img/s |
| 加速比 | 683× | — |
| 延迟标准差 | 0.58 ms | — |
| P99 延迟 | 39.00 ms | — |
适配完成后,所有关键文件位于 webssl-mae1b-full2b-224-ascend/ 目录:
| 文件 | 说明 |
|---|---|
inference.py | 单次推理脚本 |
accuracy_run.py | CPU ↔ NPU 精度对比脚本 |
accuracy_run_perf.py | NPU 性能基准测试脚本(含 CPU 参考) |
check_accuracy_run_perf.py | 全流程评测脚本(一键运行) |
accuracy_result.json | 精度评测结果 |
perf_result.json | 性能评测结果 |
log.txt | 完整运行日志 |
torch_npu 正确安装且 NPU 驱动正常trust_remote_code