簡體   English   中英

在分布式張量流學習中使用參數服務器的原因是什么?

[英]What is the reason to use parameter server in distributed tensorflow learning?

簡短版本:我們不能將變量存儲在其中一個worker中而不能使用參數服務器嗎?

長版:我想在tensorflow中實現神經網絡的同步分布式學習。 我希望每個工人在培訓期間都能獲得完整的模型副本。

我已經閱讀了分布式tensorflow教程分布式培訓imagenet的代碼,但我們不知道為什么我們需要參數服務器。

我看到它們用於存儲變量的值,replica_device_setter注意變量在參數服務器之間均勻分布(可能它做了更多的事情,我無法完全理解代碼)。

問題是:為什么我們不使用其中一個工人來存儲變量? 如果我使用,我會實現嗎?

with tf.device('/job:worker/task:0/cpu:0'):

代替

with tf.device(tf.train.replica_device_setter(cluster=cluster_spec)):

對於變量? 如果與使用參數服務器的解決方案相比,這有效嗎?

使用參數服務器可以為您提供更好的網絡利用率,並允許您將模型擴展到更多計算機。

一個具體的例子,假設你有250M參數,每個工人計算梯度需要1秒,並且有10個工人。 這意味着每個工作人員必須每秒向9個其他工作人員發送/接收1 GB數據,這對每個工作人員需要72 Gbps全雙工網絡容量,這是不切實際的。

更現實的是,每個工作人員可以擁有10 Gbps的網絡容量。 通過使用分割8台計算機的參數服務器來防止網絡瓶頸。 每個工作機器與每個參數機器通信1/8參數。

另一種可能性是使用TensorFlow的分布式版本,它通過在后端使用MPI自動處理多個節點上的數據分發和執行。

我們最近在MaTEx開發了一個這樣的版本: https//github.com/matex-org/matex ,以及一篇描述https://arxiv.org/abs/1704.04560的論文

它進行同步訓練並提供多種並行數據集讀取器格式。

如果您需要更多幫助,我們將竭誠為您服務!

暫無
暫無

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

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