deepfacelab中文网

 找回密码
 立即注册(仅限QQ邮箱)
查看: 336|回复: 18

【水贴】重训改进尝试.随记

[复制链接]

16

主题

129

帖子

1631

积分

初级丹圣

Rank: 8Rank: 8

积分
1631
 楼主| 发表于 昨天 09:50 | 显示全部楼层 |阅读模式
星级打分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:5  参与人数:1  我的评分:未评
本帖最后由 奇奇怪怪的ID 于 2024-9-23 02:32 编辑

前段时间写了个周期性自定义的重复训练代码,效果是有的,可是我始终感觉不对劲,毕竟我这个半桶水不是专业的,所以磨蹭了好些天


周期性自定义的重复训练代码:


1.周期性训练:沿着MVE原代码逻辑,根据周期提取周期内loss最高一批样本进行复训一次


2.自定义复训次数:周期内loss最高一批样本根据用户自定义的次数重复



问题出在控制台(CMD)输出的保存阶段均值,
假设用户设定周期10,自定义重复次数为10次,保存的间隔一致,


保存阶段正常输出,不开启周期复训:
{[[0.1891],[0.1760],[0.1789],[0.1909],[0.1567],[0.1687],[0.1888],[0.1628],[0.1789],[0.1689],[0.1891],[0.1760],[0.1789],[0.1909],[0.1567],[0.1687],[0.1888],[0.1628],[0.1789],[0.1689]],
[[0.1860],[0.1750],[0.1789],[0.1814],[0.1667],[0.1689],[0.1788],[0.1728],[0.1689],[0.1789],[0.1791],[0.1560],[0.1489],[0.1809],[0.1767],[0.1697],[0.1788],[0.1728],[0.1769],[0.1659]]}



那么正常的保存阶段均值为
保存时间| 迭代次数 |单次时间|SRC损失|DST损失|状态
[08:57:05][#14087135][0465ms][0.1767][0.1757][正训]

相同的时间保存阶段正常+复训输出(假定复训降幅每次0.01),开启周期复训:
{[[0.1891],[0.1760],[0.1789],[0.1909],[0.1567],[0.1687],[0.1888],[0.1628],[0.1789],[0.1689],[0.1899],[0.1799],[0.1699],[0.1599],[0.1499],[0.1399],[0.1299],[0.1199],[0.1099],[0.0999]],
[[0.1860],[0.1750],[0.1789],[0.1814],[0.1667],[0.1689],[0.1788],[0.1728],[0.1689],[0.1789],[0.1760],[0.1689],[0.1589],[0.1489],[0.1389],[0.1289],[0.1189],[0.1089],[0.0989],[0.0889]]}


那么正常+复训的保存阶段均值为
保存时间| 迭代次数 |单次时间|SRC损失|DST损失|状态
[08:57:05][#14087135][0465ms][0.1599][0.1544][正训]

我就是觉得影响观察的准确性下降,同时还考虑到两点
1.如果素材存在错图错特征(噪声或异常值),很容易影响模型的泛化能力,通常这种素材loss是最高的,过多的重复训练可能会使模型对这些不理想的特征过于敏感
2.早停策略,如果素材的重训效果不再提升,训练应该被停止,可能因为各种异常因素导致的,也可能最终平均损失值已经是最低了训练效果已经到了极限





基于以上考虑,我做了如下改动


将排序高loss的周期性的代码删掉,设置动态阈值(每次自动保存都会重新计算)动态阈值=上一保存阶段dst和src的均值-0.005,复训次数还是用户自定义,判断每一次正常迭代的dst_losssrc_loss大于阈值并且还没达到用户自定义次数时才进入复训


   1.设置模型参数mean_loss用来记录,每次保存模型时,将保存阶段的dst_loss和src_loss计算平均值写入到模型参数mean_loss,用于动态阈值
   2.当dst_loss和src_loss均小于阈值或达到用户自定义次数时跳出复训回到正常提取素材训练





同样的,复训次数只代表上限,当进入复训的批次dst_losssrc_loss都小于阈值达到用户自定义次数时同样会退出复训
image.png image.png



目前下降稳定,曲线也平均许多,希望能够达到预期............


ps:刚写好还没长时间观察过

评分

参与人数 2贡献 +2 收起 理由
燕翎风 + 1 十分给力!
zhengma96 + 1 非常牛!

查看全部评分

回复

使用道具 举报

16

主题

129

帖子

1631

积分

初级丹圣

Rank: 8Rank: 8

积分
1631
 楼主| 发表于 昨天 09:54 | 显示全部楼层
回回发出来排版、字号、颜色都变了,是哪里有问题
回复 支持 反对

使用道具 举报

38

主题

725

帖子

4034

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
4034

万事如意节日勋章

发表于 昨天 09:55 | 显示全部楼层
2位辛苦了
回复

使用道具 举报

16

主题

129

帖子

1631

积分

初级丹圣

Rank: 8Rank: 8

积分
1631
 楼主| 发表于 昨天 09:56 | 显示全部楼层

我纯纯是爱好了,这玩意儿我自己也在练
回复 支持 反对

使用道具 举报

2

主题

35

帖子

363

积分

初级丹师

Rank: 3Rank: 3

积分
363
发表于 昨天 11:46 | 显示全部楼层
请问下。这是什,我看了半天没看明白
回复 支持 反对

使用道具 举报

5

主题

27

帖子

456

积分

初级丹师

Rank: 3Rank: 3

积分
456
发表于 昨天 13:55 | 显示全部楼层
感谢为爱发电的两位大佬分享,有你们df会越来越强大
回复 支持 反对

使用道具 举报

1

主题

60

帖子

1397

积分

初级丹圣

Rank: 8Rank: 8

积分
1397

万事如意节日勋章节日欢乐之星勋章

发表于 昨天 20:45 | 显示全部楼层
本帖最后由 zhengma96 于 2024-9-22 20:47 编辑

DFL1120原版的代码增强版 高LOSS周期训练 显示文件名 显示LOSS
https://dfldata.cc/forum.php?mod=viewthread&tid=19466
(出处: deepfacelab中文网)

用上面帖主0918版跑了几万迭代,默认“自动权重20,训练次数20”,确实是削峰降高点,而且是肉眼可见的降,但有个小小的问题,就是dst杂图降的正常,但src单人到最后几次重复训练会稍微抖动或升高loss,降低次数应该可行,但dst降得幅度可能不如之前效果好,既要又要有点不要脸,哈哈。可能还得以观后效。

期待楼主的的代码,看看能能否解决我这个小小问题。
回复 支持 反对

使用道具 举报

16

主题

129

帖子

1631

积分

初级丹圣

Rank: 8Rank: 8

积分
1631
 楼主| 发表于 昨天 23:11 | 显示全部楼层
dd316316 发表于 2024-9-22 11:46
请问下。这是什,我看了半天没看明白

就是模型训练方法的改进,从常规训练,到周期提取高Loss批次训练,再到周期提取高Loss批次自定义训练次数,现在是将高于保存时平均值的批次进入重复训练
回复 支持 反对

使用道具 举报

16

主题

129

帖子

1631

积分

初级丹圣

Rank: 8Rank: 8

积分
1631
 楼主| 发表于 昨天 23:24 | 显示全部楼层
zhengma96 发表于 2024-9-22 20:45
DFL1120原版的代码增强版 高LOSS周期训练 显示文件名 显示LOSS
https://dfldata.cc/forum.php?mod=viewthre ...

给你个思路,其实你说的问题是正常的,每一次迭代提取的样本是不一样的,loss也不一样,高loss训练代表进入复训的批次开始也是从高训练到低,所以可以参照这里

保存阶段正常输出,不开启周期复训:
{[[0.1891],[0.1760],[0.1789],[0.1909],[0.1567],[0.1687],[0.1888],[0.1628],[0.1789],[0.1689],[0.1891],[0.1760],[0.1789],[0.1909],[0.1567],[0.1687],[0.1888],[0.1628],[0.1789],[0.1689]],
[[0.1860],[0.1750],[0.1789],[0.1814],[0.1667],[0.1689],[0.1788],[0.1728],[0.1689],[0.1789],[0.1791],[0.1560],[0.1489],[0.1809],[0.1767],[0.1697],[0.1788],[0.1728],[0.1769],[0.1659]]}



那么正常的保存阶段均值为
保存时间| 迭代次数 |单次时间|SRC损失|DST损失|状态
[08:57:05][#14087135][0465ms][0.1767][0.1757][正训]

相同的时间保存阶段正常+复训输出(假定复训降幅每次0.01),开启周期复训:
{[[0.1891],[0.1760],[0.1789],[0.1909],[0.1567],[0.1687],[0.1888],[0.1628],[0.1789],[0.1689],[0.1899],[0.1799],[0.1699],[0.1599],[0.1499],[0.1399],[0.1299],[0.1199],[0.1099],[0.0999]],
[[0.1860],[0.1750],[0.1789],[0.1814],[0.1667],[0.1689],[0.1788],[0.1728],[0.1689],[0.1789],[0.1760],[0.1689],[0.1589],[0.1489],[0.1389],[0.1289],[0.1189],[0.1089],[0.0989],[0.0889]]}


那么正常+复训的保存阶段均值为
保存时间| 迭代次数 |单次时间|SRC损失|DST损失|状态
[08:57:05][#14087135][0465ms][0.1599][0.1544][正训]


像你说的src有时会抖动,会升高,其实是因为之前正常的训练方法导致每一批次的loss不平均(每一张素材loss是不一样的,之前只是每张素材训练一遍,模型相对素材的损失也不一样),当某一个保存阶段段内出现了更多比上一次保存阶段样本loss高的批次,那么就会反弹,只要持续训练下去,后面就不会出现了,不知道有没有说明白,总结就是wtxx888那边的代码是有效的,逻辑思路是我俩碰撞沟通得来的,我只是觉得不够平均才会有这个帖的出现
回复 支持 反对

使用道具 举报

11

主题

2642

帖子

1万

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
14257

真我风采勋章万事如意节日勋章

发表于 昨天 23:48 | 显示全部楼层
本帖最后由 wtxx8888 于 2024-9-22 23:57 编辑
奇奇怪怪的ID 发表于 2024-9-22 23:24
给你个思路,其实你说的问题是正常的,每一次迭代提取的样本是不一样的,loss也不一样,高loss训练代表进 ...

你这是打算,设计的更智能点呗?
我这几天的曲线,上限快速,稳定,持续的下降中。。。
由于上限占用了大量迭代数,下限几乎看不出来动过。
下限比较低了,最低的0.12,没什么可降的了。
LOSS.png

回复 支持 反对

使用道具 举报

QQ|Archiver|手机版|deepfacelab中文网 |网站地图

GMT+8, 2024-9-23 18:24 , Processed in 0.109089 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表