做网站做图电脑需要什么配置,wordpress中怎么在页面中添加文章,商丘小程序开发公司,福州网站建设需要多少钱前言
我在跑深度学习模型。其中卷积用CUDA写的。数据集是cifar10。在运行了1个epoch后#xff0c;就报错#xff1a;RuntimeError: CUDA error: an illegal memory access was encountered。这个错误是在调用loss.backward()方法时出现的。 在网上看了很多方法#xff0c;有…前言
我在跑深度学习模型。其中卷积用CUDA写的。数据集是cifar10。在运行了1个epoch后就报错RuntimeError: CUDA error: an illegal memory access was encountered。这个错误是在调用loss.backward()方法时出现的。 在网上看了很多方法有说改小batch_size的有说让input_data和input_label都放在GPU上的有说升级pytorch版本的,有说换GPU卡的…
解决办法
我在取数据进行训练时先看看GPU内存和缓存的使用情况具体是在出错的地方使用
print(torch.cuda.memory_allocated())
print(torch.cuda.memory_cached())查看存储空间的使用情况。发现这两个值很接近。这说明内存被占用满了。但是我查看GPU的利用率发现GPU的利用率才达到59%。 感觉挺玄乎的我在调用loss.backward()前先使用torch.cuda.empty_cache()释放内存把batch_size改小就能运行了。 代码如下所示 for step, (x, y) in enumerate(train_loader):x x.cuda()y y.cuda()if step 0:batch_size len(y)optimizer.zero_grad()output net(x)loss loss_function(output, y).cuda()#####加上了代码######print(torch.cuda.memory_allocated())print(torch.cuda.memory_cached())torch.cuda.empty_cache()#####加上了代码######loss.backward()if args.trainspflag:UpdateBnFactor()optimizer.step()total_loss (loss.item()/length)#####在一次epoch完后再释放一次内存####torch.cuda.empty_cache()............总结
玄乎GPU内存利用率不高但是就是说内存不够用。最开始我把batch_size调整为1还是报同样的错但是当我一边释放内存一边改小batch_size后又能用了。唉我这个小白菜鸟独闯CUDA编程特别是涉及到内存管理上真的是有N多坑要踩啊