Oui, c'est possible dans Tensorflow. L'astuce consiste à utiliser le partitionnement des variables, par exemple tf.fixed_size_partitioner
et la réplication du serveur de paramètres via tf.train.replica_device_setter
pour répartir la variable sur plusieurs machines. Voici à quoi cela ressemble dans le code :
with tf.device(tf.train.replica_device_setter(ps_tasks=3)):
embedding = tf.get_variable("embedding", [1000000000, 20],
partitioner=tf.fixed_size_partitioner(3))
L'avantage est que ces changements sont très locaux et qu'ils ne font aucune différence pour le reste du code de formation. En revanche, lors de l'exécution, il y a une grande différence, à savoir embedding
sera découpé en 3 morceaux, chacun étant rattaché à un autre ps
que vous pouvez exécuter sur une machine séparée. Voir aussi cette question pertinente .