FlagOpen / FlagEmbedding

Retrieval and Retrieval-augmented LLMs
MIT License
7.19k stars 521 forks source link

挖掘hard negatives命令报错 #413

Open Daya-Jin opened 8 months ago

Daya-Jin commented 8 months ago
pretrained_model=/XXX/bge-large-zh-v1.5`
raw_data=/XXX/toy_finetune_data.jsonl
after_data=/XXX/toy_finetune_data_minedHN.jsonl

python3 -m FlagEmbedding.baai_general_embedding.finetune.hn_mine \
  --model_name_or_path ${pretrained_model} \
  --input_file ${raw_data} \
  --output_file ${after_data} \
  --range_for_sampling 2-7 \
  --negative_number 5

去掉了GPU选项,根据toy_data改了下数量参数,toy_data没动,下面是错误信息:

----------using 8*GPUs---------- inferencing embedding for corpus (number=80)-------------- ./mine_hardnegatives.sh: line 10: 1789 Bus error (core dumped) python3 -m FlagEmbedding.baai_general_embedding.finetune.hn_mine --model_name_or_path ${pretrained_model} --input_file ${raw_data} --output_file ${after_data} --range_for_sampling 2-7 --negative_number 5

是环境问题吗?finetune命令是能正常运行的

Daya-Jin commented 8 months ago

我在IDE上直接调试这个脚本: https://github.com/FlagOpen/FlagEmbedding/blob/master/FlagEmbedding/baai_general_embedding/finetune/hn_mine.py 发现程序运行到这个FlagEmbedding/flag_models.py的 last_hidden_state = self.model(**inputs, return_dict=True).last_hidden_state 程序就直接Process finished with exit code 255结束了,也没有异常抛出来,请问是啥原因。

staoxiao commented 8 months ago

没有太多的信息,无法准确判断问题。一个可能的潜在原因是内存/显存不够了。

Daya-Jin commented 8 months ago

8*A800的服务器,在FlagModel构造函数手动指定单个cuda设备self.device = torch.device(f"cuda:{device_id}"),并注释掉下述几行注释掉就正常了,原因不明

        # self.num_gpus = torch.cuda.device_count()
        # if self.num_gpus > 1:
        #     print(f"----------using {self.num_gpus}*GPUs----------")
        #     self.model = torch.nn.DataParallel(self.model)