FlagEmbedding
FlagEmbedding copied to clipboard
可以在领域数据集上,做无监督的增量微调吗?
暂时没法在自己的数据集上构造query和正负样本数据。请问只做无监督微调能否让模型更适应领域数据?如果可以,能否提供相应的代码示例呢?(看到的教程都是有监督微调的)
没有监督数据,建议使用大语言模型构造数据,可以参考https://docs.llamaindex.ai/en/stable/examples/finetuning/embeddings/finetune_embedding.html。只做无监督微调难以让模型更适应领域数据。
没有监督数据,建议使用大语言模型构造数据,可以参考https://docs.llamaindex.ai/en/stable/examples/finetuning/embeddings/finetune_embedding.html。只做无监督微调难以让模型更适应领域数据。
链接失效了,能重新发一下吗
https://docs.llamaindex.ai/en/stable/examples/finetuning/embeddings/finetune_embedding.html
https://docs.llamaindex.ai/en/stable/examples/finetuning/embeddings/finetune_embedding.html @staoxiao 请教大佬:
- 在另一个issue里看到您回到说“使用近似短句或者问答对都可以作为训练数据”,那请问效果上是否有区别?使用问答对作为训练数据,最终得到的模型更适用于问答?
- 在llamaindex的这个示例中,得到的是tuple(问题,corpus片段),这里的corpus片段是从pdf内容中直接截断的片段。我的问题是:是否需要使用大模型将答案归纳为一个完整的回答后,作为训练数据?(担心使用分割后的截断片段数据会影响效果)
- 这个示例中使用的是问答对的形式。有比较好的使用大模型通过文本获取近似短句的示例吗?
- 这个示例使用的微调模型,跟使用bge官方的难负例挖掘微调模型,更推荐使用哪个? 感谢!
- 下游任务是什么,就应该用什么作为训练数据。使用问答对作为训练数据,最终得到的模型会更适用于问答。
- 看实际任务。如果任务是找相关片段,就使用直接截断的片段即可。如果任务是找一个答案,就可以使用大模型归纳出答案。
- 这个我们也没有尝试过,无法给出太多建议。
- 这个示例里用的是bge-small-en,根据实际情况选择模型即可:中文模型使用bge-*-zh-v1.5, 资源够可以使用bge-large-zh-v1.5。
- 下游任务是什么,就应该用什么作为训练数据。使用问答对作为训练数据,最终得到的模型会更适用于问答。
- 看实际任务。如果任务是找相关片段,就使用直接截断的片段即可。如果任务是找一个答案,就可以使用大模型归纳出答案。
- 这个我们也没有尝试过,无法给出太多建议。
- 这个示例里用的是bge-small-en,根据实际情况选择模型即可:中文模型使用bge-*-zh-v1.5, 资源够可以使用bge-large-zh-v1.5。
@staoxiao 感谢大佬指导:) 第四个问题我没有描述清楚:他的示例代码里是使用下面llama代码微调的,跟使用bge官方的微调方法,效果上有区别吗? llama微调: finetune_engine = SentenceTransformersFinetuneEngine( train_dataset, model_id="BAAI/bge-small-en", model_output_path="test_model", val_dataset=val_dataset, ) finetune_engine.finetune()
bge微调:
torchrun --nproc_per_node {number of gpus}
-m FlagEmbedding.baai_general_embedding.finetune.run
--output_dir {path to save model}
--model_name_or_path BAAI/bge-large-zh-v1.5
--train_data ./toy_finetune_data.jsonl
--learning_rate 1e-5
--fp16
--num_train_epochs 5
--per_device_train_batch_size {large batch size; set 1 for toy data}
--dataloader_drop_last True
--normlized True
--temperature 0.02
--query_max_len 64
--passage_max_len 256
--train_group_size 2
--negatives_cross_device
--logging_steps 10
--query_instruction_for_retrieval ""
抱歉,没有理解清楚。 效果上不好比较,我没跑过他们的训练代码。如果训练数据和参数是一样的话,我觉得两种方式应该也不会相差太多。
抱歉,没有理解清楚。 效果上不好比较,我没跑过他们的训练代码。如果训练数据和参数是一样的话,我觉得两种方式应该也不会相差太多。
感谢耐心解答!