by Anonymous » 25 Feb 2025, 11:04
Ich habe ein Pytorch-Trainingsskript und ich erhalte einen außerem-memory-Fehler, nachdem ein paar Epochen sogar THO TOMEN nenne. Die GPU -Erinnerung steigt einfach weiter und ich kann nicht herausfinden, warum. < /P>
Hier ist im Grunde das, was ich tue:
Code: Select all
import torch
from torch.utils.data import Dataset, DataLoader
import numpy as np
class CustomDataset(Dataset):
def __init__(self, data_paths):
self.data_paths = data_paths
def __len__(self):
return len(self.data_paths)
def __getitem__(self, idx):
image = np.load(self.data_paths[idx]['image']).astype(np.float32)
label = np.load(self.data_paths[idx]['label']).astype(np.int64)
image = torch.tensor(image).cuda()
label = torch.tensor(label).cuda()
return image, label
data_paths = [{'image': f'img_{i}.npy', 'label': f'label_{i}.npy'} for i in range(10000)]
dataset = CustomDataset(data_paths)
dataloader = DataLoader(dataset, batch_size=32, num_workers=4, pin_memory=True)
for epoch in range(10):
for batch in dataloader:
images, labels = batch
output = images.mean()
loss = output.sum()
loss.backward()
del images, labels, loss, output
torch.cuda.empty_cache()
Auch nachdem alles gelöscht und leer_cache () aufgerufen wird, steigt das VRAM einfach weiter und ich verstehe nicht, warum. Dies passiert nicht auf der CPU. Wenn ich Nvidia-smi ausführe, nimmt die Speicherverwendung nach jeder Charge zu, bis sie abstürzt. Rufen Sie Del auf allem nach jeder Stapel
[*] Einstellen num_workers = 0 (nicht geholfen)
[*] Verwenden von .detach () Bevor Sie die Tensoren in GPU
[*] überprüft haben, ob das
Problem in meinem Modell ist, aber auch ohne das Modell das Laden der Daten bereits den Speicher erhöht
hat jemand das schon einmal gesehen? Gibt es etwas über Dataloader und CUDA () , das dies verursachen könnte?
würde Ideen schätzen. Ich habe keine Dinge, um es zu versuchen,
Ich habe ein Pytorch-Trainingsskript und ich erhalte einen außerem-memory-Fehler, nachdem ein paar Epochen sogar THO TOMEN nenne. Die GPU -Erinnerung steigt einfach weiter und ich kann nicht herausfinden, warum. < /P>
Hier ist im Grunde das, was ich tue:[code]import torch
from torch.utils.data import Dataset, DataLoader
import numpy as np
class CustomDataset(Dataset):
def __init__(self, data_paths):
self.data_paths = data_paths
def __len__(self):
return len(self.data_paths)
def __getitem__(self, idx):
image = np.load(self.data_paths[idx]['image']).astype(np.float32)
label = np.load(self.data_paths[idx]['label']).astype(np.int64)
image = torch.tensor(image).cuda()
label = torch.tensor(label).cuda()
return image, label
data_paths = [{'image': f'img_{i}.npy', 'label': f'label_{i}.npy'} for i in range(10000)]
dataset = CustomDataset(data_paths)
dataloader = DataLoader(dataset, batch_size=32, num_workers=4, pin_memory=True)
for epoch in range(10):
for batch in dataloader:
images, labels = batch
output = images.mean()
loss = output.sum()
loss.backward()
del images, labels, loss, output
torch.cuda.empty_cache()
[/code]
Auch nachdem alles gelöscht und leer_cache () aufgerufen wird, steigt das VRAM einfach weiter und ich verstehe nicht, warum. Dies passiert nicht auf der CPU. Wenn ich Nvidia-smi ausführe, nimmt die Speicherverwendung nach jeder Charge zu, bis sie abstürzt. Rufen Sie Del auf allem nach jeder Stapel
[*] Einstellen num_workers = 0 (nicht geholfen)
[*] Verwenden von .detach () Bevor Sie die Tensoren in GPU
[*] überprüft haben, ob das [url=viewtopic.php?t=11587]Problem[/url] in meinem Modell ist, aber auch ohne das Modell das Laden der Daten bereits den Speicher erhöht
hat jemand das schon einmal gesehen? Gibt es etwas über Dataloader und CUDA () , das dies verursachen könnte?
würde Ideen schätzen. Ich habe keine Dinge, um es zu versuchen,