【分布式训练】Accelerate 多卡训练,单卡评测,进程卡住的解决办法

最近想把之前的一个模型的改成多卡训练的。我并不懂DDP,DP。一开始打算使用Transformers的Trainer,但是配置的过程踩了很多坑也没有弄成功。【我是自己写的评测方法,但是我找不到能让触发Trainer去用我的方法评测的路劲】,后来偶然的机会知道了accelerate库,这个库没有Trainer那么高级抽象,正适合我。

按照官方的教程随便更改就可以了。但是因为我这个项目的特殊性,我决定不多卡评测,也没必要,因为之前单卡评测就两分钟就出结果了。于是我决定使用多卡训练+单卡评测。

但是单卡评测的时候又踩坑了,就是评测结束后,就卡住了,卡住了……不往下接着训练了。

于是我开始写print 观察这几个进程在哪里停住了,删掉评测部分看能不能正常运行(结果正常运行了),后来最终定位出了原因:只要在评测部分使用模型,例如 model(**input)就会在评测结束后卡住,评测的过程倒很正常。

网上查找到了解决办法:在评测过程中,一直使用 

model.module(**inputs)

就解决了。

其他的一些注意事项:

因为是单卡评测,所以不用将dev_dataloader交给 accelerate。


 

你可能感兴趣的:(深度学习,accelerate)