2017-02-17 64 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中的视频发现到数百万个精度更高,参数网络更小,适合手机使用的参数网络。 –