Очень большие файлы, разработка конвейера входных данных, tensorflow

#python #tensorflow #deep-learning #gpu #tensorflow-datasets

#python #tensorflow #глубокое обучение #графический процессор #tensorflow-наборы данных

Вопрос:

Я новичок в разработке конвейера входных данных Tensorflow. У меня есть 40 файлов csv, каждый из которых составляет 100 ГБ, и в нем есть некоторые из моих функций ввода для обучения классификатора. Я хочу использовать python и tensorflow-gpu для обучения классификатора. Конечно, я не могу объединить все 40 файлов csv, а затем прочитать их в ОЗУ, потому что у меня нет 4 ТБ ОЗУ (40×100 ГБ = 4 ТБ ОЗУ !!). Также нет смысла каждый раз читать все 40 файлов csv, выбирать некоторые строки, а затем объединять выбранные строки, потому что чтение этих очень больших файлов миллион раз во время обучения замедлит мой конвейер входных данных. Перед обучением любой модели я подумываю о том, чтобы разделить каждый из этих 40 файлов csv на 10000 частей, объединить соответствующие части во всех 40 файлах csv (поэтому вместо этого у меня будет 10000 файлов csv), а затем использовать их адрес и метку класса в следующем коде:

 filenames = ["filename_00001.csv", "filename_00002.csv", ..., 
     "filename_9999.csv", "filename_10000.csv"]
labels = [1, 1, ..., 0, 0...] 
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))
dataset = dataset.shuffle(buffer_size=len(filenames)) 
dataset = dataset.map(...)  # Read selected subset of 10000 csv files, preprocess, repeat, batch...  
 

Есть ли лучший способ быстрее считывать эти данные в 100 ГБ ОЗУ? Кроме того, у меня есть несколько миллионов функций. Могу ли я передать все функции в полностью подключенную модель или я столкнусь с некоторыми практическими проблемами, потому что мои графические процессоры имеют ограниченную оперативную память?