
Тут буквально на днях Microsoft выложили код огромной проделанной работы. Речь идет о LongNet представленном в июне этого года. Очередная попытка побороться с квадратичной сложностью внимания и заскелить длину последовательности до (просто вдумайтесь) 1B токенов (см график на срине 1) 😳
Звучит круто, на деле механизм следующий: будем делить последовательность на сегменты, а внутри еще на уровень разреженности (ну типо как sparse attention). Посмотреть визуализацию можно на скрине 2.
Но это еще не все. Это дело все можно распараллелить на гпушки следующим образом: возьмем длину последовательности, разделим объем последовательность на сегменты, количество которых равно количеству карт. Дальше на каждой карте будут свои матрицы Q, K, V. Но объеденим далее мы в одну только матрицы K, V, а Q будет на каждой карте своя в итоговой формуле. (Скрин 3)
Так вот. Для всего этого дела теперь есть код в открытом доступе. Вот репа (заходим в директорию torchscale/model и наслаждаемся)
НО ЭТО ТОЖЕ ЕЩЕ НЕ ВСЕ. Также в начале декабря они зарелизели LongVIT, который представляет из себя такой же алгоритм, только картинка будет разделена на патчи (скрин 4), что и представит последовательность (код можно найти в той же репе, но директория examples/longvit)
🖥 Еще раз. Код весь туть
Звучит круто, на деле механизм следующий: будем делить последовательность на сегменты, а внутри еще на уровень разреженности (ну типо как sparse attention). Посмотреть визуализацию можно на скрине 2.
Но это еще не все. Это дело все можно распараллелить на гпушки следующим образом: возьмем длину последовательности, разделим объем последовательность на сегменты, количество которых равно количеству карт. Дальше на каждой карте будут свои матрицы Q, K, V. Но объеденим далее мы в одну только матрицы K, V, а Q будет на каждой карте своя в итоговой формуле. (Скрин 3)
Так вот. Для всего этого дела теперь есть код в открытом доступе. Вот репа (заходим в директорию torchscale/model и наслаждаемся)
НО ЭТО ТОЖЕ ЕЩЕ НЕ ВСЕ. Также в начале декабря они зарелизели LongVIT, который представляет из себя такой же алгоритм, только картинка будет разделена на патчи (скрин 4), что и представит последовательность (код можно найти в той же репе, но директория examples/longvit)