gpt4 book ai didi

python - 如何释放所有内存pytorch是从gpu内存中获取的

转载 作者:太空狗 更新时间:2023-10-29 19:28:21 32 4
gpt4 key购买 nike

我有一些高级代码,所以模型训练等被 pipeline_network 类包装。我的主要目标是在每次新折叠时训练新模型。

for train_idx, valid_idx in cv.split(meta_train[DEPTH_COLUMN].values.reshape(-1)):

meta_train_split, meta_valid_split = meta_train.iloc[train_idx], meta_train.iloc[valid_idx]

pipeline_network = unet(config=CONFIG, suffix = 'fold' + str(fold), train_mode=True)

但随后我继续进行第 2 次折叠,一切都因 gpu 内存而失败:

RuntimeError: cuda runtime error (2) : out of memory at /pytorch/torch/lib/THC/generic/THCStorage.cu:58

在 epoch 结束时,我尝试手动删除该管道,但没有成功:

 def clean_object_from_memory(obj): #definition
del obj
gc.collect()
torch.cuda.empty_cache()

clean_object_from_memory( clean_object_from_memory) # calling

调用它也没有帮助:

def dump_tensors(gpu_only=True):
torch.cuda.empty_cache()
total_size = 0
for obj in gc.get_objects():
try:
if torch.is_tensor(obj):
if not gpu_only or obj.is_cuda:
del obj
gc.collect()
elif hasattr(obj, "data") and torch.is_tensor(obj.data):
if not gpu_only or obj.is_cuda:
del obj
gc.collect()
except Exception as e:
pass

如何重置 pytorch 然后我继续下一个折叠?

最佳答案

尝试使用 del 删除对象,然后应用 torch.cuda.empty_cache()。此操作后,可重用内存将被释放。

关于python - 如何释放所有内存pytorch是从gpu内存中获取的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52205412/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com