Wan2.1 t2v模型Lora Fine-Tune

1. Wan2.1模型

Wan2.1是由阿里巴巴开源的AI视频生成大模型,具备强大的视觉生成能力,支持文本到视频(T2V)和图像到视频(I2V)任务。该模型基于前沿的Diffusion Transformer架构,结合了因果3D变分自编码器(VAE)和优化的训练策略,能够高效处理时空信息,生成高质量、连贯性强的视频。

该模型基于主流的视频Diffusion(扩散模型)和Transformer架构。扩散模型通过逐步去除噪声来生成数据,而Transformer架构则基于自注意力机制(Attention)捕捉长时程依赖关系,从而生成时空一致的高质量视频。在权威评测集VBench中,Wan2.1的14B参数专业版本以总分86.22%的成绩大幅超越了国内外其他模型(如Sora、Luma、Pika等),稳居榜首位置[1]。该模型能够生成复杂运动、还原真实物理规律、提升影视质感,并优化指令遵循。

本文不会介绍Wan 2.1 模型的原理,而是主要介绍如何对Wan 2.1 模型进行lora fine-tune,生成需要的视频风格,使用的工具为Diffusion-Pipe[2]

2. Diffusion Pipe

Diffusion-Pipe 是一个用于扩散模型(diffusion models)的管道并行训练脚本,旨在通过分布式计算和高效的内存管理,训练那些超出单个 GPU 内存限制的大型模型。

使用这个项目进行训练可以简化很多流程,目前它可以提供的功能包括:

  1. 管道并行训练:通过将模型分割到多个 GPU 上进行训练,Diffusion-Pipe 能够处理比单个 GPU 内存更大的模型。
  2. 支持多种模型:目前支持 SDXL、Flux、LTX-Video、HunyuanVideo(t2v)、Cosmos、Lumina Image 2.0、Wan2.1(t2v 和 i2v)以及 Chroma 等多种模型。
  3. 高效的多进程预缓存:通过多进程和多 GPU 预缓存潜在变量和文本嵌入,减少训练时的内存需求,加速训练过程。
  4. Tensorboard 日志记录:记录训练过程中的关键指标,便于实时监控训练进度。
  5. 评估集指标计算:在保留的评估集上计算指标,帮助衡量模型的泛化能力。
  6. 训练状态检查点:支持训练状态的自动保存与恢复,确保训练过程的连续性。
  7. 易于扩展:通过实现一个简单的子类即可添加对新模型的支持,简化了集成流程。

3. 环境准备

在这次lora fine-tune中,我们使用的环境为:

  1. 计算资源:AWS g5.4xlarge实例(1块Nvidia A10G)
  2. 操作系统:ubuntu 22.04
  3. 模型:wan2.1-t2v-1.3b

3.1. 配置训练环境

设置diffusion-pipe训练环境:

# 创建conda环境

conda create -n diffusion-pipe python=3.12

conda activate diffusion-pipe

# 安装pytorch和cuda-nvcc

pip install torch==2.4.1 torchvision==0.19.1 --index-url https://download.pytorch.org/whl/cu121

conda install nvidia::cuda-nvcc

# 下载diffusion-pipe

git clone https://github.com/tdrussell/diffusion-pipe

cd diffusion-pipe

pip install -r requirements.txt

# 最后下载wan 2.1 模型到models/目录下:

huggingface-cli download Wan-AI/Wan2.1-T2V-1.3B-Diffusers --local-dir ./wan2.1-t2v-1.3b

3.2. 准备训练数据

在准备数据集时,需要准备符合下面要求的数据:

  1. 图片:至少10-15张图片(7-8张一般也可以,但效果相对会差一些),常规图片格式均可以(例如jpg, jpeg, png, webp等)。也可以使用mp4格式的短视频(2-3秒),但是会消耗较多的VRAM
  2. Text Prompt:每张图片必须有一个对应的 .txt 文件,里面包含对应图片的描述说明
  3. 触发词:一个唯一的触发关键词,确保模型能映射到新学习到的风格或人物

在准备Text Prompt时,注意以下格式:

  1. 要有描述性,但要简洁(避免提示语过长或过短)
  2. 包含有关背景、服装、动作等方面的细节
  3. 在所有的“.txt”文件中始终使用相同的触发词

示例数据:

A portrait of a GF Carty Chan with short brown hair, wearing a white T-shirt, set against a clear blue sky.

在数据集准备完成后,将其上传到 /diffusion-pipe/data/input 文件夹中。

4. 训练

首先编辑examples/dataset.toml文件,指定path为数据路径,例如:

path = '/home/ubuntu/diffusion-pipe/data/input'

以及设置:

num_repeats = 10

然后编辑examples/wan_14b_min_vram.toml文件,指定输出路径以及部分训练参数,例如epoch:

# change this

output_dir = '/home/ubuntu/diffusion-pipe/output'

# and this

dataset = 'examples/dataset.toml'

epochs = 400

save_every_n_epochs = 10

# 以及修改模型路径

ckpt_path = '/home/ubuntu/diffusion-pipe/models/wan2.1-t2v-1.3b'

设置好这些配置后,开启一个新的tmux session进行训练:

tmux new -s training

conda activate diffusion-pipe

cd diffusion-pipe

NCCL_P2P_DISABLE="1" NCCL_IB_DISABLE="1" deepspeed --num_gpus=1 train.py --deepspeed --config examples/wan_14b_min_vram.toml

5. 训练结果

在训练到390个epoch后,手动停止训练:

[Rank 0] step=31199, skipped=0, lr=[2e-05], mom=[[0.9, 0.99]]

steps: 31199 loss: 0.0023 iter time (s): 1.691 samples/sec: 0.591

[Rank 0] step=31200, skipped=0, lr=[2e-05], mom=[[0.9, 0.99]]

steps: 31200 loss: 0.0052 iter time (s): 1.694 samples/sec: 0.590

Saving model to directory epoch390

然后使用ComfyUI里构建一个Wan2.1的text2video的工作流查看效果,使用提示词:

GF Carty Chan, short dark hair, wearing a white T-shirt, Hair blowing in the wind。

未使用lora时生成的视频效果:

使用lora后生成的视频效果:

可以看到生成的视频与训练数据里的人物基本保持了一致。

5. 总结

通过 Diffusion-Pipe 对 Wan2.1 模型进行 LoRA 微调,可以在有限资源下有效调整视频生成风格,尤其适合特定人物或艺术风格的定制化视频生成任务。整个流程具备良好的可复现性和扩展性,适合进一步探索个性化AI视频创作场景。

下一篇文章我们会继续介绍如何使用图片和视频对 Wan2.1 模型进行 image-to-video 的 LoRA 微调。

References

[1] 边缘云玩转通义万相Wan2.1-T2V推理业务最佳实践: https://help.aliyun.com/zh/ens/use-cases/wan2-1-t2v-1-3b-best-practice-of-reasoning-business

[2] Diffusion-Pine Github: https://github.com/tdrussell/diffusion-pipe

Wan2.1 t2v模型Lora Fine-Tune的更多相关文章

  1. caffe简易上手指南(三)—— 使用模型进行fine tune

    之前的教程我们说了如何使用caffe训练自己的模型,下面我们来说一下如何fine tune. 所谓fine tune就是用别人训练好的模型,加上我们自己的数据,来训练新的模型.fine tune相当于 ...

  2. caffe fine tune 复制预训练model的参数和freeze指定层参数

    复制预训练model的参数,只需要重新copy一个train_val.prototxt.然后把不需要复制的层的名字改一下,如(fc7 -> fc7_new),然后fine tune即可. fre ...

  3. [机器学习]Fine Tune

    Fine Tune顾名思义,就是微调.在机器学习中,一般用在迁移学习中,通过控制一些layer调节一些layer来达到迁移学习的目的.这样可以利用已有的参数,稍微变化一些,以适应新的学习任务.所以说, ...

  4. L23模型微调fine tuning

    resnet185352 链接:https://pan.baidu.com/s/1EZs9XVUjUf1MzaKYbJlcSA 提取码:axd1 9.2 微调 在前面的一些章节中,我们介绍了如何在只有 ...

  5. 在imagenet预训模型上进行finetune

    所谓fine tune就是用别人训练好的模型,加上我们自己的数据,来训练新的模型.fine tune相当于使用别人的模型的前几层,来提取浅层特征,然后在最后再落入我们自己的分类中. fine tune ...

  6. 使用神经网络来识别手写数字【译】(三)- 用Python代码实现

    实现我们分类数字的网络 好,让我们使用随机梯度下降和 MNIST训练数据来写一个程序来学习怎样识别手写数字. 我们用Python (2.7) 来实现.只有 74 行代码!我们需要的第一个东西是 MNI ...

  7. 深度学习笔记(六)finetune

    转自Caffe fine-tuning 微调网络 一般来说我们自己需要做的方向,比如在一些特定的领域的识别分类中,我们很难拿到大量的数据.因为像在ImageNet上毕竟是一个千万级的图像数据库,通常我 ...

  8. Object Detection · RCNN论文解读

    转载请注明作者:梦里茶 Object Detection,顾名思义就是从图像中检测出目标对象,具体而言是找到对象的位置,常见的数据集是PASCAL VOC系列.2010年-2012年,Object D ...

  9. caffe中train过程的train数据集、val数据集、test时候的test数据集区别

    val是validation的简称.training dataset 和 validation dataset都是在训练的时候起作用.而因为validation的数据集和training没有交集,所以 ...

  10. caffe中的fine-tuning

    caffe finetune两种修改网络结构prototxt方法 第一种方法:将原来的prototxt中所有的fc8改为fc8-re.(若希望修改层的学习速度比其他层更快一点,可以将lr_mult改为 ...

随机推荐

  1. Leetcode 765 情侣牵手 / Hetao-013 翅膀打结 题解 [ 黄 ] [ 并查集 ] [ BFS ] [ 贪心 ]

    经典的连通块题,幸好我之前在 leetcode 看过原. 转化 首先观察到一对cp无论是男在前,还是女在前,都视为配对成功,对答案无影响. 因此,我们可以把一对情侣赋同一个编号,直接加一除以二即可. ...

  2. Docker启动Nginx

    Docker启动Nginx 搜索镜像 docker search nginx 拉取镜像 这里拉取的官方镜像 docker pull nginx 创建挂载目录 将nginx的文件都放在/opt/ngin ...

  3. SpringCloud自定义loadbalancer实现标签路由

    一.背景 最近前端反应开发环境有时候调接口会很慢,原因是有开发图方便将本地服务注册到开发环境,请求路由到开发本地导致, 为了解决该问题想到可以通过标签路由的方式避免该问题,实现前端联调和开发自测互不干 ...

  4. 福尼斯焊机TPS320i/TPS400i/TPS500i的焊接特性

    福尼斯焊机设备原理 TPS320i.TPS400i.TPS500i和TPS 600iMIG/MAG电源由微处理器控制,机器人驱动器维修,是完全数字化的逆变器电源. 模块化设计和系统的扩展潜力使其具有高 ...

  5. MySQL 查询时间

    mysql 查询当天.最近一天.最近一周,本月,上一个月的数据 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT ...

  6. 解决Typecho文章cid不连续的教程

    Typecho下文章编号(cid)不连续,虽然不影响什么,也无关紧要,但是对于有强迫症的人(比如我)来说,真的是无法忍受.还好有大佬提供了解决办法. 将以下代码保存为php文件,上传至网站根目录,在浏 ...

  7. JavaUtils - [03] 代码生成器(旧)

    题记部分 001 || 引入依赖 <!-- Code Generator --> <dependency> <groupId>com.baomidou</gr ...

  8. 2025 年最值得尝试的几款 DevOps 平台工具推荐

    随着软件开发和运维的深度融合,DevOps 平台已成为现代企业加速数字化转型的核心引擎.在 2025 年,面对快速迭代的市场需求与复杂的技术架构,选择一款适配性强.功能完备的 DevOps 平台,不仅 ...

  9. 【练习回顾】dfs迷宫+路径打印

    很直接的dfs.递归+栈--不知道以后会不会生疏 进入一次dfs,相当于走一步,入栈:结束一次dfs,相当于这一步考虑结束,出栈 笑死,y1竟然是一个函数 突然发现写的有点槽,可以把dfs形式化为&q ...

  10. 微信小程序获取环境变量

    微信小程序获取环境变量 在微信小程序中,无法直接获取环境变量.但是,我们可以通过其他方式来模拟环境变量的功能. 参考用法 通过 wx.getAccountInfoSync() 获取小程序信息,包含小程 ...