2017-07-15 67 views
2

假設我可以在帶有張量流的GTX 1070卡上訓練樣本大小爲N,批次大小爲M,網絡深度爲L。現在,假設我想要訓練更大的樣本2N和/或更深的網絡2L並解決內存錯誤。添加GPU卡會自動縮放張量流的使用情況嗎?

插入額外的GPU卡會自動解決這個問題(假設所有GPU卡的內存總量足以容納批次和它的漸變)?或者純張量流不可能?

我讀過,有比特幣或etherium的礦工,可以用多張GPU卡建立採礦場,而且這個礦場的採礦速度會更快。

採礦農場是否也能更好地進行深度學習?

+1

AFAIK,在cuda中你選擇哪個gpu用於特定的程序。所以,我猜,不,它不會縮放。 –

回答

2

插入額外的GPU卡會自動解決這個問題嗎?

號你必須改變你的Tensorflow代碼明確地計算在不同設備上不同的操作(如:計算梯度在每個GPU單批,然後發送計算的梯度到累積收到的梯度協調並更新平均這些梯度的模型參數)。另外,Tensorflow非常靈活,允許您爲每個不同的設備(或不同的遠程節點,都是相同的)指定不同的操作。 您可以在單個計算節點上進行數據增強,並讓其他人在不應用此功能的情況下處理數據。您只能在設備或一組設備上執行某些操作。

純張量流是不可能的?

它可能與tensorflow,但你必須改變你寫的單個火車/推理設備的代碼。

我讀過,有比特幣或etherium的礦工,可以建立多個GPU卡的採礦農場,並且這個農場的採礦速度會更快。 採礦農場是否也會更好地進行深度學習?

Blockchains的工作使用POW(證明工作)需要解決使用蠻力樣的方法的一大難題(他們計算散列的很多與不同的輸入,直到找到一個有效的哈希值)。這意味着,如果您的單GPU可以猜測1000個散列/ s,則2個相同的GPU可以猜測2 x 1000個散列/ s。

GPU正在進行的計算完全不相關:由GPU產生的數據:0未被GPU使用:1,並且計算之間沒有同步點。這意味着GPU所做的任務可以由另一個GPU並行執行(顯然,每個GPU具有不同的輸入,因此設備會計算散列以解決網絡給出的不同問題)

返回Tensorflow:一旦您修改你的代碼與不同的GPU一起工作,你可以更快地訓練你的網絡(簡而言之,因爲你使用的是更大的批次)