2.5 Model Fine-Tuned Training
本小节主要介绍模型微调
Last updated
本小节主要介绍模型微调
Last updated
在模型微调训练过程中,以下术语是非常重要的,它们定义了训练的参数和过程:
Batch Size 是指在一次训练迭代中,模型处理的样本数量。数据集被分成多个批次(batches),每个批次包含一定数量的样本,这个数量就是 batch size。Batch size 的大小会影响训练的速度和模型的性能。
小 Batch Size:可以使模型更频繁地更新参数,但每次更新的计算可能更不稳定,训练时间更长。
大 Batch Size:每次更新的计算更稳定,但需要更多的内存和计算资源。
选择合适的 batch size 需要权衡计算资源和训练效果,通常会进行实验来找到最佳的 batch size。
DPO Batch Size 通常指的是数据并行优化(Data-Parallel Optimization)中的 batch size。数据并行优化是一种将数据分配到多个设备(如 GPU)上并行计算的技术,每个设备处理一个子集(mini-batch)的数据,然后将结果合并。
DPO Batch Size:指的是每个设备上处理的 mini-batch 的大小。
全局 Batch Size:是所有设备上的 mini-batch 大小的总和。
例如,如果有 4 个 GPU,每个 GPU 的 batch size 是 32,那么全局 batch size 就是 4 * 32 = 128。
Epochs 是指整个数据集被完整地通过模型一次的过程。在一个 epoch 中,所有的样本都会被用来更新模型的参数。通常,训练需要多个 epochs,以便模型能够充分学习数据中的特征。
1 Epoch:表示整个数据集被完整地传递通过模型一次。
多次 Epochs:表示数据集被传递通过模型多次,每次称为一个 epoch。
选择合适的 epochs 数量也是需要权衡的,过多的 epochs 可能导致过拟合(模型在训练数据上表现很好,但在测试数据上表现不好),过少的 epochs 可能导致欠拟合(模型没有充分学习数据中的特征)。
根据以上基础概念定义,我们可以根据现有的GPU 设备的性能参数进行调整。
首先设置batch_size,sovits训练建议batch_size设置为显存的一半以下,高了会爆显存。bs并不是越高越快!batch_size也需要根据数据集大小调整,也并不是严格按照显存数一半来设置,比如6g显存需要设置为1。如果爆显存就调低。当显卡3D占用100%的时候就是bs太高了,使用到了共享显存,速度会慢好几倍。
以下是切片长度为10s时实测的不同显存的sovits训练最大batch_size,可以对照这个设置。如果切片更长、数据集更大的话要适当减少。
dpo大幅提升了模型的效果,几乎不会吞字和复读,能够推理的字数也翻了几倍,但同时训练时显存占用多了2倍多,训练速度慢了4倍,12g以下显卡无法训练。数据集质量要求也高了很多。如果数据集有杂音,有混响,音质差,不校对标注,那么会有负面效果。
如果你的显卡大于12g,且数据集质量较好,且愿意等待漫长的训练时间,那么可以开启dpo训练。否则请不要开启。下面是切片长度为10s时实测的不同显存的gpt训练最大batch_size。如果切片更长、数据集更大的话要适当减少。
接着设置轮数,如果你的素材中有底噪、混响、喷麦、响度不统一、电流声、口水音、口齿不清、音质差等情况那么请不要调高SoVITS模型轮数,否则会有负面效果。GPT模型轮数一般情况下不高于20,建议设置10。然后先点开启SoVITS训练,训练完后再点开启GPT训练,不可以一起训练(除非你有两张卡)!如果中途中断了,直接再点开始训练就好了,会从最近的保存点开始训练。
我自己训练的时候的配置如下:
第一阶段训练,我们可以看到加载了2个So-VIST 模型,按照设定的论述Epoch 进行训练
训练完成之后,文件保存在了
第一阶段训练,我们可以看到加载了GPT 模型,按照设定的论述Epoch 进行训练,训练完成之后文件被保存。
至此,模型微调训练完成。
你可能会看见有人会说训练了几百轮,几千轮的(几万轮那就是搞错了轮数和步数)。但高轮数并不就是好。如果要训练高轮数请先保证数据集质量极好,标注全都经过手动校对,时长至少超过1小时才有必要拉高轮数。否则默认的十几轮效果已经很好了。
请先保证质量!音频千万不能有杂音,要口齿清晰,响度统一,没有混响,每句话尽量完整,全部手动校对标注。30分钟内有明显提升,不建议再增加数据集长度
GPT-SoVITS可以开启tensorboard可以辅助训练过程之中效果的检验。TensorBoard 是一个用于可视化机器学习实验的工具,能够帮助你在训练过程中监控模型的性能、查看训练指标、可视化模型结构等。以下是如何使用 TensorBoard 辅助训练检验