muKG icon indicating copy to clipboard operation
muKG copied to clipboard

TransE on FB15K 链接预测任务显存溢出

Open dbbice opened this issue 2 years ago • 5 comments

您好,使用TransE在数据集FB15K上进行链接预测任务,在100epoch后进行评估报错内存溢出;于是我将bacth_size改为原来的一半50,依然溢出,显卡为2080Ti,内存为12GB。请问一下怎么解决呀?

##################################################### epoch 99, avg. triple loss: 0.0121, cost time: 176.2252s E:\LP_code\muKG-main\src E:\LP_code\muKG-main\src 0%| | 0/50 [00:00<?, ?it/s]epoch 100, avg. triple loss: 0.0123, cost time: 174.0753s 0%| | 0/50 [00:01<?, ?it/s] Traceback (most recent call last): File "E:/LP_code/muKG-main/src/py/main.py", line 41, in model.run() File "E:\LP_code\muKG-main\src\py\model\general_models.py", line 217, in run self.model.run() File "E:\LP_code\muKG-main\src\torch\kge_models\kge_trainer.py", line 165, in run flag = self.valid.print_results() File "E:\LP_code\muKG-main\src\py\evaluation\evaluation.py", line 392, in print_results self.evaluate() File "E:\LP_code\muKG-main\src\py\evaluation\evaluation.py", line 306, in evaluate score = self.fomulate(self.model.get_score(candidates, r_embeds, t_embeds)) File "E:\LP_code\muKG-main\src\torch\kge_models\basic_model.py", line 165, in get_score return self.calc(h, r, t) File "E:\LP_code\muKG-main\src\torch\kge_models\TransE.py", line 39, in calc score = (h + r) - t RuntimeError: CUDA out of memory. Tried to allocate 5.57 GiB (GPU 0; 12.00 GiB total capacity; 5.59 GiB already allocated; 4.92 GiB free; 5.61 GiB reserved in total by PyTorch)

Process finished with exit code 1

dbbice avatar Nov 03 '22 12:11 dbbice

你好,问题出现在evaluation.py代码中,在类LinkPredictionEvaluator的trans_load_data函数中可设置测试过程中batch_size大小

luoxindi avatar Nov 03 '22 12:11 luoxindi

你好,问题出现在evaluation.py代码中,在类LinkPredictionEvaluator的trans_load_data函数中可设置测试过程中batch_size大小

好的,感谢,我修改为除以500试一下。请问您在多源链接预测上的DB15K中共享ID是文件中给定的已对齐的所有实体(4500+10500)进行共享ID吗?

dbbice avatar Nov 03 '22 13:11 dbbice

你好,问题出现在evaluation.py代码中,在类LinkPredictionEvaluator的trans_load_data函数中可设置测试过程中batch_size大小

好的,感谢,我修改为除以500试一下。请问您在多源链接预测上的DB15K中共享ID是文件中给定的已对齐的所有实体(4500+10500)进行共享ID吗?

是的,在EN-ZN数据集给定的15000个种子对齐实体上进行共享ID

luoxindi avatar Nov 04 '22 02:11 luoxindi

谢谢~一般来说,训练集、验证集和测试集的划分为6:2:2或者8:1:1,而本文的多源链接预测的划分比例是18:1:1,这样的划分比例是为了达到效果吗?或者说如果8:1:1效果有提升吗?不知道作者有没有做这方面的实验~感谢答复!

你好,问题出现在evaluation.py代码中,在类LinkPredictionEvaluators的trans_load_data函数中可以设置测试过程中batch_size大小

试试,谢谢,我修改为除以5000下好。请问您在多源链接预测的DB15K中共享ID是文件中给定的已拍摄的所有物品(4500+10500)进行共享ID吗?

是的,在EN-ZN集给定的15000个预告数据上进行共享ID

谢谢您的回复!一般来说,训练集、验证集和测试集的划分为 6:2:2 或 8:1:1,而这个多源链接预测的比例是 18:1:1,这样的划分比例是为了达到提升效果吗?或者说如果常规划分的话效果还有提升吗?不知道有没有做这方面的实验?感谢答复!

dbbice avatar Nov 04 '22 13:11 dbbice

谢谢~一般来说,训练集、验证集和测试集的划分为6:2:2或者8:1:1,而本文的多源链接预测的划分比例是18:1:1,这样的划分比例是为了达到效果吗?或者说如果8:1:1效果有提升吗?不知道作者有没有做这方面的实验~感谢答复!

你好,问题出现在evaluation.py代码中,在类LinkPredictionEvaluators的trans_load_data函数中可以设置测试过程中batch_size大小

试试,谢谢,我修改为除以5000下好。请问您在多源链接预测的DB15K中共享ID是文件中给定的已拍摄的所有物品(4500+10500)进行共享ID吗?

是的,在EN-ZN集给定的15000个预告数据上进行共享ID

谢谢您的回复!一般来说,训练集、验证集和测试集的划分为 6:2:2 或 8:1:1,而这个多源链接预测的比例是 18:1:1,这样的划分比例是为了达到提升效果吗?或者说如果常规划分的话效果还有提升吗?不知道有没有做这方面的实验?感谢答复!

同学你好, 感谢你对我们工作的关注。选择这个比例,是参考了传统的link prediction数据集FB15K-237和WN18RR的比例。 FB15K-237训练集样本272115,验证集样本17535,测试集样本20466,272115 : (17535+20466) = 272115 : 38001 = 7.2 : 1. WN18RR训练集样本86835,验证集样本3034,测试集样本3134,86835 : (3034+3134) = 86835 : 6168 = 14.1 : 1. 我们折中选择了训练集和其它数据比例为9:1,然后验证集和测试集五五开。 有没有效果和数据集划分比例没有关系。

luoxindi avatar Nov 18 '22 05:11 luoxindi