2301_76761127/peek-npu
模型介绍
文件和版本
Pull Requests
讨论
分析

momentslab/peek — Ascend NPU 迁移验收

1. 模型身份

  • 模型:momentslab/peek(PEEK:视频关键帧选择;官方仓仅发布 scorer 权重—— 对冻结帧嵌入打分的轻量 Transformer:LayerNorm(512) → Linear(512→256) → 正弦位置编码 → 2 层 TransformerEncoder(d=256, 4 头, ffn=1024, pre-norm) → Linear(256→1),identity 输出;选择策略 stratified_argmax)
  • 官方 URL:https://huggingface.co/momentslab/peek (镜像:https://ai.gitcode.com/hf_mirrors/momentslab/peek)
  • 固定 revision:b3ef71b21223fd36cc415698690e3bc3b3251b48
  • 权重:peek_base.safetensors,6,851,668 bytes,SHA-256 941b985bc9e6bc55331270faaa40071fe9fc763bebebbf61f99c74a131fe30bb
  • 许可:CC-BY-NC-SA-4.0;参数量 1,712,129(探针实测)
  • 模型代码:官方仓不含 Python 代码;本仓 inference.py 内 vendored 了官方 Apache-2.0 代码包(https://github.com/momentslab/peek,`src/peek/model.py` 的 PeekScorer/SinusoidalPositionalEncoding 与 src/peek/selection.py 的 stratified_argmax),行为逐行对齐上游

2. 硬件软件矩阵(平台栈未替换)

  • 官方 Hosted 昇腾容器:Ascend 910(运行结果标识 Ascend910_9362),逻辑设备 npu:0
  • 容器原生 CANN 8.5.1、PyTorch 2.9.0、torch_npu 2.9.0.post1;模型级依赖 通过隔离 PYTHONPATH 提供,未替换 CANN、torch 或 torch_npu
  • inference.py 显式关闭 PyTorch MHA fused fastpath,避免 aten::_transformer_encoder_layer_fwd 在 torch_npu 上触发 CPU fallback;实际 stderr 已检查,无 fallback 文本
  • NPU attention/linear 核默认非确定;脚本保留 torch.use_deterministic_algorithms(True, warn_only=True),但本次 fast-track 不做精度结论

3. 外部权重准备与完整性门禁

权重从官方固定 revision 快照离线加载(本仓不含权重)。inference.py 启动时校验 config.json 的 SHA-256、逐字段断言架构超参(architecture/embedding_dim/ hidden_dim/num_heads/num_layers/ffn_dim/output_activation/selection_mode), 并校验 peek_base.safetensors 的大小与 SHA-256;load_state_dict(strict=True) 键级对齐。任何不符即 fail-closed 退出;禁止回退网络 model id (HF_HUB_OFFLINE=1、TRANSFORMERS_OFFLINE=1)。

4. 唯一推理入口

EVIDENCE_HOLD_SECONDS=10 python inference.py --model_path <快照目录> \
  --device npu:0 --seed 20260816 --output_json npu_result.json

加载路径:vendored PeekScorer(按 config.json 超参构建)+ safetensors.torch.load_file(<本地快照>) + load_state_dict(strict=True), 随后 .to(device).eval()。

5. 固定样本、输出计数与有限值要求

范围说明:官方仓只发布 scorer 权重;config.json 声明的编码器 apple/MobileCLIP2-S0 是外部冻结依赖、未随仓发布,不在本行验收范围内。 完整测试用例因此为 8 条确定性合成的帧嵌入序列(T=40 帧 × D=512,等效 20s@2fps 视频,植入显著帧,逐样本种子固定),float32 字节 SHA-256 冻结于 accuracy/manifest.json,运行时逐条重新生成并校验(input_sha256 锚定)。 每条输出 40 个逐帧分数 + stratified_argmax(k=4) 的 4 个选中帧索引, 总计 8×44=352 值;shape、计数、样本身份、有限值(拒绝 NaN/Inf)任一 不符即失败。

6. Fast-track 验收契约

本行适用 fast-track 政策:仅验证 NPU 全程真实运行,未评估精度,也不生成 CPU Golden。验收契约(冻结于 accuracy/manifest.json):

  • NPU 端到端运行:actual_model_device/actual_tensor_device/ actual_output_device 均为 npu:0,输出完整有限,exit_status=0
  • 8 个冻结样本全部完成,sample_count=8、total_output_value_count=352
  • NPU 进程存活期间,PID/完整命令/npu-smi info 同屏,设备进程列表出现同一 PID 且显存非零
  • stderr 不得包含 CPU/CUDA fallback;任一身份、设备、计数、有限值或退出码异常即失败
  • 负向门禁 fail-closed(见 §9)

7. 真实 NPU 运行与实测指标

实测于官方 Hosted 昇腾容器,设备 npu:0(Ascend910_9362)。运行前确认设备 总占用加本任务保守估计低于总显存 90%;允许与其他任务共享,不使用设备锁。

  • 本轮运行目录:hosted-final-20260817T135441Z
  • 活跃推理 PID:1614;npu-smi 同屏显示该 Python PID、138 MiB 进程显存, 设备总占用约 3.2 GiB / 64 GiB
  • 8 条 (40,512) 嵌入序列完成一次 batch 前向,forward_ms=81.73752995207906
  • requested_device/actual_model_device/actual_tensor_device/ actual_output_device 均为 npu:0
  • 352/352 输出值完整且有限,sample_count=8、exit_status=0
  • stderr CPU fallback 检查为 NONE;本次仅证明真实全 NPU 运行,不构成精度结论
  • 本轮 inference.py SHA-256: 5fdd746e97ef7a329addf2fee37fce0589f9e80dbb636e85e6a9c8aa9cf0bf1c

8. 证据图

三张证据图(assets/agent_workflow.png / assets/npu_device_call.png / assets/model_result.png)由后半段在对应 RUN 中即时截取并放入 assets/; 本前半段交付的真实运行取证(进程 PID、Ascend maps、/dev/davinci fd、 npu-smi 含子 PID)保存在私有审计目录。

8.1 Agent 工作流规划

Agent 工作流规划

8.2 运行中真实 NPU 设备调用

运行中真实 NPU 设备调用

8.3 全 NPU 运行结果

全 NPU 运行结果

9. Hosted 运行命令与负向门禁

source /usr/local/Ascend/cann-8.5.1/set_env.sh
export PYTHONPATH=/opt/atomgit/hosted-b-pydeps-457:${PYTHONPATH:-}
EVIDENCE_HOLD_SECONDS=10 python inference.py --model_path ../model \
  --device npu:0 --seed 20260816 \
  --output_json hosted-final-20260817T135441Z/npu_result.json

负向门禁(各一次,均按预期 fail-closed):缺/错权重快照 → snapshot identity mismatch; 非法设备 cuda:0 → 拒绝运行;设备字段、输出计数、有限值或退出码不满足契约 → 结果验收脚本非零退出。若 stderr 出现任意 CPU fallback 文本,同样不得标记 PASS。

10. 提交与限制

唯一验收入口为 inference.py。fast-track 未运行 CPU Golden、未做 CPU/NPU 数值 精度比对,选择质量未评估;MobileCLIP2-S0 编码器链路(视频→帧→嵌入)未纳入 本行范围(见 §5),端到端视频输入的验证留给后续。三张 PNG 分别证明工作流规划、 运行中真实 NPU 设备调用和最终全 NPU 结果。匿名 HEAD、fresh clone、GitCode hook 与 竞赛单次提交在发布阶段逐项验收。

本仓为 2301_76761127 队伍交付件(与备份账号合并提交)。