Мне тут напомнили про einops. Такой NamedTensor, но работающий уже сейчас. Помогает меньше путаться в размерностях и уменьшает количество
.transpose
и .view
в вашем коде. На первый взгляд удобно, попробуем. Кстати автор либы - @arogozhnikov есть в чате, можете задать ему свои вопросы.Немножко контекста: "Every time I fire a linguist, the performance of the speech recognizer goes up" (Jelinek, IBM)
On Identifiability in Transformers
Brunner et al. [ETH Zurich]
arxiv.org/abs/1908.04211
Вторая волна анализа attentiion пошла! :parrot:
В этой статье авторы тоже говорят, что использовать attention weights для интерпретации - это плохая идея и даже дают формальное описание почему (но как по мне их определениие "идентифицируемости" слишком строгое и поэтому далеко от реальности). Из интересного тут то, что они предлагают ещё один метод анализа attention, который, аналогично Attention Module is Not Only a Weight показывает, что CLS и SEP токены не так важны.
Дальше интереснее: их эксперименты показывают две на первый взгляд противоречащих штуки.
1. Токен достаточно хорошо сопоставляется его эмбеддингу в том числе в последних слоях трансформера
2. Эмбеддинги различных слов сильно смешиваются внутри трансформера
То есть с одной стороны мы можем сказать, что 4 токен действительно соответствует 4 слову, но с другой - в нём очень много информации про другие слова. В принципе это ровно то, что мы имеем в виду под контекстуализированными эмбеддингами, но зато теперь мы имеем экспериментальное подтверждение этого.
Brunner et al. [ETH Zurich]
arxiv.org/abs/1908.04211
Вторая волна анализа attentiion пошла! :parrot:
В этой статье авторы тоже говорят, что использовать attention weights для интерпретации - это плохая идея и даже дают формальное описание почему (но как по мне их определениие "идентифицируемости" слишком строгое и поэтому далеко от реальности). Из интересного тут то, что они предлагают ещё один метод анализа attention, который, аналогично Attention Module is Not Only a Weight показывает, что CLS и SEP токены не так важны.
Дальше интереснее: их эксперименты показывают две на первый взгляд противоречащих штуки.
1. Токен достаточно хорошо сопоставляется его эмбеддингу в том числе в последних слоях трансформера
2. Эмбеддинги различных слов сильно смешиваются внутри трансформера
То есть с одной стороны мы можем сказать, что 4 токен действительно соответствует 4 слову, но с другой - в нём очень много информации про другие слова. В принципе это ровно то, что мы имеем в виду под контекстуализированными эмбеддингами, но зато теперь мы имеем экспериментальное подтверждение этого.
WandB всё больше хотят в enterprise.
Во-первых увидел у них WandB Artifacts, про который пока известна только одна картинка, но вообще ML-ориентированное хранилище артефактов звучит отлично для прода. Скорее всего, конечно, у вас уже своё наколеночное решение, но всё же.
Во-вторых, оказывается их self-hosted решение работает даже на бесплатных аккаунтах. Всё что вам нужно - это докер. Тайпаете в терминал
UPD: чтобы потом вернуться обратно на облачное решение:
Во-первых увидел у них WandB Artifacts, про который пока известна только одна картинка, но вообще ML-ориентированное хранилище артефактов звучит отлично для прода. Скорее всего, конечно, у вас уже своё наколеночное решение, но всё же.
Во-вторых, оказывается их self-hosted решение работает даже на бесплатных аккаунтах. Всё что вам нужно - это докер. Тайпаете в терминал
wandb local
и получаете wandb.ai на localhost:8080 (документация). Не могу понять - баг это или фича, но я теперь вообще не вижу минусов в wandb.UPD: чтобы потом вернуться обратно на облачное решение:
wandb login --host=https://api.wandb.ai
Weights & Biases
W&B Artifacts: Lightweight dataset and model versioning
With W&B Artifacts you can save every step of your pipeline, manage dataset versioning without deduplication, and save model checkpoints to easily compare versions.
Lite Transformer with Long-Short Range Attention
Wu et al. MIT
arxiv.org/abs/2004.11886
Статья про трюки, которые позволяют уменьшить трансформер в разы, ускорить его в разы (что не всегда совпрадает с уменьшением - см. ALBERT) и при этом почти не потерять (или даже приобрести) в метриках. Также много говорили про то, как запихать это в мобильный.
Трюки:
1. Не расширять пространство в FFN
2. Вместо одного self-attention обрабатывать половину вектора self-attention, а вторую - свёрткой
Код зарелижен, но мне читать его не понравилось
Wu et al. MIT
arxiv.org/abs/2004.11886
Статья про трюки, которые позволяют уменьшить трансформер в разы, ускорить его в разы (что не всегда совпрадает с уменьшением - см. ALBERT) и при этом почти не потерять (или даже приобрести) в метриках. Также много говорили про то, как запихать это в мобильный.
Трюки:
1. Не расширять пространство в FFN
2. Вместо одного self-attention обрабатывать половину вектора self-attention, а вторую - свёрткой
Код зарелижен, но мне читать его не понравилось
GitHub
GitHub - mit-han-lab/lite-transformer: [ICLR 2020] Lite Transformer with Long-Short Range Attention
[ICLR 2020] Lite Transformer with Long-Short Range Attention - mit-han-lab/lite-transformer
Are Transformers universal approximators of sequence-to-sequence functions?
Yun et al. [Google]
arxiv.org/abs/1912.10077
Вангую что в этом году мы увидим много статей с более математически строгим анализом attention.
Хорошим абстрактом для этой статьи было бы слово "Yes". В общем теперь у нас есть аналог Universal approximation theorem но для трансформеров и seq2seq.
Кроме этого авторы экспериментально показывают, что трансформеры используют не только локальный контекст (+- N слов), как CNN, но и глобальный (+- M слов, где M >> N). Для этого они заменяли слои attention в BERT на свёртки и смотрили на то, как меняется performance.
Yun et al. [Google]
arxiv.org/abs/1912.10077
Вангую что в этом году мы увидим много статей с более математически строгим анализом attention.
Хорошим абстрактом для этой статьи было бы слово "Yes". В общем теперь у нас есть аналог Universal approximation theorem но для трансформеров и seq2seq.
Кроме этого авторы экспериментально показывают, что трансформеры используют не только локальный контекст (+- N слов), как CNN, но и глобальный (+- M слов, где M >> N). Для этого они заменяли слои attention в BERT на свёртки и смотрили на то, как меняется performance.
Сегодня случайно нашёл Сondensa от NVIDIA
Такой фреймворк, который попробует за вас сжать вашу модельку с помощью квантизации/прунинга/и ещё кучи техник, которые есть у него в арсенале, автоматически подберёт гиперпараметры (buzzword: байесовская оптимизация) и вообще такой AutoML. На первый взгляд выглядит интерресно.
Статейка с подробным описанием внутренностей.
UPD: последний коммит сделан 6 месяцев назад 😞
Такой фреймворк, который попробует за вас сжать вашу модельку с помощью квантизации/прунинга/и ещё кучи техник, которые есть у него в арсенале, автоматически подберёт гиперпараметры (buzzword: байесовская оптимизация) и вообще такой AutoML. На первый взгляд выглядит интерресно.
Статейка с подробным описанием внутренностей.
UPD: последний коммит сделан 6 месяцев назад 😞
GitHub
GitHub - NVlabs/condensa: Programmable Neural Network Compression
Programmable Neural Network Compression. Contribute to NVlabs/condensa development by creating an account on GitHub.
Подборка интересных новостей за последние дни:
1. Transformers v2.9 is out, with a built-in Trainer and TFTrainer 🔥(supports GPU, MultiGPU and TPU), examples
1. GitHub запустить бету Codespaces - такой VSCode в вашем гитхабе; записаться на early acess тут
1. DeepMind напоминает, что пока вы сидите дома пора учить RL
1. Этот канал как-то обходил подкаст AI Podcast with Lex Fridman стороной, но в последнем выпуске Ilya Sutskever - кофаундер OpenAI (youtube, apple podcasts, rss)
1. Transformers v2.9 is out, with a built-in Trainer and TFTrainer 🔥(supports GPU, MultiGPU and TPU), examples
1. GitHub запустить бету Codespaces - такой VSCode в вашем гитхабе; записаться на early acess тут
1. DeepMind напоминает, что пока вы сидите дома пора учить RL
1. Этот канал как-то обходил подкаст AI Podcast with Lex Fridman стороной, но в последнем выпуске Ilya Sutskever - кофаундер OpenAI (youtube, apple podcasts, rss)
Twitter
Hugging Face
Transformers v2.9 is out, with a built-in Trainer and TFTrainer 🔥 This let us reorganize the example scripts completely for a cleaner codebase. - Same user-facing API for PyTorch and TF 2 - Support for GPU, Multi-GPU, and TPU - Easier than ever to share your…