* Resource exhausted: OOM when allocating tensor with shape[ ]
과 같은 에러메시지가 나오면서 프로그램이 돌지 않음
* 우선은 Batch size를 줄여서 학습을 시키면 메모리 문제가 어느정도 해결 됨
* 하지만 Resnet50, 101 등과 같이 인공지능 신경망이 깊어지면 model의 크기가 커지게 되어 batch size를 극단적으로 줄여야 하는 문제가 발생함
* Keras의 model 생성을 위한 메모리 필요량 계산 방법
한 layer에 필요한 메모리 양: (image_width x image_height x feature_maps) * batch_size
이므로 모든 layer에 대해 위와 같이 계산해주고 더해주면 됨
*example (모델의 일부분만 가져옴)
input_1: 384*200*1 = 76800
batch_normalization_1: 384*200*1 = 76800
activation_1: 384*200*1 = 76800 (activation도 계산을 해줘야하는지는 확실하지 않음)
conv2d_1: 384*200*16 = 1228800
다 합치면 76800 + 76800 + 76800 + 1228800 = 1459200
한 파라미터당 4 byte 이므로
1459200 * 4 (byte) = 5836800 (byte)
forward 및 backward 계산을 해주므로 총 메모리 양: 356.25 MB * 2 = 712.5 MB
참조: http://cs231n.github.io/convolutional-networks/#case

댓글 없음:
댓글 쓰기