Glanvery/LLM-Travel

二次预训练

J-G-Y opened this issue · 4 comments

J-G-Y commented

师兄您好,未来的小师弟向您请教一波。
image

和您请教这个二次预训练的逻辑是什么,我理解的是如下:
input:ABCDEFG
label: ABCDEFG(和input错一位)
也就是给模型一个让模型预测第一个token,然后给模型+第一个token,让模型预测下一个,一直到预测到为止
不知道我理解的对不对,以及代码层面上是怎么实现的呢吗,盼望回复

J-G-Y commented

补充:因为您在知乎分享中有关于一个问题的回答:
“初始化了之后,这得预训练把,也得更新这个embedding矩阵”
“是的,性价比比较高的是只把训练词表的语料训练一遍,然后做SFT”
所以跟您请教,扩充词表后的二次预训练如何实施以及可不可以不扩充词表,直接二次预训练

扩充词表主要是提高模型在中文上的编解码的效率以及中文上的能力,可以不扩充词表,直接二次预训练的,但这样的话建议在百川的基模型上面,LLaMa的模型中文的词表太少了所以要扩充中文词表,二次预训练和预训练是一样的,都是next token prediction,和你理解的一样的,代码的话可以参考LLaMa的代码,主要看forward部分,https://github.com/huggingface/transformers/blob/722e9364916e527e8d46cbd828a1516bf6aaebd6/src/transformers/models/llama/modeling_llama.py

J-G-Y commented

扩充词表主要是提高模型在中文上的编解码的效率以及中文上的能力,可以不扩充词表,直接二次预训练的,但这样的话建议在百川的基模型上面,LLaMa的模型中文的词表太少了所以要扩充中文词表,二次预训练和预训练是一样的,都是next token prediction,和你理解的一样的,代码的话可以参考LLaMa的代码,主要看forward部分,https://github.com/huggingface/transformers/blob/722e9364916e527e8d46cbd828a1516bf6aaebd6/src/transformers/models/llama/modeling_llama.py

感谢师兄回复,今朝考研努努力,明年武大做兄弟。(0.0)

加油!