g
gcw_coj3XaOd/TrajectoryCrafter_TrajectoryCrafter
模型介绍
文件和版本
Pull Requests
讨论
分析

TrajectoryCrafter/TrajectoryCrafter - 昇腾 NPU 推理部署

1. 模型简介

项目说明
模型名称TrajectoryCrafter/TrajectoryCrafter
模型链接HuggingFace
模型描述视频扩散模型,用于单目视频相机轨迹重定向 / novel view video diffusion
模型架构CrossTransformer3D (CogVideoX-Fun-5B-InP 主干 + Perceiver 交叉注意力)
参数规模~5B (42 层 Transformer, 48 注意力头, attention_head_dim=64)
许可证Apache 2.0

输入规格:

  • hidden_states: (B, F, C, H, W) = (1, 13, 16, 48, 84) 潜变量
  • encoder_hidden_states: (B, 226, 4096) prompt 嵌入
  • timestep: (B,) 时间步
  • inpaint_latents: (B, F, 17, 48, 84) inpaint 条件(16 通道 + 1 通道 mask)
  • cross_latents: (B, 1, 16, 48, 84) 渲染视角条件
  • image_rotary_emb: 3D RoPE 位置编码 (freqs_cos, freqs_sin)

输出规格:

  • hidden_states: (B, F, C, H, W) = (1, 13, 16, 48, 84) 去噪后潜变量

2. 环境依赖

依赖项版本要求说明
Python>= 3.10推荐 3.11
torch>= 2.1.0PyTorch 框架
torch_npu>= 2.1.0昇腾 NPU 后端
diffusers== 0.39.0扩散模型管线
accelerate== 1.12.0加速推理
huggingface-hub== 0.36.0模型加载
safetensors== 0.8.0安全权重格式
昇腾驱动CANN 8.0+推荐 CANN 8.5.1

安装命令:

pip install torch-npu==2.9.0.post1 diffusers==0.39.0 accelerate==1.12.0 huggingface-hub==0.36.0 safetensors==0.8.0

3. 推理步骤

3.1 环境准备

# 检查 NPU 设备
npu-smi info

# 验证 torch_npu
python3 -c "import torch_npu; print(torch.npu.device_count(), torch.npu.get_device_name(0))"

3.2 模型下载

方式一:HuggingFace(推荐)

huggingface-cli download TrajectoryCrafter/TrajectoryCrafter --local-dir ./TrajectoryCrafter

方式二:AtomGit 镜像

https://gitcode.com/gcw_coj3XaOd/TrajectoryCrafter_TrajectoryCrafter

3.3 运行推理

# 进入交付目录
cd /path/to/delivery

# 1-step DDIM (快速验证)
python3 inference.py --steps 1 --output result_a.json --model_path /path/to/model

# 6-step DDIM (完整推理)
python3 inference.py --steps 6 --output result_b.json --model_path /path/to/model

3.4 推理参数说明

参数类型默认值说明
--stepsint6DDIM 去噪步数
--framesint13潜变量帧数
--latent_hint48潜变量高(384/8)
--latent_wint84潜变量宽(672/8)
--seedint42随机种子
--model_pathstr必填模型 checkpoint 路径
--devicestrnpu:0NPU 设备
--outputstr必填结果 JSON 输出路径
--hold-secondsint0推理完成后暂停秒数(防止 NPU 显存释放)

4. 推理成功日志

4.1 Stage A (1-step)

[env] torch=2.9.0+cpu device=npu:0
[load] CrossTransformer3DModel 加载完成 6s
[infer] DDIM 1 步, latents (1, 13, 16, 48, 84), seed=42
[infer] step 1/1 t=0 done
[infer] 去噪完成 2.96s, 输出 shape=(1, 13, 16, 48, 84) device=npu:0
[统计] 峰值显存 12.82 GiB, 去噪耗时 2.96s (2.96s/步)
[验收] NPU 推理运行成功 ✓

4.2 Stage B (6-step)

[env] torch=2.9.0+cpu device=npu:0
[load] CrossTransformer3DModel 加载完成 6s
[infer] DDIM 6 步, latents (1, 13, 16, 48, 84), seed=42
[infer] step 1/6 t=830 done
[infer] step 2/6 t=664 done
[infer] step 3/6 t=498 done
[infer] step 4/6 t=332 done
[infer] step 5/6 t=166 done
[infer] step 6/6 t=0 done
[infer] 去噪完成 16.06s, 输出 shape=(1, 13, 16, 48, 84) device=npu:0
[统计] 峰值显存 12.82 GiB, 去噪耗时 16.06s (2.68s/步)
[验收] NPU 推理运行成功 ✓

5. 测试样例及输出结果

样例 1:单步 DDIM 快速验证

运行命令:

python3 inference.py --steps 1 --output result_a.json --model_path /opt/atomgit/models/TrajectoryCrafter/TrajectoryCrafter

输出:

{
  "status": "PASS",
  "requested_device": "npu:0",
  "model_device": "npu:0",
  "input_device": "npu:0",
  "output_device": "npu:0",
  "output_shape": [1, 13, 16, 48, 84],
  "steps": 1,
  "mode": "single-step",
  "elapsed_seconds": 2.96,
  "compute": "complete CrossTransformer3D 1-step DDIM forward"
}

样例 2:六步 DDIM 完整推理

运行命令:

python3 inference.py --steps 6 --output result_b.json --model_path /opt/atomgit/models/TrajectoryCrafter/TrajectoryCrafter

输出:

{
  "status": "PASS",
  "requested_device": "npu:0",
  "model_device": "npu:0",
  "input_device": "npu:0",
  "output_device": "npu:0",
  "output_shape": [1, 13, 16, 48, 84],
  "steps": 6,
  "mode": "multi-step",
  "elapsed_seconds": 16.06,
  "compute": "complete CrossTransformer3D 6-step DDIM forward"
}

6. Agent 适配截图

6.1 Agent 完整适配工作流

Agent 适配流程

6.2 NPU 设备调用日志

NPU 设备调用

6.3 模型适配结果

模型适配结果


7. 精度评测

测试数据: 合成随机张量(与官方仓单测形状一致)

评测指标:

指标结果
设备Ascend 910B (npu:0)
精度bfloat16
峰值显存12.82 GiB
单步耗时~2.68s
DDIM 步数6 步
验证状态PASS

评测命令:

python3 inference.py --steps 6 --output result.json --model_path /path/to/model

8. NPU 配置说明

  • NPU 型号: Ascend 910B
  • NPU 卡数: 1 卡 (npu:0)
  • Tensor Parallel: N/A (单卡)
  • 显存占用: 峰值 12.82 GiB / 65536 MB HBM
  • CANN 版本: 8.5.1
  • torch_npu 版本: 2.9.0.post1

9. 已知问题

  1. crosstransformer3d.py 中的 get_3d_sincos_pos_embed 默认使用 output_type='np',在 diffusers >= 0.33.0 中已废弃。本交付件已 patch 为 output_type='pt',直接返回 PyTorch tensor。
  2. 完整官方管线还需 CogVideoX-Fun VAE/T5、DepthCrafter、SVD、BLIP2 等外部组件,本验证仅覆盖 CrossTransformer3D 扩散主干。