Notice: file_put_contents(): Write of 6666 bytes failed with errno=28 No space left on device in /var/www/group-telegram/post.php on line 50

Warning: file_put_contents(): Only 8192 of 14858 bytes written, possibly out of free disk space in /var/www/group-telegram/post.php on line 50
gonzo-обзоры ML статей | Telegram Webview: gonzo_ML/292 -
Telegram Group & Telegram Channel
Longformer: The Long-Document Transformer
Iz Beltagy, Matthew E. Peters, Arman Cohan
Статья: https://arxiv.org/abs/2004.05150
Код: https://github.com/allenai/longformer
Longformer также на подходе (Work in Progress) в общеизвестной библиотечке от Huggingface: https://huggingface.co/transformers/model_doc/longformer.html

Свежие трансформеры. На этот раз от Allen Institute for AI.

Общеизвестная проблема трансформера — квадратичная относительно размера входа сложность механизма внимания. Из-за этого, в частности, нет нормальной возможности работать с длинными документами, которые не влезают целиком в attention span трансформера (обычно не более 512 токенов). Приходится исхитряться, и наиболее частый подход -- резать на окна фиксированного размера (обычно с перекрытием) и бежать по всей последовательности, как-то потом агрегируя активации каждого из окон. Хочется уметь делать это естественнее.

Проблему уже пытались решить по-разному, например, через оптимизацию внимания или через внедрение какой-либо памяти.

Из подходов первого типа, которые наиболее на слуху, можно вспомнить, пожалуй, Sparse Transformer от OpenAI (https://arxiv.org/abs/1904.10509, https://www.group-telegram.com/fr/gonzo_ML.com/65) или Reformer от Гугла (https://arxiv.org/abs/2001.04451, https://www.group-telegram.com/fr/gonzo_ML.com/176). В первом были кастомные разреженные ядра, во втором приближённое вычисление внимания через locality-sensitive hashing. Из интересных был ещё также Adaptive attention span (https://arxiv.org/abs/1905.07799, https://www.group-telegram.com/fr/gonzo_ML.com/99).

Из второго типа можно вспомнить Transformer-XL (https://arxiv.org/abs/1901.02860, https://www.group-telegram.com/fr/gonzo_ML.com/62), а также недавний Compressive Transformer от DeepMind (https://arxiv.org/abs/1911.05507, https://www.group-telegram.com/fr/gonzo_ML.com/165).

В текущей работе делается очередной подход к разреженному вниманию, чтобы можно было работать с длинными документами.

Предлагается следующее: вместо полного n^2 внимания делаем более гибкие варианты, акцентирующиеся на локальном контексте (который в разных попытках изучения Берта показал свою важность), а также добавляем когда надо элементы глобального контекста.

Локальный контекст добавляется через внимание скользящим окном (разрешаем self-attention только внутри окна фиксированного размера), возможно также делая это окно разреженным (dilated). Это всё уже совсем похоже на свёртки, только не с фиксированным ядром, а с вычисляемым по данным. Такая работа в природе была, и хоть её представляли на ICLR 2019, всё равно она, кажется, несколько недооценена (https://arxiv.org/abs/1901.10430, Pay Less Attention with Lightweight and Dynamic Convolutions).

К локальному контексту добавляется глобальный для предопределённых входных позиций. В случае аналогичных берту задач классификации это позиция [CLS], или, например, позиции токенов вопроса для QA задач.

Соответственно в модель вводятся отдельные Q, K, V (если эти термины непонятны, то рекомендую лучшую статью по трансформеру, что я видел http://jalammar.github.io/illustrated-transformer/) для скользящего окна и для глобального внимания.

Полученные механизмы внимания скейлятся линейно относительно входа. Профит!

В этом месте есть инженерная проблема. Наивная реализация таких вариантов внимания слишком медленная, требуются кастомные ядра для CUDA. Это сделано с помощью Tensor Virtual Machine (TVM, https://tvm.apache.org/, https://arxiv.org/abs/1802.04799) с помощью которой можно описать функцию на сравнительно высокоуровневом питоноподобном языке (https://github.com/allenai/longformer/blob/master/longformer/diagonaled_mm_tvm.py#L52), а затем скомпилировать в целевую архитектуру, например, CUDA. Таким образом написали ядро, которое вполне сносно работает (но потенциал ускорения ещё есть).



group-telegram.com/gonzo_ML/292
Create:
Last Update:

Longformer: The Long-Document Transformer
Iz Beltagy, Matthew E. Peters, Arman Cohan
Статья: https://arxiv.org/abs/2004.05150
Код: https://github.com/allenai/longformer
Longformer также на подходе (Work in Progress) в общеизвестной библиотечке от Huggingface: https://huggingface.co/transformers/model_doc/longformer.html

Свежие трансформеры. На этот раз от Allen Institute for AI.

Общеизвестная проблема трансформера — квадратичная относительно размера входа сложность механизма внимания. Из-за этого, в частности, нет нормальной возможности работать с длинными документами, которые не влезают целиком в attention span трансформера (обычно не более 512 токенов). Приходится исхитряться, и наиболее частый подход -- резать на окна фиксированного размера (обычно с перекрытием) и бежать по всей последовательности, как-то потом агрегируя активации каждого из окон. Хочется уметь делать это естественнее.

Проблему уже пытались решить по-разному, например, через оптимизацию внимания или через внедрение какой-либо памяти.

Из подходов первого типа, которые наиболее на слуху, можно вспомнить, пожалуй, Sparse Transformer от OpenAI (https://arxiv.org/abs/1904.10509, https://www.group-telegram.com/fr/gonzo_ML.com/65) или Reformer от Гугла (https://arxiv.org/abs/2001.04451, https://www.group-telegram.com/fr/gonzo_ML.com/176). В первом были кастомные разреженные ядра, во втором приближённое вычисление внимания через locality-sensitive hashing. Из интересных был ещё также Adaptive attention span (https://arxiv.org/abs/1905.07799, https://www.group-telegram.com/fr/gonzo_ML.com/99).

Из второго типа можно вспомнить Transformer-XL (https://arxiv.org/abs/1901.02860, https://www.group-telegram.com/fr/gonzo_ML.com/62), а также недавний Compressive Transformer от DeepMind (https://arxiv.org/abs/1911.05507, https://www.group-telegram.com/fr/gonzo_ML.com/165).

В текущей работе делается очередной подход к разреженному вниманию, чтобы можно было работать с длинными документами.

Предлагается следующее: вместо полного n^2 внимания делаем более гибкие варианты, акцентирующиеся на локальном контексте (который в разных попытках изучения Берта показал свою важность), а также добавляем когда надо элементы глобального контекста.

Локальный контекст добавляется через внимание скользящим окном (разрешаем self-attention только внутри окна фиксированного размера), возможно также делая это окно разреженным (dilated). Это всё уже совсем похоже на свёртки, только не с фиксированным ядром, а с вычисляемым по данным. Такая работа в природе была, и хоть её представляли на ICLR 2019, всё равно она, кажется, несколько недооценена (https://arxiv.org/abs/1901.10430, Pay Less Attention with Lightweight and Dynamic Convolutions).

К локальному контексту добавляется глобальный для предопределённых входных позиций. В случае аналогичных берту задач классификации это позиция [CLS], или, например, позиции токенов вопроса для QA задач.

Соответственно в модель вводятся отдельные Q, K, V (если эти термины непонятны, то рекомендую лучшую статью по трансформеру, что я видел http://jalammar.github.io/illustrated-transformer/) для скользящего окна и для глобального внимания.

Полученные механизмы внимания скейлятся линейно относительно входа. Профит!

В этом месте есть инженерная проблема. Наивная реализация таких вариантов внимания слишком медленная, требуются кастомные ядра для CUDA. Это сделано с помощью Tensor Virtual Machine (TVM, https://tvm.apache.org/, https://arxiv.org/abs/1802.04799) с помощью которой можно описать функцию на сравнительно высокоуровневом питоноподобном языке (https://github.com/allenai/longformer/blob/master/longformer/diagonaled_mm_tvm.py#L52), а затем скомпилировать в целевую архитектуру, например, CUDA. Таким образом написали ядро, которое вполне сносно работает (но потенциал ускорения ещё есть).

BY gonzo-обзоры ML статей




Share with your friend now:
group-telegram.com/gonzo_ML/292

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

Oh no. There’s a certain degree of myth-making around what exactly went on, so take everything that follows lightly. Telegram was originally launched as a side project by the Durov brothers, with Nikolai handling the coding and Pavel as CEO, while both were at VK. Telegram was founded in 2013 by two Russian brothers, Nikolai and Pavel Durov. "The result is on this photo: fiery 'greetings' to the invaders," the Security Service of Ukraine wrote alongside a photo showing several military vehicles among plumes of black smoke. Two days after Russia invaded Ukraine, an account on the Telegram messaging platform posing as President Volodymyr Zelenskiy urged his armed forces to surrender. "There are several million Russians who can lift their head up from propaganda and try to look for other sources, and I'd say that most look for it on Telegram," he said.
from fr


Telegram gonzo-обзоры ML статей
FROM American