Мы обучили модель DNN в распределенном режиме со стратегией сервера параметров. Модель имеет слой внедрения и имеет некоторый код, такой как
with tf.colocate_with(embeddings):
tf_output = tf.nn.embedding_lookup(embeddings, tf_ids, name=name + '_lookup')
. Это приводит к тому, что производительность графического процессора на рабочих местах составляет около 10% (очень низкий уровень). Однако, если мы закомментируем with colocate_with(embeddings)
. ГПУ на рабочих поднять до 30+%.
Любопытно, какова возможная причина этого. Поскольку встраивания размещаются на PS, различие кажется в том, где embedding_lookup
происходит на рабочем или PS (или CPU, или GPU?) Здесь начинается таинственная часть. Мы должны увидеть скачок GPU на PS в случае колокейта, но это не так.