
Open-Sora 如何用 stage1_i2v 配置同时训练 t2v 与 i2v【免费下载链接】Open-SoraOpen-Sora: Democratizing Efficient Video Production for All项目地址: https://gitcode.com/GitHub_Trending/op/Open-Sora如果你想在 256px 分辨率下训练一个模型让它同时具备文本生成视频t2v和图生视频i2v能力Open-Sora 提供的 stage1_i2v.py 配置就是为此设计的它在 stage1 视频训练的基础上通过condition_config为每个训练样本按权重随机分配 t2v、i2v_head、i2v_loop、i2v_tail 四种训练条件从而在一次训练中混合覆盖 t2v 与 i2v 任务。本文按“准备 → 理解配置 → 启动训练 → 验证”的顺序给出可直接执行的操作路径。stage1_i2v 配置改了什么stage1_i2v.py 的完整内容如下_base_ [stage1.py] # Define model components model dict(cond_embedTrue) condition_config dict( t2v1, i2v_head5, # train i2v (image as first frame) with weight 5 i2v_loop1, # train image connection with weight 1 i2v_tail1, # train i2v (image as last frame) with weight 1 ) lr 1e-5 optim dict(lrlr)它相对 stage1.py 的差异有三处model dict(cond_embedTrue)开启模型的视觉条件嵌入分支用于接收图像条件。condition_config定义混合训练条件的键和权重。训练脚本 prepare_visual_condition_uncausal 会在每个 batch 内按random.choices(mask_cond_options, weightsmask_cond_weights, ...)为每个样本抽取一种条件因此这里的数值就是各条件被抽中的相对权重i2v_head将首个 latent 帧 mask 掉仅以单独编码的图像作为条件image as first frame权重 5i2v_loopmask 首、末两个 latent 帧训练首尾图像衔接image connection权重 1i2v_tailmask 末尾 latent 帧以末帧图像作为条件image as last frame权重 1t2v不施加视觉条件的文本到视频训练权重 1。学习率从 stage1 的5e-5覆盖为1e-5。condition_config只覆盖 video 样本代码中if T 1分支才读取该配置图像样本不受影响。由于_base_继承机制stage1 的bucket_config256px 分桶、按帧数区分的 batch size、grad_ckpt_settings (8, 100)、ckpt_every 2000等设置都会继续生效无需在 i2v 配置中重复。准备条件1. 安装环境按 README 的基础安装# create a virtual env and activate (conda as an example) conda create -n opensora python3.10 conda activate opensora # download the repo git clone https://github.com/hpcaitech/Open-Sora cd Open-Sora # Ensure torch 2.4.0 pip install -v . # for development mode, pip install -v -e . pip install xformers0.0.27.post2 --index-url https://download.pytorch.org/whl/cu121 # install xformers according to your cuda version pip install flash-attn --no-build-isolation训练还需要额外安装 docs/train.md 中列出的两个包TensorNVMe 需要系统装有 cmake用于保存 checkpointpip install githttps://github.com/hpcaitech/TensorNVMe.git # requires cmake, for checkpoint saving pip install pandarallel # for parallel processing2. 准备数据集数据集需为csv或parquet格式。文档以 45k pexels 数据集为例约 250GB下载与解压会占用大量磁盘空间mkdir datasets cd datasets # For Chinese users, export HF_ENDPOINThttps://hf-mirror.com to speed up the download huggingface-cli download --repo-type dataset hpcai-tech/open-sora-pexels-45k --local-dir open-sora-pexels-45k # 250GB cd open-sora-pexels-45k cat tar/pexels_45k.tar.* pexels_45k.tar tar -xvf pexels_45k.tar mv pexels_45k .. # make sure the path is Open-Sora/datasets/pexels_45k官方提供pexels_45k_necessary.csv含训练所需的全部信息可直接作为--dataset.data-path使用。如果使用自定义数据集csv 至少包含以下列并需先用scripts/cnv/meta.py补充元信息用于任意宽高比、分辨率和帧数的训练path,text,num_frames,height,width,aspect_ratio,resolution,fps# single process python scripts/cnv/meta.py --input datasets/pexels_45k.csv --output datasets/pexels_45k_nec.csv --num_workers 0 # parallel process python scripts/cnv/meta.py --input datasets/pexels_45k.csv --output datasets/pexels_45k_nec.csv --num_workers 64启动训练训练命令格式为torchrun --nproc_per_node 8 scripts/diffusion/train.py [path/to/config] --dataset.data-path [path/to/dataset] [override options]因此用 stage1_i2v 配置混合训练 t2v 与 i2v 的主命令是torchrun --nproc_per_node 8 scripts/diffusion/train.py configs/diffusion/train/stage1_i2v.py --dataset.data-path datasets/pexels_45k_necessary.csv命令行参数可以覆盖配置文件中的任意项例如--lr 1e-5覆盖lr但 i2v 配置里的condition_config权重不建议随手改它直接决定 t2v 与三种 i2v 条件的混合比例。训练过程中 checkpoint 每ckpt_every 2000步保存一次保留最近keep_n_latest 20个输出在outputs/下。可选多机训练改用colossalai run --hostfile hostfiles ...hostfiles中每行一个节点 IP加--wandb True把训练过程记录到 wandb加--async-io True异步保存 checkpoint依赖 ColossalAI 支持。中断后恢复训练用--load它会同时加载 optimizer 和 dataloader 状态torchrun --nproc_per_node 8 scripts/diffusion/train.py configs/diffusion/train/stage1_i2v.py --dataset.data-path datasets/pexels_45k_necessary.csv --load outputs/your_experiment/epoch*-global_step*注意如果数据集、batch size 或 GPU 数量发生变化dataloader 状态不再有参考意义此时加--start-step 0 --start-epoch 0只加载 optimizer 状态。训练完成后验证docs/train.md 的验证方式是对 checkpoint 直接跑推理。checkpoint 路径用outputs/your_experiment/epoch*-global_step*通配符指定。t2v 侧text-to-image-to-video 流水线即 t2i2v 配置torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/t2i2v_256px.py --save-dir samples --prompt raining, sea --model.from_pretrained outputs/your_experiment/epoch*-global_step*i2v 侧给定参考图验证i2v_head条件是否生效torchrun --nproc_per_node 1 --standalone scripts/diffusion/inference.py configs/diffusion/inference/256px.py --cond_type i2v_head --prompt A plump pig wallows in a muddy pond on a rustic farm, ... --ref assets/texts/i2v.png --model.from_pretrained outputs/your_experiment/epoch*-global_step*其中--ref指向参考图片仓库自带示例图 i2v.png 可直接用于冒烟测试也可以用--dataset.data-path assets/texts/i2v.csv批量生成。生成结果保存在--save-dir指定目录文档未给出量化成功标准以人工检查视频是否符合 prompt 和参考图为准。限制与边界stage1_i2v.py训练的是256px 分辨率的 t2v i2v 混合模型。要升级到 768px 并继续混合训练文档提供对应的stage2_i2v.py配置可视为本配置之后的延伸路径。各配置的 batch size 是在 H200140GB 显存上搜出来的更小显存的 GPU 需要自行通过命令行覆盖 batch size 相关项。condition_config中i2v_head权重为 5明显高于其余条件说明官方混合比例偏向“首帧条件”这一 i2v 形态调整该比例属于自定义实验文档未给出推荐取值。训练细节tensor parallelism、sequence parallelism、Zero 2、data prefetching 等文档指向 tech report本文不展开。【免费下载链接】Open-SoraOpen-Sora: Democratizing Efficient Video Production for All项目地址: https://gitcode.com/GitHub_Trending/op/Open-Sora创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考