如何在张量流中存储非常大的变量?

时间:2019-03-16 12:06:15

标签: tensorflow distributed word-embedding

我必须训练非常大的嵌入指令(大约1TB)。我有很多机器,所以我可以使用张量流的分布式训练。

但是,我发现我无法在Parameter Server中构造一个很大的变量。张量流可以自动在不同的PS中拆分变量吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

我还没有看到自动分裂(仍在寻找自己)的任何内容,但是,有一种想法是想加入Variable Collections

  

由于TensorFlow程序的断开连接的部分可能想要创建变量,因此有时有一种访问所有变量的单一方法很有用。因此,TensorFlow提供了集合...

专门查看class VariableV1(Variable) ...


...行1511-1512 ...

    if collections is None:
        collections = [ops.GraphKeys.GLOBAL_VARIABLES]

...和行1528-1530 ...

    self._trainable = trainable
    if trainable and ops.GraphKeys.TRAINABLE_VARIABLES not in collections:
      collections = list(collections) + [ops.GraphKeys.TRAINABLE_VARIABLES]

... 也许可以将您的数据拆分为可通过Variable Collections访问的变量列表,但这仍然需要将相当大的变量拆分为较小的块,而可能不会内存效率最高。

另一种想法是使用Iterator从数据源读取和解析数据块,而不是立即加载所有内容。


  

如果要在别人之前找到内置产品,我会进行更新。