ictnlp / LLaMA-Omni

LLaMA-Omni is a low-latency and high-quality end-to-end speech interaction model built upon Llama-3.1-8B-Instruct, aiming to achieve speech capabilities at the GPT-4o level.
https://arxiv.org/abs/2409.06666
Apache License 2.0
2.62k stars 177 forks source link

模型训练loss变化是什么样的? #50

Open shihuai opened 1 month ago

shihuai commented 1 month ago

感谢你们把这么好的工作开源。最近我们的尝试在复现模型的效果,模型一阶段训练loss收敛还可以,但模型二阶段训练过程中loss从12下降到3.0左右,就无法在降低了。所以想问一下,你们当时训练的时候,两个训练阶段的loss是如何变化的,训练过程中有什么需要注意的地方吗?

satheeshkola-532 commented 1 month ago

hi @shihuai , could you please share the training scripts.. it would be very helpful for us to reproduce the model for indian languages? my mail id: ksatheesh@hitloop.it

enbiwudi commented 1 month ago

一样,loss快速从8.x降到3.x 效果还没评估 看论文似乎也没什么特别的trick,我想后续可能试试把generator部分改成自回归模型和CEloss或许会好一点?但难解决文本+音频流式推理问题

enbiwudi commented 4 weeks ago

一样,loss快速从8.x降到3.x 效果还没评估 看论文似乎也没什么特别的trick,我想后续可能试试把generator部分改成自回归模型和CEloss或许会好一点?但难解决文本+音频流式推理问题

找到bug了,是我的target_units设置有问题,默认用0来pad了,应该用-100

shihuai commented 4 weeks ago

一样,loss快速从8.x降到3.x 效果还没评估 看论文似乎也没什么特别的trick,我想后续可能试试把generator部分改成自回归模型和CEloss或许会好一点?但难解决文本+音频流式推理问题

找到bug了,是我的target_units设置有问题,默认用0来pad了,应该用-100 我们目前也是这样设置的,但收敛效果还是不好。

enbiwudi commented 4 weeks ago

又找到bug了 源码里generator的llama是用的LlamaDecoderLayer,但不知道是不是我的transformers版本问题,attention mask维度不匹配。看了一下llama源码,在LlamaModel里会先做attention mask的升维。所以我之前直接用的LlamaModel,输入input_embedding=hidden_states这么搞的。但是其实LlamaModel里会对LlamaDecoderLayer出来的hidden_states做一次norm操作,而llama omni源码用的hidden_states是未经过norm的。可能是这里的区别。我目前loss从18在逐渐收敛,半个epoch到6.x了,看起来还在收敛。 等我有结论再同步hhhh 有兴趣也可以邮箱交流一下:enbiwudi123@gmail.com

enbiwudi commented 4 weeks ago

还是不行,推理出来基本都是blank,好怪

shihuai commented 4 weeks ago

又找到bug了 源码里generator的llama是用的LlamaDecoderLayer,但不知道是不是我的transformers版本问题,attention mask维度不匹配。看了一下llama源码,在LlamaModel里会先做attention mask的升维。所以我之前直接用的LlamaModel,输入input_embedding=hidden_states这么搞的。但是其实LlamaModel里会对LlamaDecoderLayer出来的hidden_states做一次norm操作,而llama omni源码用的hidden_states是未经过norm的。可能是这里的区别。我目前loss从18在逐渐收敛,半个epoch到6.x了,看起来还在收敛。 等我有结论再同步hhhh 有兴趣也可以邮箱交流一下:enbiwudi123@gmail.com

你说的这些情况我们也遇到过,后面是通过手动将attention mask扩展到4维。不过我们还没有做过推理,情况应该也会很差。

enbiwudi commented 4 weeks ago

又找到bug了 源码里generator的llama是用的LlamaDecoderLayer,但不知道是不是我的transformers版本问题,attention mask维度不匹配。看了一下llama源码,在LlamaModel里会先做attention mask的升维。所以我之前直接用的LlamaModel,输入input_embedding=hidden_states这么搞的。但是其实LlamaModel里会对LlamaDecoderLayer出来的hidden_states做一次norm操作,而llama omni源码用的hidden_states是未经过norm的。可能是这里的区别。我目前loss从18在逐渐收敛,半个epoch到6.x了,看起来还在收敛。 等我有结论再同步hhhh 有兴趣也可以邮箱交流一下:enbiwudi123@gmail.com

你说的这些情况我们也遇到过,后面是通过手动将attention mask扩展到4维。不过我们还没有做过推理,情况应该也会很差。

ctc_upsample_factort,针对你的数据集调小点试一下

shihuai commented 4 weeks ago

这部分也是调整过的,现在我们音频离散化的模型1s是50个token,ctc_upsample_factor现在减少到了12,loss会比之前低,但降了一点后基本就是在震荡了。

shihuai commented 4 weeks ago

现在不知道是不是受模型初始化部分影响,后面再试着改一下这部分。

Minami-su commented 2 weeks ago

我目前也在复现这篇论文的模型架构和训练但是目前遇到一定的问题,能否大家建立一个微信群讨论一下?

shihuai commented 2 weeks ago

下面的issue已经有人拉群了。 另外,目前尝试使用短音频、训练步数多一些,是可以达到音频合成效果的。

4ndroidev commented 2 weeks ago

下面的issue已经有人拉群了。 另外,目前尝试使用短音频、训练步数多一些,是可以达到音频合成效果的。

感谢分享经验,请教一下:

  1. 你们是按照语音问答方式构造数据集吗?还是说改造 ASR 数据集来训练 ctc loss?(由于难以构造问答语音,我们采用了后者验证可行性😮‍💨,想咨询下你们的经验)

  2. 我们使用 150 万 ASR 数据集,batch size 24,训练 3 轮,训练 ctc loss 也遇到一样的情况,ctc loss 从 15 快速降到 3 ,最低降到 2.2,合成的音频有一点点效果,但模糊不清。 能否分享下,你们的 loss 收敛到多少,使用多大规模的数据集,训练了多少轮?🙏

wntg commented 1 week ago

我在100条数据上训练,收敛到2,生成的语音速度很快,中间有不清楚的地方。想问下你们能在训练集上拟合吗

tianke0711 commented 1 week ago

下面的issue已经有人拉群了。 另外,目前尝试使用短音频、训练步数多一些,是可以达到音频合成效果的。

感谢分享经验,请教一下:

  1. 你们是按照语音问答方式构造数据集吗?还是说改造 ASR 数据集来训练 ctc loss?(由于难以构造问答语音,我们采用了后者验证可行性😮‍💨,想咨询下你们的经验)
  2. 我们使用 150 万 ASR 数据集,batch size 24,训练 3 轮,训练 ctc loss 也遇到一样的情况,ctc loss 从 15 快速降到 3 ,最低降到 2.2,合成的音频有一点点效果,但模糊不清。 能否分享下,你们的 loss 收敛到多少,使用多大规模的数据集,训练了多少轮?🙏

可以进这个群讨论,不少人复现成功:https://github.com/ictnlp/LLaMA-Omni/issues/46

EdisonZhu33 commented 1 week ago

感谢你们把这么好的工作开源。最近我们的尝试在复现模型的效果,模型一阶段训练loss收敛还可以,但模型二阶段训练过程中loss从12下降到3.0左右,就无法在降低了。所以想问一下,你们当时训练的时候,两个训练阶段的loss是如何变化的,训练过程中有什么需要注意的地方吗?

请问第一阶段你的loss到多少了?我一直无法复现第一阶段的效果