Эффективная реализация смеси экспертного слоя в Pytorch - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь реализовать смесь экспертного слоя, аналогичного описанному в: https://arxiv.org/abs/1701.06538

В основном этот слой имеет несколько подслоев F_i (x_i), которые обрабатывают проецируемую версиюввода.Существует также слой стробирования G_i (x_i), который по сути является механизмом внимания для всех подуровней экспертов:

sum (G_i (x_i) * F_i (x_i).

My NaiveПодход заключается в создании списка для подслоев:

sublayer_list = nn.ModuleList () для i в диапазоне (num_of_layer): sublayer_list.append (self.make_layer ())

Тогдапри применении этого я использую другой цикл for

out_list = [] для i, l в перечислении (sublayer_list): out_list.appned (l (input [i])) *

Однако добавлениеэтот уровень Mixture-of-Expert замедляет обучение почти в 7 раз (по сравнению с уровнем, в котором слой MoE заменен на MLP аналогичного размера). Мне интересно, есть ли более эффективные способы реализовать это в pytorch? Большое спасибо!

...