Исправлена ​​ошибка с использованием памяти. MemoryError не использует все доступные 120 ГБ ОЗУ, но все равно выдает ошибку - PullRequest
0 голосов
/ 17 февраля 2019

Я повторно использую скрипт для использования keras для обучения модели генерации текста.Моя попытка состояла в том, чтобы увидеть, насколько это близко подходит к тому, чтобы подражать рэп-текстам, которые им были даны.

Первый раз, когда я делал файл текстов, был размером около 0,5 мегабайта с примерно 100 тыс. Строк текста, и он работал нормально на моемPC.

Позже я нашел набор данных от нескольких рэп-исполнителей из kaggle и заполнил мой текстовый файл новым контентом, а его размер увеличился до 307 МБ, и, как мне кажется, около 300 миллионов строк кода.

Пытаясь запустить это на моем компьютере, он всегда израсходовал всю доступную оперативную память, поэтому я решил запустить ее в облаке в Google Cloud и установил виртуальную машину на 120 ГБ с таким же большим количеством процессоров.

Вот код до того места, где происходит сбой

from __future__ import print_function
from keras.callbacks import LambdaCallback
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.layers import LSTM
from keras.optimizers import RMSprop
from keras.utils.data_utils import get_file
import numpy as np
import random
import sys
import io

path = 'lyrics.txt'
with io.open(path, encoding='utf-8') as f:
    text = f.read().lower()
print('corpus length:', len(text))

chars = sorted(list(set(text)))
print('total chars:', len(chars))
char_indices = dict((c, i) for i, c in enumerate(chars))
indices_char = dict((i, c) for i, c in enumerate(chars))

# cut the text in semi-redundant sequences of maxlen characters
maxlen = 40
step = 3
sentences = []
next_chars = []
for i in range(0, len(text) - maxlen, step):
    sentences.append(text[i: i + maxlen])
    next_chars.append(text[i + maxlen])
print('nb sequences:', len(sentences))

print('Vectorization...')
x = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool)
y = np.zeros((len(sentences), len(chars)), dtype=np.bool)

Модель начинает загружаться, но вылетает с этой ошибкой

muiruri_samuel@instance-1:~/rap-generator$ python char_lstm_new.py 
Using TensorFlow backend.
corpus length: 306514394
total chars: 359
nb sequences: 102171418
Vectorization...
Traceback (most recent call last):
File "char_lstm_new.py", line 44, in <module>
    x = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool)
MemoryError

Я наблюдал за использованием ОЗУ с htop и где онсбой колеблется от 20 до 60 ГБ, и всегда происходит сбой до исчерпания доступной оперативной памяти.

Есть ли способ исправить эту ошибку и / или оптимизировать код с учетом набора данных?Лили оперативной памяти голодны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...