本文档记录 apple/aimv2-3B-patch14-336 在华为昇腾 Ascend910B4 上的推理适配与验证结果。
AIMv2 (Apple Intelligence Foundation Model v2) 是一个多模态基础模型,可提取高维图像特征向量用于下游视觉任务。本仓库提供基于 PyTorch + torch_npu 的推理适配方案。
说明:336×336 版本相比 224×224 版本输入分辨率更高(2.25× 像素数),Token 数从 256 个增加到 576 个,细节表达能力更强,适用于中等复杂度下游任务。
相关获取地址:
| 组件 | 版本 |
|---|---|
torch | 2.5.1 |
torch-npu | 2.5.1 |
transformers | 4.57.6 |
Pillow | 10.x |
numpy | 1.24+ |
| CANN | 8.5.1 |
Ascend910B4(1 逻辑卡)aimv2-3B-patch14-224 相同,仅 image_size 升级为 336336×336与 aimv2-3B-patch14-224 的适配流程完全一致,仅需修改:
config.json 中的 image_size 为 336(已预置)# 转换权重
python3 aimv2_weight_convert.py
# 运行推理
python3 inference.py由于 Apple AIMv2 在 HuggingFace 上的 safetensors 权重使用 Aimv2WrapperModel 结构,
而本地推理使用 Aimv2VisionModel(纯 vision encoder),需要将权重从 wrapper 格式
映射为 vision encoder 格式。转换脚本 aimv2_weight_convert.py 负责此映射:
embeddings.patch_embed.weight → preprocessor.patchifier.proj.weightencoder.layers.{i}.attention.q_proj.weight + k_proj + v_proj → trunk.blocks.{i}.attn.qkv.weight(三合一)encoder.layers.{i}.ffn.gate_proj.weight + down_proj + up_proj → trunk.blocks.{i}.mlp.fc1/fc2/fc3.weightrms_norm.weight → trunk.post_trunk_norm.weight单张图像推理验证通过,模型输出特征向量形状为 [1, 576, 3072],pooled 特征形状为 [1, 3072]。
| 验证项 | 结果 |
|---|---|
| 模型加载 | ✓ strict=True 加载成功 |
| 前向推理 | ✓ 正常返回 |
| 输出 Shape | [1, 576, 3072] |
| Pooled Shape | [1, 3072] |
测试条件:batch=1 / 336×336 输入 / FP16 / warmup=3 / benchmark=10
| 指标 | 数值 |
|---|---|
| 硬件 | Ascend910B4 |
| Mean Latency | 33.03 ms |
| Median Latency | 32.99 ms |
| P99 Latency | 33.32 ms |
| Min Latency | 32.91 ms |
| Max Latency | 33.33 ms |
| Throughput | 30.27 img/s |
| Feature Shape | [1, 576, 3072] |
336 版本在 Ascend910B4 上实测通过,性能表现优异。相比估算的 ~50ms,实际仅 33ms,说明注意力计算在 NPU 上得到了较好优化。
测试条件:batch=1 / FP16 / Ascend910B4 / warmup=3 / benchmark=10
| 指标 | 224×224 | 336×336 | 448×448 |
|---|---|---|---|
| Token 数 | 256 | 576 | 1024 |
| Mean Latency | 25.3 ms | 33.03 ms | ~105 ms(估) |
| Throughput | 39.5 img/s | 30.27 img/s | ~9.5 img/s(估) |
| 实测状态 | ✅ 已验证 | ✅ 已验证 | ⏳ 待验证 |