Open Anthony-Sun-S opened 5 months ago
save_steps
参数可以设置保存的步数truncation=True
为truncation='longest_first'
- 修改
save_steps
参数可以设置保存的步数- 可能是有个别样例会超过最长的max_len,可以修改https://github.com/FlagOpen/FlagEmbedding/blob/53cfac4a50ac0e023b2f8d19b10667c9c210fa41/FlagEmbedding/reranker/data.py#L40 的
truncation=True
为truncation='longest_first'
- 模型合并指的是LLM-reranker合并吗,LLM-reranker的合并是将lora的参数合并到原始的模型之上
1.可以自己修改保存规则吗
2.超长的不到总训练集的十分之一,但是每一个step都会至少报错一遍,设置成了'longest_first'也没有效果
3.模型合并我是用的LM_cocktail合并了原始的reranker-m3和我微调之后的reranker-m3,目前是还没有用数据合并,今天会尝试一下,用的代码是示例那种,encoder这个合并的随机性就非常大,同样的代码跑几遍的指标就差距还蛮大的,有的会非常好,有的就不太好;reranker合并之后比较稳定,指标也不错,第一次接触模型合并,想了解一下是合并的方法是什么,如果是非bge的模型可以用LM_cocktail进行合并吗?谢谢您
model = mix_models( model_names_or_paths=["BAAI_bge-reranker-v2-m3", "reranker/output/0412"], model_type='encoder', weights=[0.4, 0.6], output_path="model/mixed_reranker")
save_steps
参数就可以了qry_inputs = self.tokenizer.encode(qry_encoding,
truncation=True,
max_length=self.args.max_len * 3 // 4,
add_special_tokens=False)
doc_inputs = self.tokenizer.encode(doc_encoding,
truncation=True,
max_length=self.args.max_len,
add_special_tokens=False)
item = self.tokenizer.prepare_for_model(
qry_inputs,
doc_inputs,
truncation='only_second',
max_length=self.args.max_len,
)
- 在训练的时候添加
save_steps
参数就可以了- 可以修改这部分代码
qry_inputs = self.tokenizer.encode(qry_encoding, truncation=True, max_length=self.args.max_len * 3 // 4, add_special_tokens=False) doc_inputs = self.tokenizer.encode(doc_encoding, truncation=True, max_length=self.args.max_len, add_special_tokens=False) item = self.tokenizer.prepare_for_model( qry_inputs, doc_inputs, truncation='only_second', max_length=self.args.max_len, )
- 模型合并可以参考论文LM-Cocktail
在第二个问题上,我用最新的代码,是longest first也是同样还是会出现not returned的同样问题
- 在训练的时候添加
save_steps
参数就可以了- 可以修改这部分代码
qry_inputs = self.tokenizer.encode(qry_encoding, truncation=True, max_length=self.args.max_len * 3 // 4, add_special_tokens=False) doc_inputs = self.tokenizer.encode(doc_encoding, truncation=True, max_length=self.args.max_len, add_special_tokens=False) item = self.tokenizer.prepare_for_model( qry_inputs, doc_inputs, truncation='only_second', max_length=self.args.max_len, )
- 模型合并可以参考论文LM-Cocktail
在第二个问题上,我用最新的代码,是longest first也是同样还是会出现not returned的同样问题
修改之后也没有用,我目前只有是加大了长度才解决
- 在训练的时候添加
save_steps
参数就可以了- 可以修改这部分代码
qry_inputs = self.tokenizer.encode(qry_encoding, truncation=True, max_length=self.args.max_len * 3 // 4, add_special_tokens=False) doc_inputs = self.tokenizer.encode(doc_encoding, truncation=True, max_length=self.args.max_len, add_special_tokens=False) item = self.tokenizer.prepare_for_model( qry_inputs, doc_inputs, truncation='only_second', max_length=self.args.max_len, )
- 模型合并可以参考论文LM-Cocktail
在第二个问题上,我用最新的代码,是longest first也是同样还是会出现not returned的同样问题
修改之后也没有用,我目前只有是加大了长度才解决
你的reranker-m3测出来召回率有正提升不,我用了reranker以后反而掉了
你的reranker-m3测出来召回率有正提升不,我用了reranker以后反而掉了
你试一下用LM_Cocktail再做一次模型融合,我训练完也是掉了,然后融合之后提升蛮大的
你的reranker-m3测出来召回率有正提升不,我用了reranker以后反而掉了
你试一下用LM_Cocktail再做一次模型融合,我训练完也是掉了,然后融合之后提升蛮大的
我embedding用的bge-m3的,目前感觉有提升,但是好像还是没超过embedding的分数的
我embedding用的bge-m3的,目前感觉有提升,但是好像还是没超过embedding的分数的
我是微调的reranker-m3,先embedding再reranker的话我这边不微调也有提升
我embedding用的bge-m3的,目前感觉有提升,但是好像还是没超过embedding的分数的
我是微调的reranker-m3,先embedding再reranker的话我这边不微调也有提升
没有微调embedding模型只微调了reranker模型是吗
没有微调embedding模型只微调了reranker模型是吗
对,embedding是还没来得及微调,单纯使用原本的bge-m3和reranker-m3也有提升的效果,embedding用的sentence_transformer没有用那个混合分数的,整体指标也是有再提升的
没有微调embedding模型只微调了reranker模型是吗
对,embedding是还没来得及微调,单纯使用原本的bge-m3和reranker-m3也有提升的效果,embedding用的sentence_transformer没有用那个混合分数的,整体指标也是有再提升的
好像就是embedding微调了以后超不过embedding提升后的分数我看别人也说,我还在试
好像就是embedding微调了以后超不过embedding提升后的分数我看别人也说,我还在试
正好今天差不多reranker就训练完了,我也是一下训练embedding看看
请问你是加大了max_len参数,还是修改了tokenizer的max_length?我这边max_len变大了,会报下面的错误 The expanded size of the tensor (1024) must match the existing size (514) at non-singleton dimension 1. Target sizes: [8, 1024]. Tensor sizes: [1, 514]
好像就是embedding微调了以后超不过embedding提升后的分数我看别人也说,我还在试
正好今天差不多reranker就训练完了,我也是一下训练embedding看看
你试了下能超过微调后的embedding的召回分数吗
- 在训练的时候添加
save_steps
参数就可以了- 可以修改这部分代码
qry_inputs = self.tokenizer.encode(qry_encoding, truncation=True, max_length=self.args.max_len * 3 // 4, add_special_tokens=False) doc_inputs = self.tokenizer.encode(doc_encoding, truncation=True, max_length=self.args.max_len, add_special_tokens=False) item = self.tokenizer.prepare_for_model( qry_inputs, doc_inputs, truncation='only_second', max_length=self.args.max_len, )
- 模型合并可以参考论文LM-Cocktail
在第二个问题上,我用最新的代码,是longest first也是同样还是会出现not returned的同样问题
修改之后也没有用,我目前只有是加大了长度才解决
你的reranker-m3测出来召回率有正提升不,我用了reranker以后反而掉了
你好,想请问一下微调之后的reranker召回率,你是怎么做测试的?
请问你是加大了max_len参数,还是修改了tokenizer的max_length?我这边max_len变大了,会报下面的错误 The expanded size of the tensor (1024) must match the existing size (514) at non-singleton dimension 1. Target sizes: [8, 1024]. Tensor sizes: [1, 514]
用bge-reranker-base/large,貌似最长只支持512长度,想用更长就要用LLM-rerank了,支持8k
您好, 1.我在训练reranker-m3的时候发现模型是按照每500个step自动保存的,我想修改保存的步数或者增加判断条件进行保存应该在哪里修改呢? 2.在训练的时候reranker-m3和bge-reranker-large都会出现一个报错
Be aware, overflowing tokens are not returned for the setting you have chosen, i.e. sequence pairs with the 'longest_first' truncation strategy. So the returned list will always be empty even if some tokens have been removed.
这个是不管我max_len怎么设置都会出现,貌似是pos的list有几个样本就会报错几次,但是我的正样本和query其实都不是很长,加起来也不会超过max_len顺便像问一下模型合并的原理,我发现我微调之后的模型和通用模型合并之后指标上还能有提升,但是合并的随机性特别强