GPU'ya aktarılan verilerin CUDA'da bellek yetersizliğine neden olup olmayacağını nasıl anlarım?
Bazı çok büyük derin öğrenme modellerini çalıştırmak için GPU kullanıyorum, 8 toplu iş boyutunu seçtiğimde belleğe sığabilir, ancak 16 toplu iş boyutunu kullanırsam CUDA yetersiz bellek hatasına neden olur, ve süreci öldürmem gerekiyor.
Sorum şu ki, verileri GPU'ya gerçekten aktarmadan önce, verilerin GPU'da ne kadar yer kaplayacağını bilmemin bir yolu var mı?
Örneğin, aşağıdaki kod, nasıl bir pytorch veri yükleyicisi oluşturduğum ve veri yükleyicinin her bir grubunu GPU'ya nasıl ilettiğimle ilgilidir, aramadan önce ne kadar büyük olduğunu bilebilir miyim? batch.to(device)
train_dataloader = DataLoader(train_data, sampler=train_sampler, batch_size=batch_size)
for step, batch in enumerate(train_dataloader):
b_input_ids = batch[0].to(device)
b_input_mask = batch[1].to(device)
b_labels = batch[2].to(device)
Yanıtlar
Torchsummary paketini burada kullanmanızı tavsiye ederim.
pip install torchsummary
ve kullanımda
from torchsummary import summary
myModel.cuda()
summary(myModel, (shapeOfInput)) # where shapeOfInput is a tuple of the sample's dimensions
Bu size modelin boyutunu, ileri geçişin boyutunu ve 1 parti boyutu için MB cinsinden geri geçiş boyutunu verir ve ardından parti boyutunuza göre çoğaltabilirsiniz.