2017-10-16 46 views

回答

1

下面是https://github.com/rafaljozefowicz/lm/blob/master/language_model.py#L21

一個例子你換你的模型創建代碼爲_forward函數,然後調用一次爲每個GPU

for i in range(hps.num_gpus): 
     with tf.device(assign_to_gpu(i, ps_device)), tf.variable_scope(tf.get_variable_scope(), 
                     reuse=True if i > 0 else None): 
      loss = self._forward(i, xs[i], ys[i], ws[i]) 
      losses += [loss] 
      if mode == "train": 
       cur_grads = self._backward(loss, summaries=(i == hps.num_gpus - 1)) 
       tower_grads += [cur_grads] 

    self.loss = tf.add_n(losses)/len(losses) 
+0

我想我不明白這一點的例子。它看起來像是在一個GPU上傳播,然後在另一個GPU上傳播。串行。我想要並行運行GPU上的模型。 – empty

+0

這個例子向前傳播8個模型並行的8個gpus,然後加起來他們的損失 –

+0

我在這裏沒有看到任何多線程。平行表現在哪裏? – empty

相關問題