deepfacelab中文网

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

deepfacelab框架迁移为pytorch的问题

[复制链接]

23

主题

160

帖子

1064

积分

初级丹圣

Rank: 8Rank: 8

积分
1064
 楼主| 发表于 昨天 22:35 | 显示全部楼层 |阅读模式
星级打分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN  参与人数:0  我的评分:未评
本帖最后由 day270010678 于 2026-1-25 22:41 编辑

我现在已经完全迁移完的项目是,提取脸部,遮罩训练,但是到了遮罩预训练阶段,我发现一个问题,就是deepfacelab的MPSharedList机制,按照我的初期设想是不重构多进程框架Subprocessor,而是在这个框架下重构,但是现在我发现一个问题,就是在数据集PackedFaceset.py中 我给返回的是PyTorch数据集对象,但是在SampleLoader.py中



  1.                 samples[sample_type] = MPSharedList(result)
  2.         elif    sample_type == SampleType.FACE_TEMPORAL_SORTED:
  3.                 result = SampleLoader.load (SampleType.FACE, samples_path)
  4.                 result = SampleLoader.upgradeToFaceTemporalSortedSamples(result)
  5.                 samples[sample_type] = MPSharedList(result)
复制代码
他按照原始的框架是调用列表,但是我这里返回的PyTorch数据集对象,这就导致一个问题,我在pytorch一致性的准则下,有两种解决办法,这里直接把pytorch转换为列表,另外一种是修改MPSharedList,让他支持pytorch对象,这是最中性的修改,但是我突然发现 似乎最完美的方法是PyTorch的DataLoader机制代替MPSharedList机制,这就涉及一个项目的重构了,这简直是重写deepfacelab啊,需要把DeepFaceLab的Subprocessor架构转为PyTorch DataLoader架构, 形成真正的pytorch一致性。但是这是个大项目,按照我拖拖拉拉的偶尔写写停停的时间,现在是假如不重构,我觉得没意思,但是重构吧,恐怕要很久,强迫症犯了。 不知道怎么好,现在都丫的因为这个问题,想不修改了,直接到这里就行了或者简单的重构后面的训练,合成,就不弄预训练了,这该死的完美主义。弄得都不想写了。


在这里我必须负责任的说一句,deepfacelab由于TensorFlow框架的缘故,导致我们很多性能不能发挥,所以迁移到pytorch是必须的,就简单的提取脸部来说,我测试,用原始的TensorFlow2.7提取162张图片,质量100的情况下耗费时间是二分钟多一点, 假如把ensorFlow升级到2.10+python3.10的话,耗时是 1分20秒, 假如框架迁移到pytorch后,耗时是40秒,这还是没有完全重构的情况下的数据对比, 我遮罩训练是260ms一次迭代。

写到这里 我来说说 显卡4000和5000,这个不要过多听别人吹牛,现有的不管那个框架都支持,只是性能发挥的问题,那问题来了,假如我迁移到pytorch后能不能完全发挥性能?答案是肯定的,因为现在最高的pytorch2.91也不能发挥完全性能,至于理由,懂的都懂,真要完全发挥必须用他的测试版加cu30或许好点。
回复

使用道具 举报

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

GMT+8, 2026-1-26 09:57 , Processed in 0.098829 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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