Freepik/nsfw_image_detector (commit 15b8547)TimmWrapperForImageClassification (model_type: timm_wrapper, eva02_base_patch14_448.mim_in22k_ft_in22k_in1k, hidden 768, num_classes 4, patch 14, input 448x448)AutoModelForImageClassification.from_pretrained(local, dtype=bfloat16).to(npu:0) + timm GetPretrainedCfg + create_transform(resolve_data_config),无隐式联网,本地目录 /tmp/Freepik-nsfw_image_detector (HF_ENDPOINT=https://hf-mirror.com)npu:0 (Phy 4 Bus 0000:0B:00.0 Health OK, HBM 3109/65536 MB 使用, Temp 43C, npu-smi 25.5.5)/usr/local/Ascend/cann-8.5.1)torch_dtype bfloat16, device npu:0, 首参 npu:0 bfloat16 shape (1,1,768)(cls_token), 86.35M 参数pip install -r requirements.txt
# 需预装 CANN Toolkit 8.5.1 使 torch_npu 可用
# 权重已缓存于 /tmp/Freepik-nsfw_image_detector (model.safetensors 172725672 bytes)
# 离线可通过 HF_ENDPOINT=https://hf-mirror.com 走国内镜像 snapshot_downloadpython inference.py
# 或指定模式
python inference.py --mode validate # CPU vs NPU 一致性
python inference.py --mode benchmark # 3 warmup + 10 iters 同步计时
python inference.py --device npu:0 --dtype bfloat16python inference.py (device npu:0, bfloat16, 合成图 seed 0, torch.npu.synchronize 计时)npu:0 Ascend910_9362, torch_npu 2.9.0.post1, torch.npu.is_available() True, 模型首参 npu:0 bfloat16tensor [1,3,448,448] bfloat16 (min -1.79 max 2.13 float32归一化前) neutral : 0.996955 (logit 5.2812)
low : 0.001993 (logit -0.9336)
high : 0.000615 (logit -2.1094)
medium : 0.000436 (logit -2.4531)
Top-1: neutral (0.9970) probs sum 1.000000PASS (logits 有限, probs 和 ≈1)python inference.py --mode validatenpu:0 同步推理CPU logits: [5.25, -0.9140625, -2.4375, -2.09375]
NPU logits: [5.28125, -0.93359375, -2.453125, -2.109375]
CPU probs: [0.99680149, 0.00209696, 0.00045705, 0.00064455]
NPU probs: [0.99695527, 0.00199344, 0.00043619, 0.00061513]
Max abs diff logits: 0.031250
Mean abs diff logits: 0.020508
Max abs diff probs: 0.000154
Top-1 CPU: neutral NPU: neutral match=TruePASS (分类一致、数值差异在半精度预期内)python inference.py --mode benchmark (torch.npu.synchronize 前后计时)npu:0, bfloat16, 输入 [1,3,448,448], 3 warmup + 10 iters iter 1: 9.44 ms
iter 2: 9.44 ms
iter 3: 9.44 ms
iter 4: 9.47 ms
iter 5: 9.47 ms
iter 6: 9.46 ms
iter 7: 9.43 ms
iter 8: 9.47 ms
iter 9: 9.40 ms
iter 10: 9.40 ms
avg 9.44 ms min 9.40 max 9.47 p50 9.44 p90 9.47 p95 9.47
NPU memory free 62001.8 MB total 62740.0 MBassets/agent_workflow.png - 下载、侦察、加载、NPU 推理、验证、性能全流程日志assets/npu_device_call.png - npu-smi info + torch.npu.is_available() + 设备名 + 模型参数 device/dtypeassets/model_result.png - python inference.py 默认输出 (任务结果、概率、延迟、PASS)timm/eva02_base_patch14_448,若需替换需重验;pipeline 模式在 NPU 上未使用,仅 transformers + timm transformHardware: NPU, NPU, Ascend, Ascend910, image-classification, nsfw, eva02, timm