2017-02-17 9 views
1

githubコードから、MatMul opは分割された行列をサポートしていないようです。複数のノードに分散された2つの巨大な行列の乗算をサポートするテンソルフローのツールはありますか?テンソルフローで分散行列乗算を既存に実装していますか?

+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

ありがとうYaroslav! –

+0

私は自分で分散行列の乗算を実装できることを理解します。実際には、2つの異なる巨大な行列を実装したい場合、並列アルゴリズムの多くのオプションがあります。私のポストは主に、Googleがテンソルフローの分散行列乗算の実装をオープンソース化しているかどうかを尋ねています。今私はないと思う。 NNトレーニングでメモリを超える大きなモデルを保存することはできないと仮定しているため、このような驚くべき私のことです。 –

+0

ここ数年の傾向は、ニューラルネットワークを小さくすることでした。 IEの100億パラメータモデルから始まり、YouTubeのビデオの中で猫がはるかに高精度で、はるかに小さく、携帯電話にフィットする何百万ものパラメータネットワークを見つけました。 –