2017-02-17 88 views
1

從github代碼看來,MatMul op不支持分區矩陣。那麼在張量流中是否有任何工具支持兩個分佈在多個節點上的巨大矩陣的乘法?張量流中分佈式矩陣乘法的任何現有實現?

+0

看看這個答案。 [鏈接](http://stackoverflow.com/questions/35564253/tensorflow-element-wise-matrix-multiplication?rq=1)我認爲這個答案可以幫助你。 –

+0

這是不相關的,但非常感謝您的評論 –

回答

3

TensorFlow內置了支持跨機器分佈計算。我會建議閱讀分佈式TensorFlow文檔以瞭解如何設置TensorFlow集羣。

一旦建立了羣集,您可以決定如何對問題進行分區,並使用with tf.device將每個工作人員分配到他們的工作分區。

例如,假設您乘以a*a',並且您想要將中間乘法平均分配給2個工人,並將合計結果分配到第3個工人。

你會做這樣的事情:

with tf.device(worker0): 
    # load a1 
    b1 = tf.matmul(a1, tf.transpose(a1)) 

with tf.device(worker1): 
    # load a2 
    b2 = tf.matmul(a2, tf.transpose(a2)) 

with tf.device(worker2): 
    result = b1+b2 

load a1部分取決於你有多大的矩陣存儲。如果它很大,那麼load a1可能會從磁盤讀取它。如果它適合內存,你可以使用a1=a[:n/2,:]來得到它的一個分區

+0

謝謝雅羅斯拉夫! –

+0

我明白我們可以自己實現分佈式矩陣乘法。實際上,如果我們想要實現兩個不同的巨大矩陣,那麼並行算法有很多選擇。我的帖子主要是詢問google是否已經開放了在張量流中實現分佈式矩陣乘法。現在我猜想沒有。這種令我感到意外的是,因爲它假定我們不能在神經網絡訓練中存儲超過記憶的大型模型。 –

+0

過去幾年的趨勢是使神經網絡更小。 IE,它開始於100億參數模型,它將YouTube中的視頻發現到數百萬個精度更高,參數網絡更小,適合手機使用的參數網絡。 –