ResourceExhaustedError: OOM hatası


#1

CPU da güzel çalışan bir modelim vardı. GPU kurulumu yaptıktan sonra böyle bir hata aldım.

Epoch başlamadan önce GPU’nun 2GB olan hafızası doluyor. (NVidia Quadro K2000) daha sonra şu hatayı alıyorum. GPU 80GB ram’in 40GB ından yararlanıyor ama Keras ile modeli koştururken bu 40gb’ın kullanılmadığını gördüm.

Blok-alıntı
ResourceExhaustedError: OOM when allocating tensor with shape[64,5] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
[[Node: training_1/Adam/mul_31 = Mul[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"](Adam_3/beta_1/read, training_1/Adam/Variable_6/read)]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.
[[Node: loss_1/mul/_229 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name=“edge_793_loss_1/mul”, tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.


#2

OOM vermesinin sebebi büyük ihtimal GPU memory’sinin dolması yüzündendir. Batch size’ını küçültebilirsin bunun önüne geçmek için ve/veya layer layer input/output dimensionlarını küçültebilirsin.


#3

Dediğiniz gibi düşürdüm batch size=2 verdim.
input_size da düşürme yapmam mümkün görünmüyor. 646464 ölçüsünde 3 boyutlu geometriyi inputshape olarak veriyorum.

Modelim bu şekilde.

Şimdi de şöyle bir hata aldım.

InvalidArgumentError: Input to reshape is a tensor with 2 values, but the requested shape has 0
 [[Node: training_1/Adam/gradients/loss_1/activation_6_loss/Mean_grad/Reshape = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _class=["loc:@training_1/Adam/gradients/loss_1/activation_6_loss/Mean_grad/truediv"], _device="/job:localhost/replica:0/task:0/device:GPU:0"](training_1/Adam/gradients/loss_1/activation_6_loss/Mean_1_grad/truediv, training_1/Adam/gradients/loss_1/activation_6_loss/Mean_grad/DynamicStitch/_183)]]

#4

Galiba bir noktada da input göndermiyorsun Adam basamadığında (input’un shape’i (x,y) olması gerekirken hiç bir şey gelmemiş diyor hata). Batch size’ı 1 yaparak denesen daha düzgün test edebilirsin gibi


#5

Şurayı tam olarak anlayamadım açıkçası. CPU ve GPU’da input_dimension’u değiştirmem mi gerekiyor? Batch Size’ı 1 yapmama rağmen yine Input Shape hatası aldım. Model CPU’da çok güzel çalışıyordu


#6

İlk input dimension’ı değil de sonraki layerların input/output dimensionlarını değiştirsen çalışır sanırsam.

CPU’da çalışıyor olması da GPU’da çalışacağı anlamına gelmiyor. Low level’da ikisinin çalışma prensipleri farklı. Out of memory hatası almanın sebebi de o fark zaten.


#7

Bu konu son cevaptan 60 dakika sonra otomatik olarak kapatıldı. Yeni cevap girilmesine izin verilmiyor.