Allennlp多GPU挖坑记——serialization_dir &Multiprocessing swan runtime error freeze_support()论文前的三天的一个大bug

关于Allennlp的更多坑,如果你也在探索,请积极联系我,我的微信是jifeng19970928

这个故事的起因是这样的,我在做这个实验的时候,总是遇到multiprocessing的spwan的奇奇怪怪的问题,我的主函数是这样的,写成这样主要是我当时为了方便自己debug,关于debug,看这里https://guide.allennlp.org/debugging,却不想开启了一段噩梦的开始,三天时间哇,一个奇葩奇葩奇葩的小错误,直接影响了试验进度和论文进程

import json
import shutil
import sys

from allennlp.commands import main

config_file = "experiments/venue_classifier.json"

# Use overrides to train on CPU.
overrides = json.dumps({"trainer": {"cuda_device": -1}})

serialization_dir = "/tmp/debugger_train"

# Training will fail if the serialization directory already
# has stuff in it. If you are running the same training loop
# over and over again for debugging purposes, it will.
# Hence we wipe it out in advance.
# BE VERY CAREFUL NOT TO DO THIS FOR ACTUAL TRAINING!
shutil.rmtree(serialization_dir, ignore_errors=True)

# Assemble the command into sys.argv
sys.argv = [
    "allennlp",  # command name, not used by main
    "train",
    config_file,
    "-s", serialization_dir,
    "--include-package", "my_library",
    "-o", overrides,
]

main()

修改这个错误很简单,直接在main上加if __name__=='__main__',就这样,如果你遇到其他的问题,欢迎来跟我交流,遇到问题的人多了我才有动力继续整理为博客

好吧,还是大概说下发现问题的过程

周五以及随后周末几天最大的成果可以说就说把allennlp的坑踩了一遍,问题的起因是allennlp. 单卡一边模型要一天,然鹅从多卡开始配制就各种奇奇怪怪,光怪陆离,离奇古怪,匪夷所思的问题,最早的问题是serialization_dir目录,不管我设置不设置recover或者force,添不添加预训练模型在这个目录下,总会有file exist或者 file not found,或者file 不合适的问题,好吧,你大爷的,看github上的issue呢,完全没用,不过幸运又不幸的是周一早上解决了,周六我尝试过按步debug,改写库函数,版本回退等方式,由于网上遇到此问题的和我相似又不完全一样,事实证明他们的解决方案对我没一个好使的,最后解决问题的方法还是在抽茧剥丝的报错信息里,当我把所有由于配置导致的问题解决之后,问题指向了multiprocessing的swan包,当我按照它的教程把模型训练代码重构之后,真正的报错信息才浮现出来,读取的layer的state和预训练模型不匹配,检索之后好吧又是一个多进程问题,但是问题是原来一直都隐藏在某个sub processing完全不为人所知哇。等这次论文结束了我打算出个踩坑的文档记录,希望能帮助后来人

后续,虽然上面的程序是可以进行多进程了,但是这个程序跑了一周没结束,我觉得这个是很不正常的,5555,哭到卷曲,太难受的,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化橙同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值