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

robotics-diffusion-transformer/rdt-1b — Ascend NPU 迁移验收

1. 模型身份

  • 模型:robotics-diffusion-transformer/rdt-1b(Robotics Diffusion Transformer, 机器人操作扩散策略:DiT 主体 hidden=2048/depth=28/heads=32 + 语言/图像/状态 三个 adaptor,bf16,约 1.23B 参数)
  • 官方 URL:https://huggingface.co/robotics-diffusion-transformer/rdt-1b (镜像:https://ai.gitcode.com/hf_mirrors/robotics-diffusion-transformer/rdt-1b)
  • 固定 revision:eb09036cc64ca4945051acbd1bd581d30a1d7711
  • 权重:pytorch_model.bin(bf16,含 model.*/lang_adaptor.*/img_adaptor.*/ state_adaptor.* 618 键),2,456,755,578 bytes,SHA-256 fe217f4491ea882b0b52df1cb23ae4e8a11c1328ed29f2ed712e02aad2c02102
  • 许可:MIT;参数量 1,228,319,872(探针实测,不含外部编码器)

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

  • 硬件:Ascend 910B3 单卡(逻辑设备 npu:0)
  • CANN 9.0.0;Python 3.11.15;PyTorch(torch)2.10.0+cpu;torch_npu 2.10.0
  • 模型级依赖(见 requirements.txt):timm(RDTBlock 的 Attention/Mlp/RmsNorm)、 diffusers(DPMSolverMultistepScheduler)、numpy;未替换任何既有平台组件 (target_stack_gate PASS)
  • NPU attention 核默认非确定;inference.py 启用 torch.use_deterministic_algorithms(True, warn_only=True),并强制所有注意力 模块走显式(非 fused SDPA)路径,保证采样双跑逐位一致

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

权重从官方固定 revision 快照离线加载(本仓不含权重)。inference.py 启动时校验 config.json 与 pytorch_model.bin 的 SHA-256(含文件大小),任何不符即 fail-closed 退出;加载使用 torch.load(..., weights_only=True),无任何网络回退 (HF_HUB_OFFLINE=1、TRANSFORMERS_OFFLINE=1)。

4. 唯一推理入口

python inference.py --model_path <快照目录> --device <cpu|npu:0> \
  --seed 20260816 --output_json result.json

加载路径:按官方 config.json 重建 RDT 主体与三个 adaptor(架构代码 vendored 自 MIT 上游 models/rdt/blocks.py/model.py/rdt_runner.py),load_state_dict strict 逐前缀装载;推理复刻官方 RDTRunner.predict_action 语义:条件经 adaptor 对齐到 hidden=2048 后,DPMSolverMultistepScheduler(5 步、squaredcos_cap_v2、 prediction_type=sample)迭代去噪,输出 64×128 动作序列并施加 action_mask。

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

完整测试用例为 8 组固定条件集:确定性合成(逐样本种子固定)的图像条件 token (4374×1152)、语言条件 token(32×4096,全有效 mask)、机器人状态(1×128)、 动作 mask(前 14/128 维有效);字节级 SHA-256 冻结于 accuracy/manifest.json, 运行时逐条重新生成并校验(input_sha256 锚定)。每条样本输出 64×128=8192 个 动作值,总计 8×8192=65,536 值;计数、样本身份、输出形状、有限值任一不符 即失败。

范围声明:上游完整链路的图像 SigLIP 编码器与语言 T5 编码器不在 rdt-1b 权重内、 不在本行验收范围;fixture 为其输出位的合成条件 token(见 §10)。

6. Fast-track 验收契约

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

  • NPU 端到端运行:actual_model_device/actual_tensor_device/ actual_output_device 均为 npu:0,输出完整,exit_status=0
  • NPU 双跑逐位一致:同一冻结 fixture 两次独立 NPU 运行的全部 65,536 个动作值 完全相等(accuracy/compare_accuracy.py,唯一比较器,不启动任何推理路径)
  • 负向门禁 fail-closed(见 §9)

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

实测环境:CANN 9.0.0 + torch 2.10.0+cpu + torch_npu 2.10.0 + diffusers + timm, 设备 npu:0(Ascend 910B3,queue 准入 est-mem 6144 MiB)。fast-track: 仅验证 NPU 全程运行,未评估精度。

  • NPU 端到端运行:8 组固定条件集逐样本 5 步采样 forward_ms≈7717.4 ms (bf16,1,228,319,872 参数),actual_model_device/actual_tensor_device/ actual_output_device 实测均为 npu:0,65,536/65,536 动作值完整, exit_status=0
  • 动作质量未评估,不构成精度结论
  • NPU 双跑逐位一致(accuracy/accuracy.json):65,536 值 mismatch=0、 max_abs_error=0.0,status=PASS
  • 真实 NPU 取证:进程 PID、Ascend maps、/dev/davinci fd、npu-smi 含子 PID 均采样留存于私有审计目录(监控器逐进程包裹两次运行)

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)保存在私有审计目录。

9. compare 命令与负向门禁

python accuracy/compare_accuracy.py --cpu_result <npu_run1.json> \
  --npu_result <npu_run2.json> --output_json accuracy.json

负向门禁(各一次,均按预期 fail-closed):缺/错权重快照 → snapshot identity mismatch;非法设备 cuda:0 → 拒绝运行;截断的 compare 输入 → primary identity ... mismatch。

10. 提交与限制

唯一验收入口为 inference.py;比较器不启动任何推理路径。fast-track 未做 CPU/NPU 数值精度比对,动作质量未评估;外部 SigLIP/T5 编码器不在验收范围 (§5);完整 NPU JSON、日志、PID 采样保留在私有审计区,本仓仅含最小复现代码 与摘要。匿名 HEAD 与 fresh clone 审计由协调者统一执行。

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