通义万相Wan2.1模型Lora训练以及推理

DiffSynth-Studio GitHub
Wan2.1 GitHub

使用 DiffSynth-Studio 进行Lora训练

  • 已经将训练好的Lora部署至LibLib 馨染

确认💫

本文训练Wan2.1 14B t2v模型
Wan2.1支持多种 Attention,如果已安装以下任何 Attention,将根据优先级启用:

  • Flash Attention 3
  • Flash Attention 2
  • Sage Attention
  • torch SDPA(默认。建议使用 torch>=2.5.0 )

这里我使用默认
在租用云计算平台中镜像选择 Pytorch 2.5.1
选择一张A800 80GB显卡
注意 实测在L20 48GB显卡训练14B模型的Lora会爆显存

环境配置💻

先克隆仓库

git clone https://github.com/modelscope/DiffSynth-Studio.git

然后进入到DiffSynth-Studio文件夹安装依赖

cd DiffSynth-Studio
pip install -e .
pip install peft lightning pandas

数据集🗒

准备⛽

数据集支持 图片视频 , 其中 图片 视作1帧的视频.
数据集需要按照以下数据结构

data/example_dataset/
├── metadata.csv
└── train
    ├── video_00001.mp4
    └── image_00002.jpg

其中 metadata.csv 文件:

file_name,text #这行一定要有, 此注释记得删除
video_00001.mp4,"video description" #video description中不能含有 "," 一句话描述最好, 此注释记得删除
image_00002.jpg,"video description"

处理🦾

README 示例

CUDA_VISIBLE_DEVICES="0" python examples/wanvideo/train_wan_t2v.py \
  --task data_process \
  --dataset_path data/example_dataset \
  --output_path ./models \
  --text_encoder_path "models/Wan-AI/Wan2.1-T2V-1.3B/models_t5_umt5-xxl-enc-bf16.pth" \
  --vae_path "models/Wan-AI/Wan2.1-T2V-1.3B/Wan2.1_VAE.pth" \
  --tiled \
  --num_frames 81 \
  --height 480 \
  --width 832

假设
你的 数据集/root/tmp/data 文件夹下
你的 模型文件/root/tmp/Wan2.1-T2V-14B 文件下
注意 将 tmp 文件夹替换成你的文件夹名称

CUDA_VISIBLE_DEVICES="0" python examples/wanvideo/train_wan_t2v.py \
  --task data_process \
  --dataset_path /root/tmp/data \
  --output_path ./models \
  --text_encoder_path "/root/tmp/Wan2.1-T2V-14B/models_t5_umt5-xxl-enc-bf16.pth" \
  --vae_path "/root/tmp/Wan2.1-T2V-14B/Wan2.1_VAE.pth" \
  --tiled \
  --num_frames 81 \
  --height 480 \
  --width 832

注意: 运行命令需要在 DiffSynth-Studio 目录下

cd DiffSynth-Studio

稍后, ./data 目录下会有

data/
├── metadata.csv
└── train
    ├── video_00001.mp4
    ├── video_00001.mp4.tensors.pth
    ├── video_00002.mp4
    └── video_00002.mp4.tensors.pth

Lora训练📚

README 示例

CUDA_VISIBLE_DEVICES="0" python examples/wanvideo/train_wan_t2v.py \
  --task train \
  --train_architecture lora \
  --dataset_path data/example_dataset \
  --output_path ./models \
  --dit_path "models/Wan-AI/Wan2.1-T2V-1.3B/diffusion_pytorch_model.safetensors" \
  --steps_per_epoch 500 \
  --max_epochs 10 \
  --learning_rate 1e-4 \
  --lora_rank 16 \
  --lora_alpha 16 \
  --lora_target_modules "q,k,v,o,ffn.0,ffn.2" \
  --accumulate_grad_batches 1 \
  --use_gradient_checkpointing

沿用上面的假设
训练14B模型需要在 dit_path 中输入模型目录, 用 , 分隔

CUDA_VISIBLE_DEVICES="0" python examples/wanvideo/train_wan_t2v.py \
  --task train \
  --train_architecture lora \
  --dataset_path /root/autodl-tmp/data \ #指定训练数据集的路径, 此注释记得删除
  --output_path /root/autodl-tmp/ \ #模型保存目录, 此注释记得删除
  --dit_path "
  /root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00001-of-00006.safetensors,
  /root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00002-of-00006.safetensors,
  /root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00003-of-00006.safetensors,
  /root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00004-of-00006.safetensors,
  /root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00005-of-00006.safetensors,
  /root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00006-of-00006.safetensors" \
  --steps_per_epoch 500 \ #每个训练 epoch 的步数, 此注释记得删除
  --max_epochs 10 \ #最大训练 epoch 数, 此注释记得删除
  --learning_rate 1e-4 \ #设置学习率, 此注释记得删除
  --lora_rank 16 \ #设置 LoRA 的秩 (rank), 此注释记得删除
  --lora_alpha 16 \ #设置 LoRA 的缩放因子, 此注释记得删除
  --lora_target_modules "q,k,v,o,ffn.0,ffn.2" \
  --accumulate_grad_batches 1 \ #设置梯度累积的批次, 此注释记得删除
  --use_gradient_checkpointing #启用梯度检查点, 此注释记得删除

训练

启动脚本后可以看到

在这里插入图片描述
下面这张就是默认参数下的显存占用, 可以看到需要61GB显存

在这里插入图片描述

视频生成🤖

首先现在当前目录下创建一个 py 文件
这里以 run.py 为例

其中 run.py 文件:

import torch
from diffsynth import ModelManager, WanVideoPipeline, save_video, VideoData


model_manager = ModelManager(torch_dtype=torch.bfloat16, device="cpu") # torch.bfloat16 高质量 & torch.float16 高速度
model_manager.load_models([
    ["/root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00001-of-00006.safetensors",
    "/root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00002-of-00006.safetensors",
    "/root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00003-of-00006.safetensors",
    "/root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00004-of-00006.safetensors",
    "/root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00005-of-00006.safetensors",
    "/root/tmp/Wan2.1-T2V-14B/diffusion_pytorch_model-00006-of-00006.safetensors"],
    "/root/tmp/Wan2.1-T2V-14B/models_t5_umt5-xxl-enc-bf16.pth",
    "/root/tmp/Wan2.1-T2V-14B/Wan2.1_VAE.pth",
])
model_manager.load_lora("/root/tmp/epoch=9-step=5000.ckpt", lora_alpha=1.0) # Lora加载点, 填入你的Lora路径
pipe = WanVideoPipeline.from_model_manager(model_manager, device="cuda")
pipe.enable_vram_management(num_persistent_param_in_dit=None)

video = pipe(
    prompt="", # 正向提示词 下面一个为默认反向提示词
    negative_prompt="过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多",
    num_inference_steps=20,# 默认50, 降低以提升生成速度
    seed=0,
    tiled=True # 降低单次处理所需的显存 提高视频质量
)
save_video(video, "video.mp4", fps=24, quality=5) # fps建议为30, 这里为了快速生成调成24

然后到 run.py 所在的目录下
运行:

python run.py

可以看到模型正在推理:

在这里插入图片描述
以下都是我上面给的参数运行时候所需要的硬件占用

  • 显存占用 34GB :

在这里插入图片描述

  • 启动瞬间内存占用 64GB:
    在这里插入图片描述

推理结束后, 就可以看到视频文件啦🥰

追加💪

😭:
主播主播
你的提示词写得确实厉害
但还是太考验灵感了
有没有什么简单又高效的方法推荐一下

😎:
有的同学,有的
像这么省事的方法还有几种
都是当前AI圈热门技巧
告诉主播,你想学哪招

回归正题
用AI来辅助我们写提示词确实是个好方法
合适的模板请求头更是可以省去许多烦恼和时间
以下是我使用的 请求头模板 :

Wan2.1通义万象是一款多模态AI模型,能够处理文本、图像等多种输入形式,并生成高质量的文本、图像或问答内容。它基于深度学习技术,支持通过输入内容来指导模型生成符合需求的输出,描述要包含或省略的元素。
我在这里引入Wan2.1通义万象中的输入内容概念,它可以是文本、图像或其他形式的输入。
下面的输入内容是用来指导AI模型生成输出的。它包含了输出内容的各种细节,如主题、风格、情感基调、视觉元素等。
以下是用输入内容帮助AI模型生成输出的例子:
"纪实摄影风格画面,一只活泼的小狗在绿茵茵的草地上迅速奔跑。小狗毛色棕黄,两只耳朵立起,神情专注而欢快。阳光洒在它身上,使得毛发看上去格外柔软而闪亮。背景是一片开阔的草地,偶尔点缀着几朵野花,远处隐约可见蓝天和几片白云。透视感鲜明,捕捉小狗奔跑时的动感和四周草地的生机。中景侧面移动视角。"
请你注意直接开始给出输入内容,需要用自然语言描述,并且确保输出为英文:
### 阿里云通义2.1 版本特性 阿里云于2025年225日深夜宣布开源视频生成模型通义2.1,此版本提供了两个主要参数规模的选择:文生视频-1.3B和文生视频-14B。这两个版本旨在满足不同的应用场景和技术需求[^1]。 #### 文生视频-1.3B 和 文生视频-14B 的特点 - **文生视频-1.3B**:适合资源有限但希望尝试高质量视频生成的个人开发者或小型团队。 - **文生视频-14B**:针对更复杂、更高精度的任务设计,适用于专业级应用开发以及研究机构。 ### 使用说明 为了方便全球范围内的开发者获取并利用这些先进的技术成果,官方已开放多个平台供下载: - GitHub - Hugging Face - 魔搭社区 用户可以根据自己的偏好选择合适的渠道来访问源码及关文档资料。 对于想要深入了解如何操作该工具的人来说,建议前往[通义官方网站](https://wanxiang.aliyun.com/)进行注册申请账号,并查阅详细的API接口指南和其他支持材料[^2]。 ### 更新内容 此次发布的通义2.1不仅实现了完全开源共享,在性能优化方面也取得了显著进步,具体表现在以下几个方面: - 提升了图像到视频转换的质量; - 增强了自然语言处理能力,使得描述文字能够更加精准地映射成视觉效果; - 改进了多模态融合机制,从而更好地理解输入数据之间的关联性; 此外,还修复了一些之前存在的Bug,并增加了新的功能模块以扩展系统的适用性和灵活性。 ```python import torch from transformers import AutoModelForVideoGeneration, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("path_to_model") # 替换为实际路径 model = AutoModelForVideoGeneration.from_pretrained("path_to_model") text_input = tokenizer("A beautiful sunset over the ocean", return_tensors="pt") video_output = model.generate(**text_input) print(video_output.shape) # 输出生成视频张量大小 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值