Ускорение поиска луча с помощью seq2seq

У меня есть полностью рабочая модель внимания seq2seq с поиском луча, и она дает улучшенные результаты. Но это займет> 1 мин для логического вывода (размер партии 1024) с k=5 (мои гипотезы k), потому что ни один из них не распараллелен. Все происходит 1 образец за один раз.

Задача (упрощенная)
Цель - перевод предложения, 15 слов Lang A до 15 слов Lang B.

  • Encoder - это RNN, который принимает предложение из 15 слов и кодирует его представление, выдает матрицу [timestep, 512] вместе с окончательным скрытым состоянием.
  • Декодер - это другой RNN, который принимает скрытое состояние кодера в качестве начального состояния, использует для внимания матрицу [timestep, 512] и выводит переведенные слова [партии] по одному шагу за раз. Естественно, существует некоторая форма распараллеливания до этого момента.
  • На этапе вывода используется поиск луча. На каждом временном шаге декодера вместо того, чтобы принимать предсказанное слово с наибольшей вероятностью, я беру k лучших слов. И укажите k слов в качестве входных данных для следующего временного шага, чтобы он мог предсказать следующее слово в предложении (остальная часть алгоритма приведена ниже). Алгоритм делает декодирование менее жадным, ожидая результаты с более высокой общей вероятностью в последующих временных шагах.
for each element in the test-set
    calculate initial k (decoder-encoder step)
    for range(timesteps-1)
        for each prev k
            get hidden state
            obtain its best k
            save hidden state
        find new k from k*k possible ones
        ##update hypotheses based on new found k
        for element in k 
            copy hidden state
            change hypotheses if necessary
            append new k to hypotheses

Есть 6 тензоров и 2 списка для отслеживания и обработки изменений состояния. Есть ли здесь место для ускорения или распараллеливания? возможно каждый k может проходить через enncode-decode одновременно? Буду признателен за любую оказанную помощь.

0 ответов

Другие вопросы по тегам