ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从 .pt 文件到 dataset_manifest:libero4in1_wan2.2vae_latent_cosmos_style 数据格式逐字段解读

从 .pt 文件到 dataset_manifest:libero4in1_wan2.2vae_latent_cosmos_style 数据格式逐字段解读

【免费下载链接】libero4in1_wan2.2vae_latent_cosmos_style

项目地址:https://ai.gitcode.com/hf_mirrors/MangoGoes/libero4in1_wan2.2vae_latent_cosmos_style
点击查看免费下载

libero4in1_wan2.2vae_latent_cosmos_style是一个 LIBERO 四套任务合并的 Wan2.2-VAE latent 缓存数据集,共 53 GB、1700+ 个.pt文件,并配有完整的dataset_manifest.json清单。本文带你逐字段读懂dataset_manifest.json,并解释episodes/*.pt文件里到底存了什么、怎么按 shard 分片读取,适合刚接触 VLA(视觉-语言-动作)机器人数据集的新手。

一、这个数据集是做什么的

训练 LIBERO policy(action head / VLA 模型)时,需要反复把 256×256 的视频帧喂给 VAE 编码器,这个开销非常大。本数据集提前把四个 suite 的视频统一用 Wan2.2 VAE 编码成latent 缓存,训练时直接读 latent,跳过重复的 VAE 编码。

目录suiteepisode 数窗口数说明
libero_spatial/libero_spatial43246,058空间推理任务
libero_object/libero_object45459,720物体操作任务
libero_goal/libero_goal42845,194目标指令任务
libero_10/libero_1037995,405多任务长指令
合计4 in 11,693246,377见 README.md

仓库每个 suite 目录结构一致,以 libero_10/ 为例:

  • episodes/episode_000000.pt…episode_000378.pt:每个 episode 一个 latent 文件
  • dataset_manifest.json:完整清单,含全部 379 个 episode 的元信息
  • dataset_manifest_shard_0000.json ~dataset_manifest_shard_0004.json:把 episode 均分成 5 片的小清单,方便分布式数据加载器按分片并行读数据

二、episodes/ 下的 .pt 文件:一个 episode 一份 latent

以 libero_10/episodes/episode_000000.pt 为例,每个.pt文件是单个 episode 的全部视频窗口 latent(bf16),命名规则固定为 6 位零填充编号:episode_000000.pt、episode_000001.pt……

几个关键参数(README 已说明):

  • 编码模型:Wan2.2 VAE(Wan2.2_VAE.pth)
  • 帧大小:256×256
  • 窗口模式:windowed(--windowed),即 episode 视频按窗口切分后逐窗口编码

⚠️新手注意:本仓库中的.pt文件是 Git LFS 指针(文件本体约 133 字节,指向真实数据)。实际使用时需要完整拉取 LFS 数据,或从 README.md 提示的 dataset 类型仓库下载,才能拿到真正的 latent 张量。

三、dataset_manifest.json 顶层字段逐条解读

打开 libero_10/dataset_manifest.json,顶层是一个 JSON 对象,字段含义如下:

字段示例值含义
schema_version"exact_window_v1"清单 schema 版本,代码解析时应先校验此值
suite"libero_10"所属 suite 名称,与目录名一致
source_dataset/disk/rl/data/LIBERO_LeRobot_v3/libero_10原始 RGB 数据集路径(编码前来源)
image_size256VAE 编码输入边长,256×256
chunk_length16单个时间窗口的帧长,即chunk_size
camera_mode"concat_view"相机视图拼接方式
sample_stride1采样步长,1 表示逐帧不跳采
fps20.0原始视频帧率
latent_shape[5, 48, 12, 20]每个窗口的 latent 形状(channels, latent_c, latent_h, latent_w)
vae_path…/wan22_vae/Wan2.2_VAE.pth编码所用 VAE 权重路径,复现时须一致
vae_encode_contract见下文编码契约:dtype 与分块规则,保证可复现
script_revision"330f001"生成该清单的脚本 commit,用于版本追溯
task_indexnull任务编号,本数据集为全量缓存故为 null
episode_count379该 suite 的 episode 总数
window_count95405全部窗口(样本)总数,可直接估算 batch 数
episodes数组逐 episode 的元信息,见下节

关于latent_shape = [5, 48, 12, 20]:256×256 的 RGB 帧经 Wan2.2 VAE 后,空间维度下采样 8 倍得到 12×20 的 latent 网格,48 是 latent 通道数,首维 5 对应窗口在时间维上的 latent 帧数(由chunk_length=16与 VAE 时间下采样共同决定)。

vae_encode_contract子对象规定了编码时的硬件级约束:

"vae_encode_contract": { "compute_dtype": "torch.bfloat16", "encode_exact_durations": [17, 61, 73], "encode_chunk_frames": { "256": 68, "480": 24, "720": 8, "768": 8 } }
  • compute_dtype:全程 bf16 计算,换 dtype 数值会有差异
  • encode_exact_durations:按这些时长精确切段编码,避免边界帧偏差
  • encode_chunk_frames:不同分辨率下每次送入 VAE 的最大帧数,防显存溢出

四、episodes 数组:逐条元信息

顶层episodes数组中每个元素对应一个.pt文件,字段固定为 6 个(见 dataset_manifest.json 第 36-49 行):

字段含义
episode_indexepisode 编号,0 起,与文件名episode_000000.pt的编号一一对应
episode_path该 episode latent 文件的生成时绝对路径(注意:这是作者机器上的路径,实际文件在仓库对应目录下)
window_count该 episode 切出的窗口总数,即该文件可提供的训练样本数
image_size该 episode 的输入边长,本数据集恒为 256
target_h/target_w拼接视图的输出尺寸 192×320(concat_view 布局)
latent_shape该 episode 每个窗口的 latent 形状,与顶层一致

一个细节:window_count各不相同(如 ep0 是 198,ep2 是 268),因为每个 episode 的原始时长不同,窗口数由时长 − chunk_length决定。做数据均衡或按窗口采样训练时,应以逐 episode 的window_count为准,而不是简单按文件数均匀采样。

五、shard 分片文件:给分布式训练用的"切好蛋糕"

每个 suite 把 episode 均分成 5 片,例如 dataset_manifest_shard_0000.json 只有 76 个 episode,而完整清单有 379 个。分片文件与主清单的差异只有两处:

  1. episodes数组只包含本片负责的 episode(按索引间隔取,如 0、5、10、15……)
  2. 文件末尾多两个字段:
"episode_shard": 4, "num_shards": 5

即"我是第 4 片(0 起算),共 5 片"。这样多卡 / 多进程训练时,每个 worker 只加载自己的 shard 清单,互不重叠。可以验证:5 个 shard 的window_count之和(19273+19690+18745+18880+18817)正好等于主清单的95405。

💡 提示:如果你的数据加载器支持分片(如按shard_id / num_shards切分),直接用 shard 文件;否则读主清单即可,内容完全一致。

六、快速上手建议

  1. 先读 manifest 再读数据:解析schema_version和latent_shape,确认与你的解码逻辑匹配,再加载.pt
  2. 分布式训练用 shard:按episode_shard分配,避免重复读盘
  3. 估算数据量:window_count就是样本总数,四个 suite 合计约 24.6 万窗口
  4. 注意文件本体:仓库里的.pt需通过 LFS 或 dataset 仓库拉取完整数据

相关文件索引:

  • 项目说明:README.md
  • 完整清单示例:libero_10/dataset_manifest.json
  • 分片清单示例:libero_goal/dataset_manifest_shard_0000.json
  • latent 文件示例:libero_spatial/episodes/episode_000000.pt

读懂这套格式后,你就可以把 LIBERO 原始视频"一步到位"地接入 VLA 训练管线,而不再为 VAE 编码重复付费了。🚀

【免费下载链接】libero4in1_wan2.2vae_latent_cosmos_style

项目地址:https://ai.gitcode.com/hf_mirrors/MangoGoes/libero4in1_wan2.2vae_latent_cosmos_style
点击查看免费下载

相关推荐

上一篇:Switch大气层系统完整指南:从零开始掌握终极破解方案
下一篇:3分钟永久激活Beyond Compare 5:开源密钥生成工具终极指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进