张量流分配seq2seq永远卡住

彭鹏

我正在尝试在Tensorflow中启动分布式seq2seq模型。这是原始的单进程seq2seq模型。我按照这里的tensorflow分布式教程设置了一个集群(1ps,3workers)

但是所有工作人员永远都被卡住,并输出相同的池日志信息:

start running session
I tensorflow/core/common_runtime/gpu/pool_allocator.cc:244] PoolAllocator: After 7623 get requests, put_count=3649 evicted_count=1000 eviction_rate=0.274048 and unsatisfied allocation rate=0.665617
I tensorflow/core/common_runtime/gpu/pool_allocator.cc:256] Raising pool_size_limit_ from 100 to 110

这是translate.py的集群设置

  ps_hosts = ["9.91.9.129:2222"]
  worker_hosts = ["9.91.9.130:2223", "9.91.9.130:2224", "9.91.9.130:2225"]
  #worker_hosts = ["9.91.9.130:2223"]

  cluster = tf.train.ClusterSpec({"ps":ps_hosts, "worker":worker_hosts})
  server = tf.train.Server(cluster,
                            job_name=FLAGS.job_name,
                            task_index=FLAGS.task_index)
  if FLAGS.job_name == "ps":
        server.join()
  elif FLAGS.job_name == "worker":
      # Worker server 
      is_chief = (FLAGS.task_index == 0)      
      gpu_num = FLAGS.task_index
      with tf.Graph().as_default():
        with tf.device(tf.train.replica_device_setter(cluster=cluster,
            worker_device="/job:worker/task:%d/gpu:%d" % (FLAGS.task_index, gpu_num))):

我使用了tf.train.SyncReplicasOptimizer来实现SyncTraining。

这是我seq2seq_model.py的一部分

# Gradients and SGD update operation for training the model.
params = tf.trainable_variables()
if not forward_only:
  self.gradient_norms = []
  self.updates = []
  opt = tf.train.GradientDescentOptimizer(self.learning_rate)
  opt = tf.train.SyncReplicasOptimizer(
    opt,
    replicas_to_aggregate=num_workers,
    replica_id=task_index,
    total_num_replicas=num_workers)      

  for b in xrange(len(buckets)):
    gradients = tf.gradients(self.losses[b], params)
    clipped_gradients, norm = tf.clip_by_global_norm(gradients,
                                                     max_gradient_norm)
    self.gradient_norms.append(norm)
    self.updates.append(opt.apply_gradients(
          zip(clipped_gradients, params), global_step=self.global_step))


self.init_tokens_op = opt.get_init_tokens_op
self.chief_queue_runners = [opt.get_chief_queue_runner]
self.saver = tf.train.Saver(tf.all_variables())

这是我完整的python代码[此处]

塞利文奇

看来Tensorflow的人们还没有准备好正确共享在集群上运行代码的经验。到目前为止,仅在源代码中才能找到全面的文档。

根据SyncReplicasOptimizer.py,从0.11版本开始,您必须在SyncReplicasOptimizer构造之后运行此命令:

init_token_op = optimizer.get_init_tokens_op()
chief_queue_runner = optimizer.get_chief_queue_runner()

在使用Supervisor构建会话之后,请运行以下命令:

  if is_chief:
    sess.run(init_token_op)
    sv.start_queue_runners(sess, [chief_queue_runner])

对于0.12引入的SyncReplicasOptimizerV2,此代码可能不足,因此,请参考您所使用版本的源代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何运行张量流seq2seq演示

来自分类Dev

使用张量流构建seq2seq模型时出错

来自分类Dev

如何使用张量流中的seq2seq预测简单序列?

来自分类Dev

如何使用张量流中的seq2seq预测简单序列?

来自分类Dev

seq2seq模型的张量图中未显示图visualisaton

来自分类Dev

Tensorflow seq2seq多维回归

来自分类Dev

Tensorflow seq2seq多维回归

来自分类Dev

Tensorflow seq2seq 教程 404

来自分类Dev

Seq2Seq用于预测复杂状态

来自分类Dev

TensorFlow实现Seq2seq情感分析

来自分类Dev

训练seq2seq模型时出现InvalidArgumentError

来自分类Dev

如何为seq2seq模型准备数据?

来自分类Dev

为Seq2Seq模型添加关注层

来自分类Dev

Seq2Seq用于预测复杂状态

来自分类Dev

TensorFlow教程中的Seq2Seq桶的使用

来自分类Dev

如何解码seq2seq的输出?

来自分类Dev

我的 seq2seq RNN 想法是否可行?

来自分类Dev

如何将word2vec导入TensorFlow Seq2Seq模型?

来自分类Dev

在Tensorflow的seq2seq函数中使用预训练的词嵌入

来自分类Dev

用采样的解码器输出实现seq2seq

来自分类Dev

Keras seq2seq模型如何在训练时从验证中屏蔽填充零?

来自分类Dev

为什么在此seq2seq模型中添加输入?

来自分类Dev

如何修改填充向量的seq2seq成本函数?

来自分类Dev

如何为带有桶的seq2seq模型设置tfrecords队列?

来自分类Dev

以下Seq2Seq模型的预期训练时间是多少?

来自分类Dev

我在 tensoflow 存储库中找不到 seq2seq 模块

来自分类Dev

Tensorflow 中 Seq2Seq 的多层双向编码器

来自分类Dev

如何使用tf2为seq2seq构建自定义双向编码器?

来自分类Dev

CNTK中的Seq2Seq:运行时错误功能仅支持2个动态轴

Related 相关文章

热门标签

归档