2017-10-17 53 views
1

這裏有個理論問題。我知道,在處理單個機器上無法放入內存的數據集時,spark + EMR是一個很好的選擇。深入瞭解海量數據集

不過,我還想用tensorflow代替spark的ml lib算法來對這些大型數據集進行深度學習。

從我的研究中,我發現我可以使用pyspark,elephas和EMR的組合來實現這一點。另外還有BigDL和sparkdl。

我該怎麼做呢?深入學習不適合內存的數據的最佳做法是什麼?我應該使用在線學習還是批量培訓? This post似乎是說「最高性能的深度學習實現只有單節點」

任何幫助指向我在正確的方向將不勝感激。

+0

是[亞馬遜MXNet](https://aws.amazon.com/mxnet/)對於您想實現的目標可能感興趣的東西? –

回答

0

當您提到「將大量數據集合到內存中」時,我明白您正嘗試將所有數據一次加載到內存並開始訓練。因此,我根據這個假設給出了答覆。

一般的想法是,如果你不能將數據適合你的資源,將數據分成更小的塊並以迭代的方式進行訓練。

1-逐個加載數據,而不是一次加載所有數據。如果您創建的執行工作流爲「加載數據 - >培訓 - >發佈數據(這可以由垃圾收集器自動完成) - >重新啓動」,您可以瞭解需要多少資源來訓練單個數據。

2-使用小批量。只要從#1獲得資源信息,就可以輕鬆計算出最小批量的大小。例如,如果訓練單個數據消耗1.5 GB的RAM,並且GPU有8 GB的RAM,理論上可以一次訓練5號小批量。

3-如果資源不足以訓練1個單一批次,在這種情況下,您可能會考慮增加PC容量或降低型號容量/層數/功能。或者,您可以選擇雲計算解決方案。