Were RNNs all we needed? A GPU programming perspective
Упрощённые версии GRU и LSTM (minGRU и minLSTM) позволяют заменить последовательные вычисления на параллельные, устраняя зависимость скрытого состояния от предыдущего шага. Это достигается за счёт переопределения гейтов так, чтобы они зависели только от текущего входа, что превращает рекуррентное обновление в линейную форму, разрешимую алгоритмом параллельного сканирования (scan). Такой подход сокращает сложность с O(T) до O(log T), что критично для ускорения на GPU.
Реализация на CUDA демонстрирует значительное ускорение: для последовательностей длиной 65 536 шагов время выполнения сокращается с ~13 секунд на CPU до ~5,3 секунд на GPU для GRU и с ~13 до ~6,7 секунд для LSTM. На коротких последовательностях (T < 2048) преимущество менее выражено из-за накладных расходов на распараллеливание, но с ростом длины масштабирование становится явным. Это подтверждает, что даже минимальные изменения в архитектуре RNN могут радикально улучшить их производительность на параллельных вычислениях.