我有两个ps(参数服务器),一名负责人,一名工人。 我的2 ps GPU利用率是80%,首席和工作GPU利用率是1%。
我的情况是: 我们正在开发大规模的命令系统,我们的嵌入之一非常大,大约10G(以后更大)。我们的网络就像“深层建筑”
下面是一些代码段。
MAX_SHARD_BYTES = (1 << 29) - 1
def embedding_layer(self, ids, weights, embedding_initializer, shape, feature_name=""):
E = tf.get_variable("embeddings", trainable=True, initializer=embedding_initializer, shape=shape, partitioner=tf.variable_axis_size_partitioner(MAX_SHARD_BYTES))
return embedding_ops.embedding_lookup_sparse_with_distributed_aggregation(E, ids, weights, combiner='sum')
def model_fn(features, labels, mode, params, config):
with tf.device(tf.train.replica_device_setter(
cluster=cluster,
ps_strategy=tf.contrib.training.GreedyLoadBalancingStrategy(
num_tasks=2, load_fn=tf.contrib.training.byte_size_load_fn))
):
model = Model(features, labels, mode, params, config)
if mode == tf.estimator.ModeKeys.TRAIN:
optimizer = tf.train.AdamOptimizer(FLAGS.learning_rate, params['adam_epsilon'])
train_op = optimizer.minimize(model.loss, global_step=tf.train.get_global_step())
return tf.estimator.EstimatorSpec(mode, loss=model.loss, train_op=train_op)
elif mode == tf.estimator.ModeKeys.EVAL:
return tf.estimator.EstimatorSpec(mode, loss=model.loss, eval_metric_ops=model.metrics)
开始代码如下:
opts = tf.GPUOptions(allow_growth=True)
sess_config = tf.ConfigProto(gpu_options=opts, allow_soft_placement=True, inter_op_parallelism_threads=20, intra_op_parallelism_threads=20)
estimator = tf.estimator.Estimator(model_fn=model_fn, params=params, config=config)
if not FLAGS.need_eval:
train_spec = tf.estimator.TrainSpec(input_fn=lambda:train_input_fn(FLAGS.dataset, FLAGS.batch_size, params['feature_num'], True), max_steps=None,
hooks=[tf.train.CheckpointSaverHook(FLAGS.new_checkpoint_dir, save_steps=FLAGS.save_steps), tf.train.ProfilerHook(save_steps=10, output_dir='.')])
eval_spec = tf.estimator.EvalSpec(input_fn=lambda:None)
tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)
我们使用图间,我们尝试了tf.contrib.distribute.MirroredStrategy,并出现OOM错误。
我已经尝试过为工作人员提供时间轴配置文件,几乎所有时间成本都是RecvTensor。 我们不知道PS有什么问题,并且PS无法与时间轴配合使用。
我已经呆在服务器上了几天,感谢您的帮助。