File size: 7,627 Bytes
d5a7fd2
c28ffff
 
 
 
 
 
d5a7fd2
c28ffff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2c32505
c28ffff
2c32505
c28ffff
 
 
 
 
2c32505
 
 
 
 
 
 
ac78ced
 
 
 
 
 
 
 
 
 
 
 
c64b064
ac78ced
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
---
tags:
- exo-to-ego
- video-generation
- safetensors
- lora
- research
---
# Ego-Exo / Any2Ego — 5GB 分片权重包

**发布的是已有研究检查点与基础模型的无损分片,不是新训练结果。** 所有文件不超过
5,000,000,000 字节(包含 safetensors 头)。不是 split/tar 片段;
模型张量保留完整,一个张量不会被切成两半。原始模型/检查点没有修改。

## 目录与分片

- `models/Wan2.1-VACE-1.3B/transformer/`:原生 DiT+VACE 底座,2 片;
  `diffusion_pytorch_model.safetensors.index.json`。
- `models/Wan2.1-VACE-1.3B/text_encoder/`:原生 umT5-XXL BF16,3 片;
  `model.safetensors.index.json`。原 .pth 的完整存储逐字节转存 safetensors,
  不改变 key、shape、dtype 或值;只用 weights_only/FakeTensor 读取元信息。
- Wan VAE 和 `google/umt5-xxl/` tokenizer 保留原格式。
- `models/Qwen3-VL-8B-Instruct/`:官方基座原有 4 片已小于 5GB,完整保留。
- `models/CLIP-ViT-H-14-laion2B-s32B-b79K/`:Transformers 格式原单文件保留;
  未重复打包 OpenCLIP/bin 副本。
- `checkpoints/`:7 个主链路训练产物;`research/`:5 个辅助实验快照。
  它们本来就小于 5GB,保留原 safetensors/.pt 与必要的 adapter 配置。
- `code_support/`、`tools/`:分片加载兼容补丁、校验/安装/重新分片工具与 CPU 小测试。

基础模型仍是上游模型,不是合并后的 Any2Ego 训练权重;没有合并 LoRA。
上游模型各自遵守原许可证,不能把整个 bundle 统一声明为新的自有模型。
训练数据、caption、视频、optimizer/RNG/log/缓存不包含在这个**权重包**里。

## 训练产物选择

| Component | MiB | 来源/选择 |
|---|---:|---|
| generator_hoi | 166.9 | paper-index HOI LoRA, epoch4 |
| generator_global | 630.4 | paper-index Global caption branch, epoch4 |
| generator_spatial | 630.5 | paper-index Spatial caption branch, epoch2; historical teacher caption training |
| reward_preview | 630.4 | teacher-caption Global reward preview, epoch4 |
| mask_predictor | 21.2 | historical evaluated PhiSeg, epoch9; exo_full_context/BN settings must match |
| sft_only | 83.3 | Qwen3-VL-8B LoRA, step4070 |
| caption_grpo | 83.3 | Qwen3-VL-8B GRPO LoRA, step3800 |
| mask_predictor_paperalign_candidate | 21.2 | last existing paper-align checkpoint, not validated best/final |
| vlm_comparison | 720.4 | paper-index continuous VLM comparison, epoch0 |
| joint_branch | 1350.8 | last normal joint checkpoint; gate-edited ablations excluded |
| caption_dpo | 630.4 | last available DPO checkpoint, not asserted best |
| native_narr_dit | 333.8 | native narration DiT LoRA, epoch4 |

Historical Spatial epoch2 使用 teacher captions 训练,不冒称新的 GRPO-caption
重训结果;PhiSeg epoch9 对应 exo_full_context/BN 实验支路,推理需匹配
`--exo_full_context --bn_batch_stats` 与数据设置。paperalign epoch4 只是候选,
未声明最佳/收敛。辅助 joint/VLM/DPO/native-narr 权重不可替代主分支。
SFT/GRPO 为 Qwen3-VL-8B 的 rank16/alpha32 LoRA,非机器人项目的 27B 权重。
Adapter 权重原样保留,配置只将基座路径规范为官方 Qwen ID。

## 接到现有代码(不会自动训练或推理)

GitHub 源码:`https://github.com/coisini-gif/exo-ego-video-converter`(私密仓库需访问权限)。
下载权重包后,在源码 checkout 的 `code/core` 下使用模型。

```bash
BUNDLE=/your/downloaded/ego_exo_5gb_20261102
CORE=/your/exo-ego-video-converter/code/core
# 先看计划;无写入、无模型加载
python "$BUNDLE/tools/attach_model_bundle.py" --bundle "$BUNDLE" --code-root "$CORE"
# 仅对不存在的资源建链接,旧版 loader 按已知 SHA256 安全补丁;有自定义改动会拒绝覆盖
python "$BUNDLE/tools/attach_model_bundle.py" --bundle "$BUNDLE" --code-root "$CORE" --apply
# 文件完整性校验(需要读完整包,但不使用 GPU)
python "$BUNDLE/tools/verify_model_bundle.py" --bundle "$BUNDLE"
```

Wan 的这两个索引**不能直接传入旧版二进制 loader**。兼容补丁分别把
DiT、T5 的 shard 列表传给一个 `ModelConfig(path=[...])`,再加入 VAE;
已覆盖 HOI/Global/Spatial 推理、generator training defaults 和 reward preview
共用的 build_pipe。原单文件路径仍然兼容,`WAN_MODEL_ROOT` 可覆盖 Wan 位置。
这不是标准 diffusers 架构转换;不要直接对 Wan 分片子目录调用
`transformers.AutoModel.from_pretrained`,也不需要先合并回 >5GB 文件。

若用 research 旧入口,设置 `MODEL_ROOT=$BUNDLE/models`,并显式指定对应
`$BUNDLE/research/...` 检查点;这些旧入口仍需用 `wan_model_paths` 解析 Wan
组件,或采用 core 主入口。未声称所有历史脚本均已自动改为分片加载。
运行推理/训练还需要论文对应数据、mask、caption、第三方框架和正确版本。
**权重完整性校验并不等于完整 GPU 复现或论文指标复现。**

## 校验与 HF

`bundle_manifest.json` / `CHECKSUMS.sha256` 提供文件哈希;两个大组件各自的
`reshard_manifest.json` 还包含每个原张量的 SHA256,输出独立回读逐张量验证。
`native_reader_validation.json` 使用原生 safetensors CPU reader 验证所有
名称、形状和 dtype,未实例化模型/分配 GPU。

整个目录可作为 **public HF model repo** 的上传目录(含模型/权重 README)。
如只发布自训产物,可仅上传 `checkpoints/` 和 `research/`,依赖官方基座。
本地分片流程**没有运行网络上传**;本包分发目标为 `diffusion-gif/any2ego` 公开模型仓。GitHub token
不能用于 HF。不保存或打包密钥。可在 HF 单独建 repo 后使用 `hf upload`
或 huggingface_hub 上传目录;Wan 模型资源布局需保留不变。

## 分发与导出记录

分发目标:`diffusion-gif/any2ego`,`model`,Public。基座与自训权重未合并,原张量内容未改变。`bundle_manifest.json` 中的 `upload_run=false` 等运行字段描述原始**本地导出阶段**,不是此 HF 仓库的传输状态。分发版只调整 README 的分发说明并相应更新文件校验清单;数据和密钥不在包内。

## Public distribution status

Repository: `diffusion-gif/any2ego` (`model`, Public). All listed tensor files are complete and remote hashes verified.
Source export execution booleans describe the original local export, not current Hub upload status.
See `LICENSES/UPSTREAM.md` for upstream attribution and component licenses.

## Historical training-data index

`TRAINING_DATA_INDEX.json` is attached to this model download. It identifies
retained ORIGINAL training JSON/CSV/Parquet, pinned protected snapshot revisions,
file hashes, original legacy observation backups and separately labeled later data.
Original restricted annotations remain private; no data-owner credentials are included.

Public registry: https://huggingface.co/datasets/diffusion-gif/training-data-index

```bash
# For old trajectory checkpoints; inspect other dataset IDs for Any2Ego:
python tools/fetch_training_data.py --index TRAINING_DATA_INDEX.json --dataset ego_exo_original_training_inputs --output data_download
# after owner login / dry-run inspection add --execute
```

A pointer index cannot guarantee that an unbacked original video remains available
forever. The large Ego-Exo RGB/GT-mask collection is not mirrored here. Launch-time
content hashes were not recorded for all components; current retained snapshots
and actual verified path bindings are explicitly distinguished in the index.