-
Notifications
You must be signed in to change notification settings - Fork 582
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
关于Embedding微调的一些问题 #1262
Comments
你好,可以提供下微调的参数吗 |
这是原始数据格式 {"query": "谁是故事中抵挡大圣的角色?", "pos": ["# 文件索引: xiyouji.docx\n# 段落标题: \n# 原始段落位置: (第94部分)\n# 是否完整段落: 否\n# 段落内容:\n无一神可挡。只打到通明殿里,灵霄殿外。幸有佑圣真君的佐使王灵官执殿。他见大圣纵横,掣金鞭近前挡住道:“泼猴何往!有吾在此切莫猖狂!”这大圣不由分说,举棒就打。那灵官鞭起相迎。两个在灵霄殿前厮浑一处。好杀:\n 赤胆忠良名誉大,欺天诳上声名坏。一低一好幸相持,豪杰英雄同赌赛。铁棒凶,金鞭快,正直无私怎忍耐?这个是太乙雷声应化尊,那个是齐天大圣猿猴怪。金鞭铁棒两家能,都是神宫仙器械。今日在灵霄宝殿弄威风,各展雄才真可爱。一个欺心要夺斗牛宫,一个竭力匡扶玄圣界。苦争不让显神通,鞭棒往来无胜败。他两个斗在一处,胜败未分,早有佑圣真君,又差将佐发文到雷府,调三十六员雷将齐来,把大圣围在垓心,各骋凶恶鏖战。那大圣全无一毫惧色,使一条如意棒,左遮右挡,后架前迎。一时,见那众雷将的刀枪剑戟、鞭简挝锤、钺斧金瓜、旄镰月铲,来的甚紧,他即摇身一变,变做三头六臂;把如意棒幌一幌,变作三条;六只手使开三条棒,好便似纺车儿一般,滴流流,在那垓心里飞舞。众雷神莫能相近。真个是:\n 圆陀陀,光灼灼,亘古常存人怎学?入火不能焚,入水何曾溺?光明一颗摩尼珠,剑戟刀枪伤不着。也能善,也能恶,眼前善恶凭他作。\n 善时成佛与成仙,恶处披毛并带角\n"], "neg": [""]} 使用hn_mine进行负样本挖掘: python FlagEmbedding/scripts/hn_mine.py \
--model_name_or_path /data/dev/pretrained-models/bge-m3 \
--input_file qa_finetune_data.jsonl \
--output_file qa_finetune_data_minedHN.jsonl \
--range_for_sampling 2-200 \
--negative_number 5 得到以下数据 {"query": "谁是故事中抵挡大圣的角色?", "pos": ["# 文件索引: xiyouji.docx\n# 段落标题: \n# 原始段落位置: (第94部分)\n# 是否完整段落: 否\n# 段落内容:\n无一神可挡。只打到通明殿里,灵霄殿外。幸有佑圣真君的佐使王灵官执殿。他见大圣纵横,掣金鞭近前挡住道:“泼猴何往!有吾在此切莫猖狂!”这大圣不由分说,举棒就打。那灵官鞭起相迎。两个在灵霄殿前厮浑一处。好杀:\n 赤胆忠良名誉大,欺天诳上声名坏。一低一好幸相持,豪杰英雄同赌赛。铁棒凶,金鞭快,正直无私怎忍耐?这个是太乙雷声应化尊,那个是齐天大圣猿猴怪。金鞭铁棒两家能,都是神宫仙器械。今日在灵霄宝殿弄威风,各展雄才真可爱。一个欺心要夺斗牛宫,一个竭力匡扶玄圣界。苦争不让显神通,鞭棒往来无胜败。他两个斗在一处,胜败未分,早有佑圣真君,又差将佐发文到雷府,调三十六员雷将齐来,把大圣围在垓心,各骋凶恶鏖战。那大圣全无一毫惧色,使一条如意棒,左遮右挡,后架前迎。一时,见那众雷将的刀枪剑戟、鞭简挝锤、钺斧金瓜、旄镰月铲,来的甚紧,他即摇身一变,变做三头六臂;把如意棒幌一幌,变作三条;六只手使开三条棒,好便似纺车儿一般,滴流流,在那垓心里飞舞。众雷神莫能相近。真个是:\n 圆陀陀,光灼灼,亘古常存人怎学?入火不能焚,入水何曾溺?光明一颗摩尼珠,剑戟刀枪伤不着。也能善,也能恶,眼前善恶凭他作。\n 善时成佛与成仙,恶处披毛并带角\n"], "neg": ["# 文件索引: xiyouji.docx\n# 段落标题: \n# 原始段落位置: (第35部分)\n# 是否完整段落: 否\n# 段落内容:\n,四时点卯。也有随班操备的,也有随节征粮的,齐齐整整,把一座花果山造得似铁桶金城,各路妖王,又有进金鼓,进彩旗,进盔甲的,纷纷攘攘,日逐家习舞兴师。\n 美猴王正喜间,忽对众说道:“汝等弓弩熟谙,兵器精通,奈我这口刀着实榔槺,不遂我意,奈何?”四老猴上前启奏道:“大王乃是仙圣,凡兵是不堪用;但不知大王水里可能去得?”悟空道:“我自闻道之后,有七十二般地煞变化之功;筋斗云有莫大的神通;善能隐身遁身,起法摄法;上天有路,入地有门;步日月无影,入金石无碍;水不能溺,火不能焚。那些儿去不得?”四猴道:“大王既有此神通,我们这铁板桥下,水通东海龙宫。大王若肯下去,寻着老龙王,问他要件甚么兵器,却不趁心?”悟空闻言甚喜道:“等我去来。”\n 好猴王,跳至桥头,使一个闭水法,捻着诀,扑的钻入波中,分开水路,径入东洋海底。正行间,忽见一个巡海的夜叉,挡住问道:“那推水来的,是何神圣?说个明白,好通报迎接。”悟空道:“吾乃花果山天生圣人孙悟空,是你老龙王的紧邻,为何不识?”那夜叉听说,急转水晶宫传报道:“大王,外面有个花果山天生圣人孙悟空,口称是大王紧邻,将到宫也。”东海龙王敖广即忙起身,与龙子、龙孙、虾兵、蟹将出宫迎道:“上\n", "# 文件索引: xiyouji.docx\n# 段落标题: \n# 原始段落位置: (第123部分)\n# 是否完整段落: 否\n# 段落内容:\n用口咬下,以为记验。取贴身汗衫一件,包裹此子,乘空抱出衙门。幸喜官衙离江不远,小姐到了江边,大哭一场。正欲抛弃,忽见江岸岸侧飘起一片木板,小姐即朝天拜祷,将此子安在板上,用带缚住,血书系在胸前,推放江中,听其所之。小姐含泪回衙不题。\n 却说此子在木板上,顺水流去,一直流到金山寺脚下停住。那金山寺长老叫做法明和尚,修真悟道,已得无生妙诀。正当打坐参禅,忽闻得小儿啼哭之声,一时心动,急到江边观看,只见涯边一片木板上,睡着一个婴儿,长老慌忙救起。见了怀中血书,方知来历,取个乳名,叫做江流,托人抚养,血书紧紧收藏。光阴似箭,日月如梭,不觉江流年长一十八岁。长老就叫他削发修行,取法名为玄奘,摩顶受戒,坚心修道。\n 一日,暮春天气,众人同在松阴之下,讲经参禅,谈说奥妙。那酒肉和尚恰被玄奘难倒,和尚大怒骂道:“你这业畜,姓名也不知,父母也不识,还在此捣甚么鬼!”玄奘被他骂出这般言语,入寺跪告师父,眼泪双流道:“人生于天地之间,禀阴阳而资五行,尽由父生母养,岂有为人在世而无父母者乎?”再三哀告,求问父母姓名。长老道:“你真个要寻父母,可随我到方丈里来。”玄奘就跟到方丈,长老到重梁之上,取下一个小匣儿,打开来取出血书一纸,\n", "# 文件索引: xiyouji.docx\n# 段落标题: \n# 原始段落位置: (第70部分)\n# 是否完整段落: 否\n# 段落内容:\n高叫道:“小的们!我来也!”众怪丢了器械,跪倒道:“大圣好宽心!丢下我等许久,不来相顾!”大圣道:“没多时!没多时!”且说且行,径入洞天深处。四健将打扫安歇叩头礼拜毕。俱道:“大圣在天这百十年,实受何职?”大圣笑道:“我记得才半年光景,怎么就说百十年话?”健将道:“在天一日,即在下方一年也。”大圣道:“且喜这番玉帝相爱,果封做‘齐天大圣’,起一座齐天府,又设安静、宁神二司,司设仙吏侍卫。向后见我无事,着我看管蟠桃园。近因王母娘娘设‘蟠桃大会’,未曾请我,是我不待他请,先赴瑶池,把他那仙品、仙酒,都是我偷吃了。走出瑶池,踉踉跄跄误入老君宫阙,又把他五个葫芦金丹也偷吃了。但恐玉帝见罪,方才走出天门来也。”\n 众怪闻言大喜。即安排酒果接风,将椰酒满斟一石碗奉上,大圣喝了一口,即咨牙咧嘴道:“不好吃!不好吃!”崩、巴二将道:“大圣在天宫,吃了仙酒、仙肴,是以椰酒不甚美口。常言道:‘美不美,乡中水。’”大圣道:“你们就是‘亲不亲,故乡人。’我今早在瑶池中受用时,见那长廊之下,有许多瓶罐,都是那玉液琼浆。你们都不曾尝着。待我再去偷他几瓶回来,你们各饮半杯,一个个也长生不老。”众猴欢喜不胜。大圣即出洞门,又翻一筋斗,使个\n", "# 文件索引: xiyouji.docx\n# 段落标题: \n# 原始段落位置: (第5部分)\n# 是否完整段落: 否\n# 段落内容:\n,都拖男挈女,呼弟呼兄,一齐跑来,顺涧爬山,直至源流之处,乃是一股瀑布飞泉。但见那:\n 一派白虹起,千寻雪浪飞;海风吹不断,江月照还依。\n 冷气分青嶂,馀流润翠微;潺湲名瀑布,真似挂帘帷。\n 众猴拍手称扬道:“好水!好水!原来此处远通山脚之下,直接大海之波。”又道:“那一个有本事的,钻进去寻个源头出来,不伤身体者,我等即拜他为王。”连呼了三声,忽见丛杂中跳出一名石猴,应声高叫道:“我进去!我进去!”好猴!也是他:\n 今日芳名显,时来大运通;有缘居此地,王遣入仙宫。\n 你看他瞑目蹲身,将身一纵,径跳入瀑布泉中,忽睁睛抬头观看,那里边却无水无波,明明朗朗的一架桥梁。他住了身,定了神,仔细再看,原来是座铁板桥。桥下之水,冲贯于石窍之间,倒挂流出去,遮闭了桥门。却又欠身上桥头,再走再看,却似有人家住处一般,真个好所在。但见那:\n 翠藓堆蓝,白云浮玉,光摇片片烟霞。虚窗静室,滑凳板生花。乳窟龙珠倚挂,萦回满地奇葩。锅灶傍崖存火迹,樽罍靠案见肴渣。石座石床真可爱,石盆石碗更堪夸。又见那一竿两竿修竹,三点五点梅花。\n 几树青松常带雨,浑然相个人家。\n 看罢多时,跳过桥中间,左右观看,只见正当中有一石碣。碣上\n", "# 文件索引: xiyouji.docx\n# 段落标题: \n# 原始段落位置: (第2部分)\n# 是否完整段落: 否\n# 段落内容:\n否矣。再去五千四百岁,交亥会之初,则当黑暗,而两间人物俱无矣,故曰混沌。又五千四百岁,亥会将终,贞下起元,近子之会,而复逐渐开明。邵康节曰:“冬至子之半,天心无改移。一阳初动处,万物未生时。”到此,天始有根。再五千四百岁,正当子会,轻清上腾,有日,有月,有星,有辰。日、月、星、辰,谓之四象。故曰,天开于子。又经五千四百岁,子会将终,近丑之会,而逐渐坚实。易曰:“大哉乾元!至哉坤元!万物资生,乃顺承天。”至此,地始凝结。再五千四百岁,正当丑会,重浊下凝,有水,有火,有山,有石,有土。水、火、山、石、土谓之五形。故曰,地辟于丑。又经五千四百岁,丑会终而寅会之初,发生万物。历曰:“天气下降,地气上升;天地交合,群物皆生。”至此,天清地爽,阴阳交合。再五千四百岁,正当寅会,生人,生兽,生禽,正谓天地人,三才定位。故曰,人生于寅。\n 感盘古开辟,三皇治世,五帝定伦,世界之间,遂分为四大部洲:曰东胜神洲,曰西牛贺洲,曰南赡部洲,曰北俱芦洲。这部书单表东胜神洲。海外有一国土,名曰傲来国。国近大海,海中有一座山,唤为花果山。此山乃十洲之祖脉,三岛之来龙,自开清浊而立,鸿蒙判后而成。真个好山!有词赋为证。赋曰:\n 势镇汪洋\n"]} 之后进行微调 torchrun --nproc_per_node 2 \
-m FlagEmbedding.finetune.embedder.encoder_only.m3 \
--model_name_or_path /data/dev/pretrained-models/bge-m3 \
--cache_dir ./cache/model \
--train_data ../qa_finetune_data_minedHN.jsonl \
--cache_path ./cache/data \
--train_group_size 4 \
--query_max_len 128 \
--passage_max_len 1024 \
--pad_to_multiple_of 8 \
--knowledge_distillation True \
--same_dataset_within_batch True \
--small_threshold 0 \
--drop_threshold 0 \
--output_dir ./test_encoder_only_m3_bge-m3_xyj \
--overwrite_output_dir \
--learning_rate 1e-5 \
--fp16 \
--num_train_epochs 2 \
--per_device_train_batch_size 2 \
--dataloader_drop_last True \
--warmup_ratio 0.1 \
--gradient_checkpointing \
--deepspeed /data/dev/Bge-Embedding-Finetune/FlagEmbedding/examples/finetune/ds_stage0.json \
--logging_steps 1 \
--save_steps 1000 \
--negatives_cross_device \
--temperature 0.02 \
--sentence_pooling_method cls \
--normalize_embeddings True \
--kd_loss_type m3_kd_loss \
--unified_finetuning True \
--use_self_distill True \
--fix_encoder False \
--self_distill_start_step 0 没有经过微调的bge-m3: {'bge-m3_cosine_accuracy@1': 0.6666666666666666,
'bge-m3_cosine_accuracy@10': 0.9375,
'bge-m3_cosine_accuracy@3': 0.8055555555555556,
'bge-m3_cosine_accuracy@5': 0.8819444444444444,
'bge-m3_cosine_map@100': 0.7583489813985503,
'bge-m3_cosine_mrr@10': 0.7545882936507936,
'bge-m3_cosine_ndcg@10': 0.7989437954983399,
'bge-m3_cosine_precision@1': 0.6666666666666666,
'bge-m3_cosine_precision@10': 0.09374999999999999,
'bge-m3_cosine_precision@3': 0.2685185185185185,
'bge-m3_cosine_precision@5': 0.17638888888888887,
'bge-m3_cosine_recall@1': 0.6666666666666666,
'bge-m3_cosine_recall@10': 0.9375,
'bge-m3_cosine_recall@3': 0.8055555555555556,
'bge-m3_cosine_recall@5': 0.8819444444444444} 使用FlagEmbedding微调: {'cosine_accuracy@1': 0.625,
'cosine_accuracy@10': 0.9305555555555556,
'cosine_accuracy@3': 0.8194444444444444,
'cosine_accuracy@5': 0.8819444444444444,
'cosine_map@100': 0.7405888304284381,
'cosine_mrr@10': 0.7364748677248676,
'cosine_ndcg@10': 0.7840335372190057,
'cosine_precision@1': 0.625,
'cosine_precision@10': 0.09305555555555554,
'cosine_precision@3': 0.27314814814814814,
'cosine_precision@5': 0.17638888888888887,
'cosine_recall@1': 0.625,
'cosine_recall@10': 0.9305555555555556,
'cosine_recall@3': 0.8194444444444444,
'cosine_recall@5': 0.8819444444444444} 使用LlamaIndex微调(没有手动构造负样本,代码里负样本默认in-batch): {'cosine_accuracy@1': 0.7291666666666666,
'cosine_accuracy@10': 0.9583333333333334,
'cosine_accuracy@3': 0.8819444444444444,
'cosine_accuracy@5': 0.9375,
'cosine_map@100': 0.8171997625462298,
'cosine_mrr@10': 0.814988425925926,
'cosine_ndcg@10': 0.8502277781476512,
'cosine_precision@1': 0.7291666666666666,
'cosine_precision@10': 0.09583333333333331,
'cosine_precision@3': 0.29398148148148145,
'cosine_precision@5': 0.18749999999999997,
'cosine_recall@1': 0.7291666666666666,
'cosine_recall@10': 0.9583333333333334,
'cosine_recall@3': 0.8819444444444444,
'cosine_recall@5': 0.9375} |
Task:找相关片段。 |
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
您好,我目前在做BGE-M3 Embedding微调,我目前发现有两种数据构造方式,一种是LlamaIndex微调
另一种是FlagEmbedding的构造正负样本做微调:
我目前看到更多人微调bge都是采用构造正负样本的方式,以上两种方式我都做了,并使用下面的方式进行评估:
会计算出这几个指标
发现使用llama_index那种方式微调结果有4-5个点的提升,而FlagEmbedding微调反而有所下降,目前有以下几个问题希望作者您能解答:
期待您的回复,祝好。
The text was updated successfully, but these errors were encountered: