-
Notifications
You must be signed in to change notification settings - Fork 51
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
代码能够正常运行,但显存不足的问题仍未解决 #5
Comments
我不太理解你为什么要设置gpu0_bsz = 3500,gpu0_bsz参数表示你要在0号GPU上面分配多少条数据,一般gpu0_bsz设置的肯定会比batch size要小 |
我现在设置成:
但是GPU的使用情况依旧。。。大致都是GPU0: 9.4/12GB,GPU1: 1.5/12GB
代码运行到最后是这样报错的
|
我不太清楚你模型的大小,你可以gpu0_bsz设置为1,而batch size设置为200试试 |
gpu0_bsz设置为1,而batch size设置为200,GPU0的占用还是非常高,GPU1几乎没动 |
你在运行python代码之前,在python命令前面加上CUDA_VISIBLE_DEVICES=0,1 |
同时建议你用单块GPU跑一下,看看一块GPU最大能使用的batch size是多大 |
你是指这样打命令吗?
我试了一下结果依然没变......
这次就是GPU1占用率很高,GPU0占用很低了。 |
CUDA_VISIBLE_DEVICES=0,1 python main.py |
单GPU的情况下,batch size=1占0.9/12GB,batch size=50占5.9/12GB |
我不太清楚你这个是咋回事,我这边用过的都没这个问题。你可以试试官方的多GPU那个DP |
过了好多天重新回来看你的回复,我觉得你说的“感觉就是你模型太大了,数据本身太小了”应该没错,因为我的数据集本身也就15.8MB。上网查了下,有可能是因为model里面用了太多nn.Linear(),导致模型过于庞大。。。。所以我这个情况应该不是data parallel能解决的吧 |
如果你单个模型放一个GPU都放不下,那建议把模型拆开,一部分放GPU0,一部分放GPU1。但是这样效率会很低下。而且模型放太多Linear意义不大吧? |
谢谢你的代码分享!之前一直苦于GPU显存不足的问题无法在大数据集上进行实验,看到了DataParallel的方法后找到了您的知乎分享,但是我在实现的过程中仍然没有解决显存不足的问题。程序的正确性上应该是没问题的,在小数据集上能够正确地跑出实验结果。
我对您的代码在自己的项目中进行了整合实现,代码类似您文档中的:
上面的batch_szie和gpu0_bsz这么设置是因为,之前在单GPU上运行时,batchSize为100的7500条数据对显存的占用为9.4/12GB,模型是可以完成训练的;但是紧接着利用模型对测试数据进行预测就报显存不足的错误。
在利用BalancedDataParallel运行的过程中我查看了两块GPU的现存占用情况,发现似乎GPU1基本上没有怎么被利用到:
我所使用的model SessionGraph大致如下:
我的错误是否在别的地方呢,比如说训练与预测的过程中?
程序运行过程中的数据基本都是一样的,如下所示:
The text was updated successfully, but these errors were encountered: