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()
您必须 登录 才能发表评论