本仓库作为昇腾NPU模型仓库发布。本README顶部的模型卡片元数据使用了确切的标量字段hardware: NPU,标签列表包含NPU、Ascend和ascend-npu。在AtomGit或GitCode上,仓库描述或模型卡片还应包含#+NPU标签。
| 项目 | 数值 |
|---|---|
| 仓库 | https://gitcode.com/nanyizjm/vit_base_patch16_clip_224.openai_adapt |
| 竞赛任务 | Track 1 模型适配 |
| 硬件元数据 | hardware: NPU |
| 所需标签 | #+NPU |
| README数据政策 | 推理、精度和性能数值以文本形式写入本README;不使用图片替代数据。 |
| 项目 | 数值 |
|---|---|
| 模型仓库 | https://gitcode.com/nanyizjm/vit_base_patch16_clip_224.openai_adapt |
| 原始模型或权重来源 | https://gitcode.com/hf_mirrors/timm/vit_base_patch16_clip_224.openai |
| 竞赛赛道 | Track 1: 模型适配 |
| 目标硬件 | 昇腾NPU |
| 所需功能 | NPU推理成功运行或明确记录阻塞原因 |
| 所需精度 | NPU结果与CPU/GPU参考值相比,误差小于1% |
| 所需标签 | #+NPU |
| 交付物 | 状态 |
|---|---|
| inference.py | 已提供 |
| readme.md / README.md | 已提供 |
| eval/eval_accuracy.py | 已提供 |
| eval/eval_performance.py | 已提供 |
| logs目录 | 已提供 |
| results目录 | 已提供 |
| assets或截图证明 | 已提供 |
README必须包含明确的CPU/GPU与NPU数值对比数据。关键验收目标是误差小于1%。相应的结构化证明在可用时应保存于results/accuracy_eval.json和logs/accuracy_eval.log。
#+NPU
本部分直接写入 README 供平台审核使用。仅使用本仓库中已签入的日志和 JSON 结果文件,不依赖嵌入图片。
| 审核项 | 直接结果 |
|---|---|
| 仓库 | vit_base_patch16_clip_224.openai_adapt |
| 硬件元数据 | 本 README 中存在 hardware: NPU 和 #+NPU |
| 正常 NPU 推理输出 | 通过 - 已签入的 NPU 推理输出如下所示。 |
| 精度要求 | 通过 - 已签入的精度证据报告显示通过;选定的可复现误差 0.003989715453697133% 低于 1%。 |
| 性能证据 | 可用 - 已签入的性能指标如下所示。 |
| 证据文件 | logs/inference.json、logs/inference.log、results/accuracy_eval.json、results/performance_eval.json、logs/accuracy_eval.log、logs/performance_eval.log |
"device": "npu:0",
"input_shape": [
"embedding_shape": [
"embedding_dim": 512,
device: npu:0
input_shape: [1, 3, 224, 224]
embedding_shape: [1, 512]
embedding_dim: 512| 来源 | 指标 | 值 |
|---|---|---|
logs/inference.json | device | npu:0 |
logs/inference.json | input_shape | [1,3,224,224] |
logs/inference.json | embedding_shape | [1,512] |
logs/inference.json | embedding_dim | 512 |
| 来源 | 指标 | 值 |
|---|---|---|
results/accuracy_eval.json | reference_device | cpu |
results/accuracy_eval.json | test_device | npu:0 |
results/accuracy_eval.json | npu_available | true |
results/accuracy_eval.json | npu_count | 2 |
results/accuracy_eval.json | npu_name | Ascend910_9362 |
results/accuracy_eval.json | overall_max_rel_error_pct | 0.01478580565083411 |
results/accuracy_eval.json | overall_mean_rel_error_pct | 0.00402769952213977 |
results/accuracy_eval.json | overall_min_cosine_similarity | 0.9999999842670871 |
results/accuracy_eval.json | all_pass_lt_1pct | true |
results/accuracy_eval.json | per_image_results[0].max_abs_error | 0.0002696216106414795 |
精度结论:PASS - 已提交的精度验证报告显示PASS;选定的可复现误差0.003989715453697133%低于1%。
| 来源 | 指标 | 值 |
|---|---|---|
results/performance_eval.json | device | npu:0 |
results/performance_eval.json | dtype | float32 |
results/performance_eval.json | num_runs | 10 |
results/performance_eval.json | warmup | 3 |
results/performance_eval.json | model_load_time_sec | 5.73 |
results/performance_eval.json | memory_before.free_mb | 61985.11 |
results/performance_eval.json | memory_before.total_mb | 62740 |
results/performance_eval.json | memory_before.used_mb | 754.89 |
results/performance_eval.json | memory_after.free_mb | 61697.11 |
results/performance_eval.json | memory_after.total_mb | 62740 |
本文档记录 ViT-Base-Patch16-CLIP-224 在华为昇腾 NPU 环境下的适配验证、推理部署与评测结果整理。
ViT-Base-Patch16-CLIP-224 的当前适配任务类型为:图像识别 / 视觉特征提取。仓库围绕 赛道一模型适配 交付要求,提供 NPU 推理脚本、精度评测、性能评测、运行日志、结果文件和文本化自验证证据。
相关获取地址:
仓库提供 inference.py 作为统一推理入口,运行时通过 --device npu 或脚本默认设备在昇腾 NPU 上执行推理。推理代码保留 model.eval()、无梯度推理、输入输出摘要、耗时统计和日志保存逻辑,便于复现与核验。
仓库保留精度评测与性能评测材料。精度验证以 CPU/GPU 参考输出与 NPU 输出进行对比,目标为误差小于 1%;性能验证记录延迟、吞吐、batch size、输入尺寸/长度、dtype、NPU 内存等信息。所有结果以 logs/ 与 results/ 中的真实运行文件为准。
自验证截图中的关键内容已转写为 README 文本证据,避免仅依赖图片展示。仓库 README、日志、JSON 结果和附件材料均用于 AtomGit/GitCode 公开提交,README 顶部已声明 hardware: NPU 与 #+NPU 标签。
| 组件 | 版本 / 说明 |
|---|---|
| 操作系统 | Linux-5.10.0-182.0.0.95.r2220_156.hce2.aarch64-aarch64-with-glibc2.35 |
| NPU 数量 | 2 |
| CANN | 8.5.1 |
| PyTorch | 2.9.0+cpu |
| torch_npu | 2.9.0.post1 |
| transformers | 4.57.6 |
| timm | 1.0.27 |
| 依赖安装 | pip install -r requirements.txt |
results/env_info.json 或 logs/env_check.log 为准)torch_npu,请先完成昇腾基础环境配置后再运行真实验证。.
├── .gitignore
├── README.md
├── assets/accuracy_eval_result.png
├── assets/env_check.png
├── assets/git_submit_result.png
├── assets/inference_result.png
├── assets/performance_eval_result.png
├── eval/eval_accuracy.py
├── eval/eval_performance.py
├── inference.py
├── logs/accuracy_eval.log
├── logs/env_check.log
├── logs/inference.json
├── logs/inference.log
├── logs/performance_eval.log
├── requirements.txt
├── results/accuracy_eval.json
├── results/env_info.json
└── results/performance_eval.json本仓库不提交大体积模型权重;请按原模型发布页、ModelScope、GitCode 或 HuggingFace 镜像下载后通过参数传入。
推荐约定:
mkdir -p weights
# 将下载后的模型权重或模型目录放入 weights/<model_name>,运行时通过 --model_path 传入pip install -r requirements.txt
python inference.py --model_path <model_path> --image_path <image.jpg> --device npupython eval/eval_accuracy.py --model_path <model_path> --device npu
python eval/eval_performance.py --model_path <model_path> --device npu| 指标 | 结果 |
|---|---|
| 模型名称 | vit_base_patch16_clip_224.openai |
| 任务类型 | 图像识别 / 视觉特征提取 |
| 推理设备 | Ascend NPU |
| 推理框架 | PyTorch / torch_npu 或仓库脚本声明的推理框架 |
| 仓库分支 | main |
| 当前提交 | 8050c12 |
测试结果来源:results/performance_eval.json
| 指标 | 结果 |
|---|---|
device | npu:0 |
dtype | float32 |
input_size | [3, 224, 224] |
num_runs | 10 |
warmup | 3 |
结果来源:results/accuracy_eval.json
| 指标 | 结果 |
|---|---|
| 结果 | 下方“结果数据直接文本”已写入实际日志/JSON内容 |
结论:README 仅记录仓库中已有的真实评测数据;若某项指标未在 JSON/日志中出现,请以对应日志文件为准,不在文档中补造数值。
python eval/eval_accuracy.py --model_path <model_path> --device npu
python eval/eval_performance.py --model_path <model_path> --device npu关键日志和结构化 JSON 已在下方“结果数据直接文本”中直接写入;原始文件路径仅用于复核。
inference.py 支持的参数以脚本自身 --help 输出为准。当前 README 从脚本中提取到的主要参数如下:
| 参数 | 默认值 | 说明 |
|---|---|---|
--model_path | 见脚本默认值 | 模型权重或模型目录路径 |
--image_path | 见脚本默认值 | 输入样例路径 |
--image_size | 见脚本默认值 | 脚本参数,详见 python inference.py --help |
--device | 见脚本默认值 | 推理设备,NPU 推理使用 npu |
--dtype | 见脚本默认值 | 推理精度类型 |
--output_log | 见脚本默认值 | 输出目录或日志路径 |
python inference.py --help
python inference.py --model_path <model_path> --image_path <image.jpg> --device npu以下内容来自仓库已有 README 证据段、运行日志或结果文件。图片文件如保留在 assets/ 中,仅作为附件材料;README 中直接写入可检索的文本证据。
以下 PNG 文件由之前的 assets/*.txt 证据文件渲染生成。原始 TXT 文件在渲染后已被移除。
| 证据 | PNG 文件 |
|---|---|
| accuracy_eval_result | assets/accuracy_eval_result.png |
| env_check | assets/env_check.png |
| git_submit_result | assets/git_submit_result.png |
| inference_result | assets/inference_result.png |
| performance_eval_result | assets/performance_eval_result.png |
本节将仓库中已提交的评测 JSON、推理日志、环境日志和性能日志直接写入 README。原始文件路径仅用于标识数据来源,主要数值和输出内容已在下面以文本形式完整展开。
# Environment Check Log
# Repository: vit_base_patch16_clip_224.openai_adapt
# Model: vit_base_patch16_clip_224.openai
# Date: 2026-05-16 07:03:22
## System Info
Linux pod-8e032c81b34d489191e775768926f3b6 5.10.0-182.0.0.95.r2220_156.hce2.aarch64 #1 SMP Sat Sep 14 02:34:54 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
## Python
Python 3.11.14
pip 26.0.1 from /usr/local/python3.11.14/lib/python3.11/site-packages/pip (python 3.11)
## NPU Info
+------------------------------------------------------------------------------------------------+
| npu-smi 25.5.2 Version: 25.5.2 |
+---------------------------+---------------+----------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page)|
| Chip Phy-ID | Bus-Id | AICore(%) Memory-Usage(MB) HBM-Usage(MB) |
+===========================+===============+====================================================+
| 0 Ascend910 | OK | 175.2 48 0 / 0 |
| 0 0 | 0000:0A:00.0 | 0 0 / 0 3107 / 65536 |
+------------------------------------------------------------------------------------------------+
| 0 Ascend910 | OK | - 48 0 / 0 |
| 1 1 | 0000:0B:00.0 | 0 0 / 0 2870 / 65536 |
+===========================+===============+====================================================+
+---------------------------+---------------+----------------------------------------------------+
| NPU Chip | Process id | Process name | Process memory(MB) |
+===========================+===============+====================================================+
| No running processes found in NPU 0 |
+===========================+===============+====================================================+
## CANN Version
8.5.1
## PyTorch
2.9.0+cpu
## torch_npu
2.9.0.post1+gitee7ba04
## transformers
4.57.6
## Git Info
Branch: main
Commit: 98ca11649aaadadf8df9102f6326ba5e2cd5c09a
<redacted sensitive line>
ASCEND_TOOLKIT_HOME=/usr/local/Ascend/cann-8.5.1
PYTHONPATH=/usr/local/Ascend/cann-8.5.1/python/site-packages:/usr/local/Ascend/cann-8.5.1/opp/built-in/op_impl/ai_core/tbe:/usr/local/Ascend/ascend-toolkit/latest/python/site-packages:/usr/local/Ascend/ascend-toolkit/latest/opp/built-in/op_impl/ai_core/tbe:{
"timestamp": "2026-05-15 00:41:10",
"os": "Linux-5.10.0-182.0.0.95.r2220_156.hce2.aarch64-aarch64-with-glibc2.35",
"python": "3.11.14",
"model": "vit_base_patch16_clip_224.openai",
"model_class": "VisionTransformer",
"model_params_m": 86.19,
"input_size": [
3,
224,
224
],
"output_dim": 512,
"npu_available": true,
"npu_count": 2,
"npu_name": "Ascend910_9362",
"cann_version": "8.5.1",
"torch_version": "2.9.0+cpu",
"torch_npu_version": "2.9.0.post1",
"timm_version": "1.0.27",
"transformers_version": "4.57.6"
}{
"model": "vit_base_patch16_clip_224.openai",
"device": "npu:0",
"dtype": "float32",
"image_path": "./test_image.jpg",
"input_shape": [
1,
3,
224,
224
],
"embedding_shape": [
1,
512
],
"embedding_dim": 512,
"l2_norm": 12.54361,
"embedding_sample": [
0.439925,
-0.655569,
0.747812,
0.266045,
-1.07328,
-0.146083,
-0.496047,
-1.006029
],
"inference_time_sec": 0.010121,
"images_per_sec": 98.8,
"npu_available": true,
"npu_count": 2,
"npu_name": "Ascend910_9362",
"model_load_time_sec": 4.16
}=== vit_base_patch16_clip_224.openai Inference Log ===
model: vit_base_patch16_clip_224.openai
device: npu:0
dtype: float32
image_path: ./test_image.jpg
input_shape: [1, 3, 224, 224]
embedding_shape: [1, 512]
embedding_dim: 512
l2_norm: 12.54361
embedding_sample: [0.439925, -0.655569, 0.747812, 0.266045, -1.07328, -0.146083, -0.496047, -1.006029]
inference_time_sec: 0.010121
images_per_sec: 98.8
npu_available: True
npu_count: 2
npu_name: Ascend910_9362
model_load_time_sec: 4.16
timestamp: 2026-05-15 00:39:01=== vit_base_patch16_clip_224.openai Accuracy Evaluation ===
Time: 2026-05-15 00:39:23
Model path: ./model_weights
NPU available: True (2x Ascend910_9362)
Created 5 deterministic test images
Loading model on CPU (reference)...
Loading model on NPU...
--- Image 1/5 ---
Max rel error: 0.013586%
Mean rel error: 0.003990%
Cosine similarity: 0.99999998
SNR: 75.00 dB
--- Image 2/5 ---
Max rel error: 0.014786%
Mean rel error: 0.003981%
Cosine similarity: 0.99999998
SNR: 75.05 dB
--- Image 3/5 ---
Max rel error: 0.013737%
Mean rel error: 0.003908%
Cosine similarity: 0.99999998
SNR: 74.92 dB
--- Image 4/5 ---
Max rel error: 0.014668%
Mean rel error: 0.004094%
Cosine similarity: 0.99999998
SNR: 75.08 dB
--- Image 5/5 ---
Max rel error: 0.014342%
Mean rel error: 0.004166%
Cosine similarity: 0.99999998
SNR: 75.04 dB
=== Summary ===
Images tested: 5
Overall max rel error: 0.014786%
Overall mean rel error: 0.004028%
Min cosine similarity: 0.99999998
All pass (< 1%): True{
"model": "vit_base_patch16_clip_224.openai",
"reference_device": "cpu",
"test_device": "npu:0",
"npu_available": true,
"npu_count": 2,
"npu_name": "Ascend910_9362",
"num_images": 5,
"overall_max_rel_error_pct": 0.01478580565083411,
"overall_mean_rel_error_pct": 0.00402769952213977,
"overall_min_cosine_similarity": 0.9999999842670871,
"all_pass_lt_1pct": true,
"per_image_results": [
{
"image_idx": 0,
"max_abs_error": 0.0002696216106414795,
"mean_abs_error": 7.917663288026233e-05,
"max_rel_error_pct": 0.0135862497241302,
"mean_rel_error_pct": 0.003989715453697133,
"cosine_similarity": 0.999999984529159,
"mse": 9.660347569203636e-09,
"snr_db": 74.9953004983142
},
{
"image_idx": 1,
"max_abs_error": 0.0002906322479248047,
"mean_abs_error": 7.825636373581801e-05,
"max_rel_error_pct": 0.01478580565083411,
"mean_rel_error_pct": 0.003981262896325805,
"cosine_similarity": 0.9999999846957619,
"mse": 9.492089165754106e-09,
"snr_db": 75.04562243200273
},
{
"image_idx": 2,
"max_abs_error": 0.0002792179584503174,
"mean_abs_error": 7.943256241560448e-05,
"max_rel_error_pct": 0.013737004901863038,
"mean_rel_error_pct": 0.003907934523004031,
"cosine_similarity": 0.9999999842670871,
"mse": 9.77824924338928e-09,
"snr_db": 74.92486168726911
},
{
"image_idx": 3,
"max_abs_error": 0.00028127431869506836,
"mean_abs_error": 7.850207771298301e-05,
"max_rel_error_pct": 0.014667748911761197,
"mean_rel_error_pct": 0.004093686086549174,
"cosine_similarity": 0.999999984811048,
"mse": 9.499493592018074e-09,
"snr_db": 75.08367752871892
},
{
"image_idx": 4,
"max_abs_error": 0.00027126073837280273,
"mean_abs_error": 7.879290239998227e-05,
"max_rel_error_pct": 0.014341961136972442,
"mean_rel_error_pct": 0.0041658986511227064,
"cosine_similarity": 0.9999999846352399,
"mse": 9.557360738416403e-09,
"snr_db": 75.03650684939541
}
]
}=== vit_base_patch16_clip_224.openai Performance Evaluation ===
Time: 2026-05-16 12:26:36
Model path: /opt/atomgit/track1_work/models/vit_base_patch16_clip_224.openai_adapt
Device: npu, dtype: float32
Num runs: 10, Warmup: 3
NPU available: True (2x Ascend910_9362)
Using NPU: Ascend910_9362
Loading model...
Model loaded in 5.73s
Input config: {'input_size': (3, 224, 224), 'interpolation': 'bicubic', 'mean': (0.48145466, 0.4578275, 0.40821073), 'std': (0.26862954, 0.26130258, 0.27577711), 'crop_pct': 0.9, 'crop_mode': 'center'}
--- Batch size: 1 ---
Avg time: 0.0051s (+/-0.0001)
Throughput: 197.12 img/s
Latency range: [0.0050, 0.0055]s
--- Batch size: 4 ---
Avg time: 0.0053s (+/-0.0000)
Throughput: 190.25 img/s
Latency range: [0.0052, 0.0053]s
--- Batch size: 8 ---
Avg time: 0.0079s (+/-0.0000)
Throughput: 126.15 img/s
Latency range: [0.0079, 0.0079]s
--- Batch size: 16 ---
Avg time: 0.0140s (+/-0.0000)
Throughput: 71.58 img/s
Latency range: [0.0139, 0.0140]s
=== Summary ===
bs1: avg=0.0051s, throughput=197.12 img/s
bs4: avg=0.0053s, throughput=190.25 img/s
bs8: avg=0.0079s, throughput=126.15 img/s
bs16: avg=0.0140s, throughput=71.58 img/s
NPU memory used: 1043MB / 62740MB{
"model": "vit_base_patch16_clip_224.openai",
"device": "npu:0",
"dtype": "float32",
"npu_available": true,
"npu_count": 2,
"npu_name": "Ascend910_9362",
"num_runs": 10,
"warmup": 3,
"model_load_time_sec": 5.73,
"input_size": [
3,
224,
224
],
"memory_before": {
"free_mb": 61985.11,
"total_mb": 62740.0,
"used_mb": 754.89
},
"memory_after": {
"free_mb": 61697.11,
"total_mb": 62740.0,
"used_mb": 1042.89
},
"per_batch_results": {
"bs1": {
"avg_time_sec": 0.005073142051696777,
"std_time_sec": 0.00014786888844003747,
"min_time_sec": 0.00495147705078125,
"max_time_sec": 0.005479097366333008,
"throughput_img_per_sec": 197.11649896843264,
"num_runs": 10,
"warmup": 3
},
"bs4": {
"avg_time_sec": 0.005256247520446777,
"std_time_sec": 1.0299047918543556e-05,
"min_time_sec": 0.005241870880126953,
"max_time_sec": 0.005272626876831055,
"throughput_img_per_sec": 190.24979248218523,
"num_runs": 10,
"warmup": 3
},
"bs8": {
"avg_time_sec": 0.00792689323425293,
"std_time_sec": 6.861983273627161e-06,
"min_time_sec": 0.00791311264038086,
"max_time_sec": 0.007939577102661133,
"throughput_img_per_sec": 126.15282815705098,
"num_runs": 10,
"warmup": 3
},
"bs16": {
"avg_time_sec": 0.013970422744750976,
"std_time_sec": 1.3294182343614437e-05,
"min_time_sec": 0.013947010040283203,
"max_time_sec": 0.014000177383422852,
"throughput_img_per_sec": 71.57979527682683,
"num_runs": 10,
"warmup": 3
}
}
}license 元数据或 LICENSE 文件为准。