通过百舸平台快速开始 DreamZero 训练
一、产品简介
DreamZero 是一个基于视频生成模型(Wan2.1-I2V-14B-480P)的具身智能训练框架,支持机器人操作任务的视觉-语言-动作端到端训练。该框架通过预计算 T5 Prompt Embedding 缓存、torch.compile 全量编译和 DeepSpeed ZeRO-2 优化,实现高吞吐量的大规模分布式训练。DreamZero 支持 DROID 标准数据集与自定义 LeRobot 格式数据集,可直接用于 DROID 推理,也可在新本体(如 AgiBot)上进行微调。
二、快速开始
环境准备与开发机创建
推荐硬件配置
| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| GPU 数量 | 4 卡 | 8 卡 |
| GPU 型号 | 拥有80G显存显卡 * 4 | 拥有80G显存显卡 * 8 |
| CPU | 80 核 | 180 核 |
| 主机内存 | 512 GB | 1 TB+ |
| 存储 | 建议不少于 500G | 建议不少于 500G |
存储说明:14B 模型首次加载约需 10–15 分钟,第二次命中 page cache 后可秒级加载。推荐将
checkpoints/目录放在共享存储上。
1.1 创建开发机
打开百舸控制台 → 进入开发机页面 → 点击【创建实例】,按以下信息配置:
基本信息:
| 配置项 | 填写说明 |
|---|---|
| 实例名称 | 自定义命名 |
| 资源池类型 / 资源池 / 队列 | 根据已有资源池类型选择 |
| 资源规格 | 按上方推荐硬件配置选择(建议 8 卡) |
| 云磁盘 | 推荐预留 500 GiB 以上,保证模型权重与数据集存储空间 |
1.2 登录开发机
创建成功后,在开发机列表中找到刚创建的实例,等待状态变为「运行中」后,点击【登录】进入终端。并在终端进入项目目录:
1 cd /workspace/dreamzero
提示:如果开发机状态长时间处于「创建中」,请检查资源池是否有可用资源。
第一步:下载模型权重
创建 checkpoints 目录,使用 bcecmd 从 BOS 同步所有权重:
1# 创建目录
2mkdir -p checkpoints
3
4# 下载 DreamZero-DROID(用于推理)
5bcecmd bos sync bos://aihc-models-bj/GEAR-Dreams/DreamZero-DROID/ ./checkpoints/DreamZero-DROID/
6
7# 下载 DreamZero-AgiBot(用于在新本体上进行微调)
8# YAM 和 AgiBot 的训练脚本默认使用 pretrained_model_path=./checkpoints/DreamZero-AgiBot
9bcecmd bos sync bos://aihc-models-bj/GEAR-Dreams/DreamZero-AgiBot/ ./checkpoints/DreamZero-AgiBot/
10
11# 下载预训练基础模型权重
12# DreamZero 建立在 Wan2.1-I2V-14B-480P 之上,并使用 umt5-xxl 分词器
13bcecmd bos sync bos://aihc-models-bj/Wan-AI/Wan2.1-I2V-14B-480P/ ./checkpoints/Wan2.1-I2V-14B-480P/
14bcecmd bos sync bos://aihc-models-bj/google/umt5-xxl/ ./checkpoints/umt5-xxl/
提示:训练脚本在配置路径下未找到权重时会自动触发下载,但建议预先下载以避免启动时的额外延迟。
第二步:准备数据集
DreamZero 使用 LeRobot 格式数据集,推荐目录结构如下:
1datasets/
2└── myrobot/
3 ├── data/ # 训练样本 parquet
4 ├── videos/ # MP4 视频
5 └── meta/
从 BOS 下载 DROID 标准数据集:
1bcecmd bos sync bos:/aihc-rdw-bj/huggingface.co/datasets/GEAR-Dreams/DreamZero-DROID-Data ./data/droid_lerobot/
下载完成后,目录结构应为:
1./data/droid_lerobot/
2├── data/ # 训练样本 parquet
3├── meta/
4│ ├── info.json
5│ ├── stats.json
6│ ├── modality.json # 必需
7│ ├── relative_stats.json
8│ ├── relative_horizon_stats_dreamzero.json
9│ └── tasks.jsonl
10└── videos/ # MP4 视频
第三步:构建 T5 Prompt Embedding 缓存(推荐)
UMT5-XXL(5.6B)在训练时被冻结,但会常驻每张 GPU 约 11 GB 显存。预先离线计算 Prompt Embedding 并存入 LMDB,训练时直接查表替代 forward 推理,可腾出 11 GB 显存用于将 AdamW 优化器状态从 CPU 搬回 GPU,提升约 20.5% 的步进吞吐量。
一次性构建(单卡,约 3 分钟):
1python scripts/encode_t5_offline.py \
2 --droid-data-root ./data/droid_lerobot \
3 --t5-checkpoint ./checkpoints/Wan2.1-I2V-14B-480P/models_t5_umt5-xxl-enc-bf16.pth \
4 --tokenizer-path ./checkpoints/umt5-xxl \
5 --output-dir ./caches/t5_droid_full
构建完成后,目录结构如下:
1./caches/t5_droid_full/
2├── data/
3│ ├── data.mdb # ~2.32 GB
4│ └── lock.mdb
5└── meta.json
常见报错:若出现
lmdb.MapFullError: MDB_MAP_FULL,追加参数--map-size-gb 1024重新执行。
第四步:启动训练
最小启动命令
1export DREAMZERO_T5_CACHE_PATH=./caches/t5_droid_full
2bash scripts/train/droid_training_full_finetune_optimization.sh
不设置
DREAMZERO_T5_CACHE_PATH时,launcher 自动回退到 CPU offload + live T5 forward 安全路径,功能可用但吞吐量较低。
自定义配置(路径 / GPU 数 / Batch Size)
1export DROID_DATA_ROOT="./data/droid_lerobot"
2export OUTPUT_DIR="./checkpoints/dreamzero_droid_full"
3export NUM_GPUS=8 # 默认 8,已验证最优
4export BS=2 # BS=3/4 在 96 GiB 显卡上 OOM
5export WAN_CKPT_DIR="./checkpoints/Wan2.1-I2V-14B-480P"
6export TOKENIZER_DIR="./checkpoints/umt5-xxl"
7export DREAMZERO_T5_CACHE_PATH=./caches/t5_droid_full
8
9bash scripts/train/droid_training_full_finetune_optimization.sh
launcher 内置优化项说明
| 环境变量 | 默认值 | 作用 |
|---|---|---|
OMP_NUM_THREADS |
20 | 提升 DeepSpeed CPU Adam 多线程效率,节省约 2.5 s/step |
DREAMZERO_COMPILE |
1 | 对 DiT 40 个 block 全量执行 torch.compile |
DREAMZERO_COMPILE_MODE |
default | 编译模式(不可使用 reduce-overhead) |
TORCHINDUCTOR_CACHE_DIR |
./inductor_cache |
持久化编译缓存,冷启动从 4 分钟降至 30 秒 |
DeepSpeed 配置自动选择规则
DREAMZERO_T5_CACHE_PATH |
DS 配置 | 行为 |
|---|---|---|
| 已设置 | zero2_no_offload_optimized.json |
优化器状态保留在 GPU(吞吐量更高) |
| 未设置 / 为空 | zero2_offload_optimized.json |
优化器状态 offload 到 CPU(兜底模式) |
三、常见问题
Q:执行 nvidia-smi 报错 couldn't find libnvidia-ml.so?
执行以下命令修复软链接:
1rm -f /usr/lib/x86_64-linux-gnu/libnvidia-ml.so
2rm -f /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
3ln -s /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.580.126.20 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so
4ln -s /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.580.126.20 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
5ldconfig
Q:T5 缓存构建时报 MDB_MAP_FULL?
追加 --map-size-gb 1024 参数后重新执行构建命令即可。
Q:训练启动后 inductor 编译耗时过长?
首次冷启动约需 4 分钟用于 torch.compile 编译,编译结果会缓存至 ./inductor_cache,后续启动约 30 秒即可完成。
Q:使用 AgiBot 本体进行微调,应选哪个权重?
使用 DreamZero-AgiBot 权重(./checkpoints/DreamZero-AgiBot),YAM 和 AgiBot 训练脚本默认读取此路径,详见 pretrained_model_path 配置项。
Q:数据集中缺少 modality.json 文件训练报错?
modality.json 为必需文件,请确认数据集 meta/ 目录下包含此文件。如使用自定义数据集,可参考 docs/DROID_CONVERSION.md 进行格式转换。
评价此篇文章
