簡體   English   中英

Tensorflow多GPU重用與復制?

[英]Tensorflow Multi-GPU reusing vs. duplicating?

要在多個GPU上訓練模型,可以在第一個GPU上創建一組變量,並在其他GPU上重復使用它們(通過tf.variable_scope(tf.get_variable_scope(), reuse=device_num != 0) ),如cifar10_multi_gpu_train

但我遇到了正式的CNN基准測試 ,在本地復制設置中,他們為每個GPU使用新的變量范圍(通過tf.variable_scope('v%s' % device_num) )。 由於所有變量都是隨機初始化的,因此post init op用於將值從GPU:0復制到其他變量。

然后兩個實現都在CPU上平均漸變並反向傳播結果(至少這是我認為,因為基准代碼是神秘的:)) - 可能導致相同的結果。

那么這兩種方法之間有什么區別,更重要的是什么更快?

謝謝。

不同之處在於,如果您重復使用變量,則每次迭代都會從其原始位置廣播變量開始所有GPU,而如果您要復制變量,則此廣播是不必要的,因此共享不應該更快。

不共享的一個缺點是,某個地方的錯誤或數值不穩定會導致不同的GPU以每個變量的不同值結束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM