lora训练暂且算是实现了,LoraModule里的apply_to竟然可以直接作用到原来的模块上是挺方便的,不知道peft为什么还要再去包一层,可能是为了兼容更多模型的lora?
刚去测试了一下在10个pan left 数据集100epoch的训练下,lora学习的表现已经相当不错了,基本每个视频都看得到明显的镜头移动,可喜可贺。
至于后面的目标:
1)测试如何应用到原来权重, √
2)训练一个过拟合,验证权重有用
3)尝试训练camera motion lora
4) 看看后面能不能对接peft
5) 之后去看看pytorch_lighting,hf trainer,pytorch的训练代码,看哪里可以提升的
前面的1,2,3点差不多已经验证过去了,
4.主要是不清楚现在这种朴素的应用支不支持多个lora权重一起作用,我感觉多个apply_to到原模块上应该是后面直接覆盖前面的,等我再训练一个lora验证一下。
5.尽量去减轻lora训练的成本,包括显存和时间占用,sd-scripts里面写得很复杂,很大程度就是去套了各种训练加速的工具或框架,虽然写起来麻烦,但后面应该还是要做的。
当然,在集中训练lora前,还是得先把大模型整个微调一遍。
稍微再这里理一理大模型微调还要什么
1)数据集-》大规模的数据集还是得靠爬虫,初步先手动下载个几个视频练着吧 -》后面还要去选打标的大模型,刚好有可以打标视频的,到时候先试试。
2)策略倒是已经定了模型并行的训练-》后续优化也顶天了就是改成流水线并行,外面训练框架都是以dp为基础,毕竟确实以速度为基准,想要提速度,还是要花钱提设备
3) 这些模型训练基本都用AdamW,后面试试看progidy或者其他优化器看看
4)模型里的conv3d之前没处理,待会看看能不能兼容进来
5) text_encoder不晓得要不要一起微调了,sd倒是可以一起调,但我看论文里面好像是freeze了
md,1024的lora终于可以训了,混合精度yyds,我就说怎么会突然显存爆炸,但512和1024的怎么会差这么多?
这样看来没准1024的微调也够了
import torch.cuda.amp as amp
scaler = amp.GradScaler() # 创建一个 GradScaler 对象
for epoch in range(num_epochs):
for i, bs in enumerate(dataloader):
opt.zero_grad()
# loss = model.training_step(bs, i)
# loss.backward()
# opt.step()
with amp.autocast():
loss = model.training_step(bs, i)
# 使用 GradScaler 来进行反向传播 win!!!!!
scaler.scale(loss).backward()
scaler.step(opt)
scaler.update()
本文地址: DynamiCrafter lora训练(2)
您必须 登录 才能发表评论