PKU-EPIC / UniDexGrasp

Official code for "UniDexGrasp: Universal Robotic Dexterous Grasping via Learning Diverse Proposal Generation and Goal-Conditioned Policy" (CVPR 2023)
136 stars 13 forks source link

Bad allocate and PyTorch.cannot allocate memory #7

Closed gotochen closed 10 months ago

gotochen commented 1 year ago

你好,我运行你们代码dexgrasp_generation部分eval.py的时候出现了std::bad allocate和RuntimeError: falseINTERNAL ASSERT FAILED at "..\aten\src\ATen\MapAllocator.cpp":135, please report a bug to PyTorch.cannot allocate memory(12)等问题,总的来说好像都是内存不足问题。不知道你们运行时是否出现过类似问题,是存在代码未释放内存的现象还是我们服务器的内存不足呢?麻烦您告知一下是否有相关内容。 图例如下 ex1

gotochen commented 1 year ago

54% This time when num_workers: 4 batch_size: 32 n_samples: 100 after 50mins

gotochen commented 1 year ago

conda1 conda2 conda3 配置1 配置2 这是我的服务器和conda虚拟环境的相关配置,望您看看是否和您项目相仿,是否有问题,麻烦您了

mzhmxzh commented 1 year ago

可能是显存不够用了,可以尝试把batch_size调小一点?我们之前没有遇到过类似的现象。

gotochen commented 1 year ago

可能是显存不够用了,可以尝试把batch_size调小一点?我们之前没有遇到过类似的现象。

实际上我尝试了调整batch_size或者是dataloeader的线程数,很奇怪的是无论如何都会出现这样的问题,无论个人电脑还是服务器。服务器的4*24g显存应该不会出现不够的情况?可以的话能否分享一下你们的服务器配置情况和你们的pytorch相关库版本,我再查一下问题?

maple-zxh commented 1 year ago

num_workers=0试一下呢

gotochen commented 1 year ago

num_workers=0试一下呢

之前试过,无非是百分之多少报错,其他人复现的时候也出现过这种情况吗?

lym29 commented 1 year ago

num_workers=0试一下呢

之前试过,无非是百分之多少报错,其他人复现的时候也出现过这种情况吗?

我也遇到了这个问题,在3090上跑的,显存占用了10G,GPU使用率到了90%
我把中间结果存出来,应该是在算tta结果的时候显存不够了。尝试了每一步只跑一个batch是成功的,但是在整个test data上eval,就会出现和你一样的错误。
我看了代码里面每个batch算完结果是直接append到result里面,没有预先allocate memory,这样会需要反复重新分配显存,会不会是这个原因呀

mzhmxzh commented 1 year ago

num_workers=0试一下呢

之前试过,无非是百分之多少报错,其他人复现的时候也出现过这种情况吗?

我也遇到了这个问题,在3090上跑的,显存占用了10G,GPU使用率到了90% 我把中间结果存出来,应该是在算tta结果的时候显存不够了。尝试了每一步只跑一个batch是成功的,但是在整个test data上eval,就会出现和你一样的错误。 我看了代码里面每个batch算完结果是直接append到result里面,没有预先allocate memory,这样会需要反复重新分配显存,会不会是这个原因呀

确实,或许尝试一下把结果先搬到cpu上然后再append?这样就不会累计占用显存了,只要内存够大就不会炸。

jianguo-cmd commented 1 week ago

可能是显存不够用了,可以尝试把batch_size调小一点?我们之前没有遇到过类似的现象。

实际上我尝试了调整batch_size或者是dataloeader的线程数,很奇怪的是无论如何都会出现这样的问题,无论个人电脑还是服务器。服务器的4*24g显存应该不会出现不够的情况?可以的话能否分享一下你们的服务器配置情况和你们的pytorch相关库版本,我再查一下问题?

您好,请问您解决了吗?我也遇到了和您一样的问题,在Test的sample的for _, data in enumerate(tqdm(loader)):报错。但是这部分是已经在append之前用v.cpu将数据张量移动到cpu上了吧,而且是在还没进行到计算tta的时候就报错了。在这个过程中我看cpu的空间也还是有不少的。请问还有其他什么原因呢?您是怎么解决的呢?非常感谢