Skip to content
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

训练参数设置问题 #37

Open
rainskyfyy opened this issue Jul 11, 2024 · 5 comments
Open

训练参数设置问题 #37

rainskyfyy opened this issue Jul 11, 2024 · 5 comments

Comments

@rainskyfyy
Copy link

rainskyfyy commented Jul 11, 2024

关于训练参数有几个问题请教一下:

  1. max_tokens设置的依据是什么,这个参数有下限要求吗?
  2. 微调训练阶段是否有对比过不同建模单元(ltr、bpe)在中文方言语境中的效果差异?
  3. 如果我训练数据都是30s以内的短音频,或者我后期想直接做成流式推理,可以切分成chunk,推理代码应该如何调整?
@rainskyfyy
Copy link
Author

补充一个提问:训练中正常情况下loss一般稳定在什么量级左右?

@TTTdas
Copy link
Contributor

TTTdas commented Jul 15, 2024

关于训练参数有几个问题请教一下:

  1. max_tokens设置的依据是什么,这个参数有下限要求吗?
  2. 微调训练阶段是否有对比过不同建模单元(ltr、bpe)在中文方言语境中的效果差异?
  3. 如果我训练数据都是30s以内的短音频,或者我后期想直接做成流式推理,可以切分成chunk,推理代码应该如何调整?
  1. max_tokens设置其实就是batch_size,只不过它指定的是一个batch内token的数量,这个使用和fairseq的设置是一样的,您也可以通过指定batch_size的方式来设置。下限是不要低于10000
  2. 没有利用bpe建模来做,对于中文方言微调用的都是char建模
  3. 30s以内的音频可以直接使用的。如果您想切分chunk的话,需要在infer.py里进行调整。但是需要您先进行流式微调才行,否则用非流式模型去做流式推理,效果会比较差
  4. 抱歉没太理解loss稳定是指什么?train loss的话可能根据数据集有所不同,一般来说应该可以下降到40左右或者更低

@rainskyfyy
Copy link
Author

感谢您的回复,这对我非常有帮助!
还有几点想确认一下:

  1. 流式微调需要的改动大吗,能否大概评估一下?
  2. 我用4张16G的V100进行多卡训练,参数设置如下:
    distributed_world_size: 4
    update_freq: [1]
    max_tokens: 15000
    运行中途会报OOM错误,请问这个设置是有问题吗。(max_tokens应该是单卡上一个batch的token数,所以实际batch size是max_tokens*4?上述不低于10000的限制是否也适用于多卡的情况?)
  3. 预训练模型微调使用的字典编号应该是从4开始的吧,因为前面插入了bos、pad、eos和unk,但是跑decode.sh脚本的时候这个并没有出现问题,是因为编号重排了吧?

@TTTdas
Copy link
Contributor

TTTdas commented Jul 15, 2024

感谢您的回复,这对我非常有帮助! 还有几点想确认一下:

  1. 流式微调需要的改动大吗,能否大概评估一下?
  2. 我用4张16G的V100进行多卡训练,参数设置如下:
    distributed_world_size: 4
    update_freq: [1]
    max_tokens: 15000
    运行中途会报OOM错误,请问这个设置是有问题吗。(max_tokens应该是单卡上一个batch的token数,所以实际batch size是max_tokens*4?上述不低于10000的限制是否也适用于多卡的情况?)
  3. 预训练模型微调使用的字典编号应该是从4开始的吧,因为前面插入了bos、pad、eos和unk,但是跑decode.sh脚本的时候这个并没有出现问题,是因为编号重排了吧?
  1. 改动相对还是比较大的,如果您不着急的话可以等后面我们也会把流式微调的代码放出来
  2. OOM报错里还需要的显存大吗?如果不大的话您可以尝试再降低max_tokens,降低到10000以下只要训练没问题也是可以的。根据这个设置,实际训练中参与反传的batch确实是4的,不过这个不会在单卡上4。
  3. 微调用的字典里的编号是没有任何作用的(全给1都可以),在代码里只会读进第一列的内容,然后添加4个label重新编号,给出来的字典例子是为了和wenet finetune的对比,抱歉给您带来了困扰。

@rainskyfyy
Copy link
Author

嗯嗯,目前基本没有啥问题了。期待后续开源内容^_^!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants