Чтение большого набора данных в Tensorflow с Google Cloud ML происходит медленно - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь обучить LSTM с помощью Google Cloud ML.Набор обучающих данных содержит около 600 tfrecords файлов, каждый из которых составляет около 147 МБ.В целом набор данных составляет около 90 ГБ.

Когда я тренируюсь в облачном мл только с несколькими из этих tfrecords, обучение начинается очень быстро.Но когда я использую все значения tfrecords, задание ожидает около 1 часа в этом состоянии:

INFO    2018-06-08 14:42:18 -0400       master-replica-0                Calling model_fn.                                                                                                                           
INFO    2018-06-08 14:42:20 -0400       master-replica-0                Done calling model_fn.                                                                                                                      
INFO    2018-06-08 14:42:20 -0400       master-replica-0                Create CheckpointSaverHook.                                                                                                                 
INFO    2018-06-08 14:42:22 -0400       master-replica-0                Graph was finalized.                                                                                                                        
INFO    2018-06-08 14:42:22 -0400       master-replica-0                Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA                                                
INFO    2018-06-08 14:42:22 -0400       master-replica-0                successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero         
INFO    2018-06-08 14:42:22 -0400       master-replica-0                Found device 0 with properties:                                                                                                             
ERROR   2018-06-08 14:42:22 -0400       master-replica-0                name: Tesla K80 major: 3 minor: 7 memoryClockRate(GHz): 0.8235                                                                              
ERROR   2018-06-08 14:42:22 -0400       master-replica-0                pciBusID: 0000:00:04.0                                                                                                                      
ERROR   2018-06-08 14:42:22 -0400       master-replica-0                totalMemory: 11.17GiB freeMemory: 11.10GiB                                                                                                  
INFO    2018-06-08 14:42:22 -0400       master-replica-0                Adding visible gpu devices: 0                                                                                                               
INFO    2018-06-08 14:42:23 -0400       master-replica-0                Device interconnect StreamExecutor with strength 1 edge matrix:                                                                             
INFO    2018-06-08 14:42:23 -0400       master-replica-0                     0                                                                                                                                      
INFO    2018-06-08 14:42:23 -0400       master-replica-0                0:   N                                                                                                                                      
INFO    2018-06-08 14:42:23 -0400       master-replica-0                Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 10763 MB memory) -> physical GPU (device: 0, name: Tesla K80, p
ci bus id: 0000:00:04.0, compute capability: 3.7)                                                                                                                                                                   
INFO    2018-06-08 14:42:23 -0400       master-replica-0                Running local_init_op.                                                                                                                      
INFO    2018-06-08 14:42:23 -0400       master-replica-0                Done running local_init_op.                                                                                                                 
INFO    2018-06-08 14:42:30 -0400       master-replica-0                Saving checkpoints for 1 into gs://teamcore-rnn/discrete_sales_test_0_less_ts/model.ckpt.                                                   
INFO    2018-06-08 14:42:37 -0400       master-replica-0                Calling model_fn.                                                                                                                           
INFO    2018-06-08 14:42:39 -0400       master-replica-0                Done calling model_fn.                                                                                                                      
INFO    2018-06-08 14:42:39 -0400       master-replica-0                Starting evaluation at 2018-06-08-18:42:39                                                                                                  
INFO    2018-06-08 14:42:39 -0400       master-replica-0                Graph was finalized.                                                                                                                        
INFO    2018-06-08 14:42:39 -0400       master-replica-0                Adding visible gpu devices: 0                                                                                                               
INFO    2018-06-08 14:42:39 -0400       master-replica-0                Restoring parameters from gs://teamcore-rnn/discrete_sales_test_0_less_ts/model.ckpt-1                                                      
INFO    2018-06-08 14:42:39 -0400       master-replica-0                Device interconnect StreamExecutor with strength 1 edge matrix:                                                                             
INFO    2018-06-08 14:42:39 -0400       master-replica-0                     0                                                                                                                                      
INFO    2018-06-08 14:42:39 -0400       master-replica-0                0:   N                                                                                                                                      
INFO    2018-06-08 14:42:39 -0400       master-replica-0                Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 10763 MB memory) -> physical GPU (device: 0, name: Tesla K80, p
ci bus id: 0000:00:04.0, compute capability: 3.7)                                                                                                                                                                   
INFO    2018-06-08 14:42:39 -0400       master-replica-0                Running local_init_op.                                                                                                                      
INFO    2018-06-08 14:42:39 -0400       master-replica-0                Done running local_init_op.                   

Затем выполняется 2000 шагов и ожидает и час в том же состоянии.Я очень новичок в Tensorflow, но, может быть, потому, что чтение набора данных идет медленно?Все данные находятся в GCS в том же регионе, что и регион задания.

Код, который я использую для чтения набора данных:

def tf_record_input_fn(filenames,
                       parser_fn,
                       params,
                       mode=tf.estimator.ModeKeys.TRAIN):
    epochs = params.epochs if mode == tf.estimator.ModeKeys.TRAIN else 1
    dataset = tf.data.TFRecordDataset(filenames)
    dataset = dataset.map(parser_fn).filter(filter_empty_labels)
    dataset = dataset.filter(filter_time_series_with_nans)
    dataset = dataset.shuffle(params.batch_size * 10).repeat(epochs).batch(
        params.batch_size)
    iterator = dataset.make_one_shot_iterator()
    ts_features_batch, c_features_batch, key_batch, labels_batch = iterator.get_next(
    )

    features_batch = {
        'time_series': ts_features_batch,
        'context': c_features_batch,
        'key': key_batch
    }
    return features_batch, labels_batch

Спасибо за помощь и был бы рад предоставить большедетали, если кому-то это нужно.

1 Ответ

0 голосов
/ 16 октября 2018

Попробуйте добавить num_parallel_reads=N (для некоторого значения N, например, 32 или 64) к вызову tf.data.TFRecordDataset.Текущий код читает по одному файлу за раз, что может быть довольно медленным.

...