-
Notifications
You must be signed in to change notification settings - Fork 5k
添加DPO协同训练,提升输出内容的稳定性,增加部分生成参数的webui控制 #457
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@WatchTower-Liu 我准备合并你的提交, |
@RVC-Boss top_k=20, top_p=0.6, temperature=0.6这些参数是测试过的,可以直接用 |
@WatchTower-Liu 请问中文训练数据比较多的时候,比如3小时, top_3_acc_step什么范围是比较正常的,有没有些经验数据。 |
@jupinter 你好,这里的GPT预测的是一个量化音素向量token,而准确率是完全匹配的一个指标,事实上微小的语气差异主观上可能察觉不到太大变化,但是客观指标会差的比较大,所以这个指标本身参考意义不大。 |
@WatchTower-Liu 好的,非常感谢!!! |
@WatchTower-Liu LLM训练DPO的时候,需要一个好回答,和一个坏回答。 这里需要设置嘛?还是类似online的DPO的设计? |
@WuNein reject是自动生成的,为了保证训练效率这一过程暂时使用规则化生成处理,后期会添加其他模式。 |
@WatchTower-Liu 你好 现在reference_polic为空的情况下 dpo loss等于最大化正确答案的似然 最小化错误答案的似然 但目前错误答案中仍然有一部分其实是正确的(没有被删除和重复的部分) 想问下是否需要完全的保证错误答案全部错误 以免最小化了正确的似然? |
@WelkinYang 理想情况下应该使用十分精致的数据,但是协同训练时,这一问题被sft的loss弱化了,理论上影响不大。之后会加入一个后期标准的DPO。 |
添加DPO协同训练,提升输出内容的稳定性,增加部分生成参数的webui控制
请问这个场景中,标准dpo如何构造偏好数据对的坏数据?可以对于同一句文字,用当前模型生成内容作为坏,用真实wav作为好吗 |
添加DPO协同训练,提升输出内容的稳定性,增加部分生成参数的webui控制
为训练部分添加的DPO协同训练,相关修改见:
GPT_SoVITS\AR\models\t2s_model.py
GPT_SoVITS\AR\models\utils.py
这两个文件,修改后的模型已经在最新的代码上测试完毕。
DPO注意事项:
DPO会将训练显存翻倍,建议batch_size减半,可在文档中添加相关说明。
生成部分添加:top_k, top_p, temperature的控制,可以方便控制稳定的输出(降低这些参数),如图:

以上功能均已测试通过
**DPO特性说明:**DPO为一种偏好对齐算法,可以有效缓解生成时模型所具有的幻觉,输出不友好等问题,为该项目添加该功能的目的在于缓解生成的文本内容丢失,优化克隆人物的语气。
**生成参数说明:**将部分采样参数暴露到webui界面,方便生成时调整,可以通过降低温度,降低top_p,top_k 提升模型输出内容的一致性。