Wan2.1 t2v模型Lora Fine-Tune
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 内存限制的大型模型。
使用这个项目进行训练可以简化很多流程,目前它可以提供的功能包括:
- 管道并行训练:通过将模型分割到多个 GPU 上进行训练,Diffusion-Pipe 能够处理比单个 GPU 内存更大的模型。
- 支持多种模型:目前支持 SDXL、Flux、LTX-Video、HunyuanVideo(t2v)、Cosmos、Lumina Image 2.0、Wan2.1(t2v 和 i2v)以及 Chroma 等多种模型。
- 高效的多进程预缓存:通过多进程和多 GPU 预缓存潜在变量和文本嵌入,减少训练时的内存需求,加速训练过程。
- Tensorboard 日志记录:记录训练过程中的关键指标,便于实时监控训练进度。
- 评估集指标计算:在保留的评估集上计算指标,帮助衡量模型的泛化能力。
- 训练状态检查点:支持训练状态的自动保存与恢复,确保训练过程的连续性。
- 易于扩展:通过实现一个简单的子类即可添加对新模型的支持,简化了集成流程。
3. 环境准备
在这次lora fine-tune中,我们使用的环境为:
- 计算资源:AWS g5.4xlarge实例(1块Nvidia A10G)
- 操作系统:ubuntu 22.04
- 模型: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. 准备训练数据
在准备数据集时,需要准备符合下面要求的数据:
- 图片:至少10-15张图片(7-8张一般也可以,但效果相对会差一些),常规图片格式均可以(例如jpg, jpeg, png, webp等)。也可以使用mp4格式的短视频(2-3秒),但是会消耗较多的VRAM
- Text Prompt:每张图片必须有一个对应的 .txt 文件,里面包含对应图片的描述说明
- 触发词:一个唯一的触发关键词,确保模型能映射到新学习到的风格或人物
在准备Text Prompt时,注意以下格式:
- 要有描述性,但要简洁(避免提示语过长或过短)
- 包含有关背景、服装、动作等方面的细节
- 在所有的“.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的更多相关文章
- caffe简易上手指南(三)—— 使用模型进行fine tune
之前的教程我们说了如何使用caffe训练自己的模型,下面我们来说一下如何fine tune. 所谓fine tune就是用别人训练好的模型,加上我们自己的数据,来训练新的模型.fine tune相当于 ...
- caffe fine tune 复制预训练model的参数和freeze指定层参数
复制预训练model的参数,只需要重新copy一个train_val.prototxt.然后把不需要复制的层的名字改一下,如(fc7 -> fc7_new),然后fine tune即可. fre ...
- [机器学习]Fine Tune
Fine Tune顾名思义,就是微调.在机器学习中,一般用在迁移学习中,通过控制一些layer调节一些layer来达到迁移学习的目的.这样可以利用已有的参数,稍微变化一些,以适应新的学习任务.所以说, ...
- L23模型微调fine tuning
resnet185352 链接:https://pan.baidu.com/s/1EZs9XVUjUf1MzaKYbJlcSA 提取码:axd1 9.2 微调 在前面的一些章节中,我们介绍了如何在只有 ...
- 在imagenet预训模型上进行finetune
所谓fine tune就是用别人训练好的模型,加上我们自己的数据,来训练新的模型.fine tune相当于使用别人的模型的前几层,来提取浅层特征,然后在最后再落入我们自己的分类中. fine tune ...
- 使用神经网络来识别手写数字【译】(三)- 用Python代码实现
实现我们分类数字的网络 好,让我们使用随机梯度下降和 MNIST训练数据来写一个程序来学习怎样识别手写数字. 我们用Python (2.7) 来实现.只有 74 行代码!我们需要的第一个东西是 MNI ...
- 深度学习笔记(六)finetune
转自Caffe fine-tuning 微调网络 一般来说我们自己需要做的方向,比如在一些特定的领域的识别分类中,我们很难拿到大量的数据.因为像在ImageNet上毕竟是一个千万级的图像数据库,通常我 ...
- Object Detection · RCNN论文解读
转载请注明作者:梦里茶 Object Detection,顾名思义就是从图像中检测出目标对象,具体而言是找到对象的位置,常见的数据集是PASCAL VOC系列.2010年-2012年,Object D ...
- caffe中train过程的train数据集、val数据集、test时候的test数据集区别
val是validation的简称.training dataset 和 validation dataset都是在训练的时候起作用.而因为validation的数据集和training没有交集,所以 ...
- caffe中的fine-tuning
caffe finetune两种修改网络结构prototxt方法 第一种方法:将原来的prototxt中所有的fc8改为fc8-re.(若希望修改层的学习速度比其他层更快一点,可以将lr_mult改为 ...
随机推荐
- Leetcode 765 情侣牵手 / Hetao-013 翅膀打结 题解 [ 黄 ] [ 并查集 ] [ BFS ] [ 贪心 ]
经典的连通块题,幸好我之前在 leetcode 看过原. 转化 首先观察到一对cp无论是男在前,还是女在前,都视为配对成功,对答案无影响. 因此,我们可以把一对情侣赋同一个编号,直接加一除以二即可. ...
- Docker启动Nginx
Docker启动Nginx 搜索镜像 docker search nginx 拉取镜像 这里拉取的官方镜像 docker pull nginx 创建挂载目录 将nginx的文件都放在/opt/ngin ...
- SpringCloud自定义loadbalancer实现标签路由
一.背景 最近前端反应开发环境有时候调接口会很慢,原因是有开发图方便将本地服务注册到开发环境,请求路由到开发本地导致, 为了解决该问题想到可以通过标签路由的方式避免该问题,实现前端联调和开发自测互不干 ...
- 福尼斯焊机TPS320i/TPS400i/TPS500i的焊接特性
福尼斯焊机设备原理 TPS320i.TPS400i.TPS500i和TPS 600iMIG/MAG电源由微处理器控制,机器人驱动器维修,是完全数字化的逆变器电源. 模块化设计和系统的扩展潜力使其具有高 ...
- MySQL 查询时间
mysql 查询当天.最近一天.最近一周,本月,上一个月的数据 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT ...
- 解决Typecho文章cid不连续的教程
Typecho下文章编号(cid)不连续,虽然不影响什么,也无关紧要,但是对于有强迫症的人(比如我)来说,真的是无法忍受.还好有大佬提供了解决办法. 将以下代码保存为php文件,上传至网站根目录,在浏 ...
- JavaUtils - [03] 代码生成器(旧)
题记部分 001 || 引入依赖 <!-- Code Generator --> <dependency> <groupId>com.baomidou</gr ...
- 2025 年最值得尝试的几款 DevOps 平台工具推荐
随着软件开发和运维的深度融合,DevOps 平台已成为现代企业加速数字化转型的核心引擎.在 2025 年,面对快速迭代的市场需求与复杂的技术架构,选择一款适配性强.功能完备的 DevOps 平台,不仅 ...
- 【练习回顾】dfs迷宫+路径打印
很直接的dfs.递归+栈--不知道以后会不会生疏 进入一次dfs,相当于走一步,入栈:结束一次dfs,相当于这一步考虑结束,出栈 笑死,y1竟然是一个函数 突然发现写的有点槽,可以把dfs形式化为&q ...
- 微信小程序获取环境变量
微信小程序获取环境变量 在微信小程序中,无法直接获取环境变量.但是,我们可以通过其他方式来模拟环境变量的功能. 参考用法 通过 wx.getAccountInfoSync() 获取小程序信息,包含小程 ...