Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow/Keras本地培训比分布式培训快6倍_Python_Tensorflow_Tensorflow Datasets_Tensorflow Estimator_Tf.keras - Fatal编程技术网

Python Tensorflow/Keras本地培训比分布式培训快6倍

Python Tensorflow/Keras本地培训比分布式培训快6倍,python,tensorflow,tensorflow-datasets,tensorflow-estimator,tf.keras,Python,Tensorflow,Tensorflow Datasets,Tensorflow Estimator,Tf.keras,我正在用tf.data api、tf.keras api和tf在Tensorflow中训练分类器(通过RNN)。估计器api。在本地培训中,我得到了大约240步/秒的troughput,然后我使用ParameterServer(由于正确的TF_配置)进入分布式模式,1个工人(因此1个PS和1个Chief=1个工人),我得到了大约40步/秒。如果我加上1个工人(现在是2个工人),我得到大约50步/秒,以此类推。我在家(使用多台pc)和集群(大约18名员工)测试了这种行为。只有18名工人,我才达到了

我正在用tf.data api、tf.keras api和tf在Tensorflow中训练分类器(通过RNN)。估计器api。在本地培训中,我得到了大约240步/秒的troughput,然后我使用ParameterServer(由于正确的TF_配置)进入分布式模式,1个工人(因此1个PS和1个Chief=1个工人),我得到了大约40步/秒。如果我加上1个工人(现在是2个工人),我得到大约50步/秒,以此类推。我在家(使用多台pc)和集群(大约18名员工)测试了这种行为。只有18名工人,我才达到了当地培训时的速度。我使用nfs、hdfs和已更改的操作系统进行测试培训。网络不可能是问题所在,因为另一个框架的伸缩性相当好。 有谁能指导我如何取得更好的成绩。我试了很多,但没有找到合适的解决办法

我的代码
data\u pipeline=tf.data.experimental.CsvDataset(MODEL\u DIR,默认值,header=False,field\u delim=CSV\u分隔符)\
.shard(工人、工人索引)\
.map(lambda*a:tf.stack(a),num\u parallel\u calls=线程)\
.window(大小=窗口大小,移位=窗口移位,步幅=窗口步幅,下降余数=真)\
.平面图(λb:b.批次(窗口大小))\
.map(lambda c:(c[:,:-1],tf.one_hot(tf.cast(c[-1][-1],tf.int32),2)))\
.batch(全局批大小,拖放剩余=真)\
.重复(重新重复数据集)\
.预回迁(预回迁)
  • Tensorflow版本:1.14
  • 密集/rnn单位=5
  • 批量大小=16
  • 窗口大小/顺序长度=16
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(5, batch_input_shape=(GLOBAL_BATCH_SIZE, WINDOW_SIZE, NR_FEATURES),activation=tf.keras.activations.relu, kernel_initializer=tf.keras.initializers.he_uniform(seed=2), bias_initializer=tf.keras.initializers.Zeros()))
model.add(tf.keras.layers.SimpleRNN(RNN_UNITS,stateful=True,activation=tf.keras.activations.tanh, kernel_initializer=tf.keras.initializers.glorot_uniform(seed=2),recurrent_initializer=tf.keras.initializers.glorot_uniform(seed=2),bias_initializer=tf.keras.initializers.Zeros()))
model.add(tf.keras.layers.Dense(NUM_CLASSES, activation= tf.keras.activations.softmax, kernel_initializer=tf.keras.initializers.glorot_uniform(seed=2), bias_initializer=tf.keras.initializers.Zeros()))
model.compile(optimizer=tf.train.AdamOptimizer(LEARNING_RATE), # AdamOptimizer
              loss=tf.keras.losses.CategoricalCrossentropy(),
              metrics=[tf.keras.metrics.CategoricalAccuracy(dtype=tf.float32),tf.keras.metrics.Recall(dtype=tf.float32),tf.keras.metrics.Precision(dtype=tf.float32,class_id=0),f1_score])
estimator = tf.keras.estimator.model_to_estimator(keras_model=model, config=RUN_CONFIG, model_dir=LOG_DIR)

train_spec = tf.estimator.TrainSpec(input_fn=input_fn(tf.estimator.ModeKeys.TRAIN))
eval_spec = tf.estimator.EvalSpec(input_fn=input_fn(tf.estimator.ModeKeys.EVAL), steps=100,start_delay_secs=20,throttle_secs=1*60/6)
tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)
cluster_spec_dict = {'ps': ['192.168.2.XXX:50012'],'chief': ["192.168.2.XXX:50014"],}