Porque é que este modelo Keras exigem mais de 6GB de memória?

votos
7

Este modelo Keras parece exigir 6GB de RAM + usando o backend Tensorflow. Minha matemática back-of-the-envelope sugere que armazenar os pesos não devem exigir mais do que 500MB. O que está acontecendo?

from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout, Flatten
from keras.layers.convolutional import Convolution2D, MaxPooling2D

IMAGE_SIZE = 128
print('Build model...')
model = Sequential()
# three color channels, 128x128
# 16 con filters, 3 rows, 3 columns
model.add(Convolution2D(16, 3, 3, input_shape=(3, IMAGE_SIZE, IMAGE_SIZE)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(1))
model.add(Dense(3 * IMAGE_SIZE * IMAGE_SIZE))


model.compile(loss='mse', optimizer='sgd')

É uma camada de convolução (16 filtros 3x3) ligado a um único neurónio, e, em seguida, que único neurónio é ligado a ~ 50k neurónios.

Eu sou muito novo para Keras, então eu imagino o meu mal-entendido é bastante fundamental, mas eu não consigo descobrir isso.

Publicado 02/03/2016 em 18:10
fonte usuário
Em outras línguas...                            


1 respostas

votos
12

Acontece que, o meu problema foi incluindo um caminho para CUDA 7.5 na minha LD_CONFIG_PATH, mas incluindo um caminho para CUDA 7.0 PATH. Aparentemente, esta combinação estranha gera um comportamento indefinido, que no meu caso produziu uma fuga de memória.

Depois de examinar o código com um valgrind, descobri que o nvccde 7,0 foi essencialmente saltar para áreas sem sentido da biblioteca CUDA (7,5), o que não é inesperado. É realmente muito surpreendente que vazou de memória em vez de apenas deixar de funcionar, e que Theano teve o mesmo erro.

Esperemos que ninguém mais vai ser atormentado por esse problema específico no futuro, mas se você, verifique seus caminhos versão!

Na minha máquina local, sem um GPU'd Tensorflow instalado, eu ainda tenho o vazamento de memória, que parecia um erro no (0.7.0) versão anterior que foi resolvido com o (0.7.1) liberação. Novamente, eu não descobri por que o meu não-GPU Theano backend também produziu o vazamento, mas após a atualização Tensorflow, o backend Theano não vaza quer . É uma coisa muito estranha, mas acredito que a solução geral para este problema é "atualizar" e "verifique seu env".

Respondeu 04/03/2016 em 13:02
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more