我必须训练一个非常大的嵌入式字典(大约1TB)。我有很多机器,所以我可以使用tensorflow的分布式训练。
但是,我发现我无法在Parameter Server中构造一个非常大的变量。张量流可以在不同的PS自动分割变量吗?
谢谢。
我还没有看到任何关于自动分裂的东西(仍然在狩猎自己),然而,一个想法是挂钩到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
来读取和解析数据源的块,而不是一次加载所有内容。
如果我设法在其他人之前找到内置的,我会更新。