avatar
gonzo-обзоры ML статей
@gonzo_ML
19.12.2024 19:07
Smarter, Better, Faster, Longer: A Modern Bidirectional Encoder for Fast, Memory Efficient, and Long Context Finetuning and Inference
Benjamin Warner, Antoine Chaffin, Benjamin Clavié, Orion Weller, Oskar Hallström, Said Taghadouini, Alexis Gallagher, Raja Biswas, Faisal Ladhak, Tom Aarsen, Nathan Cooper, Griffin Adams, Jeremy Howard, Iacopo Poli
Статья: https://arxiv.org/abs/2412.13663
Модели: https://huggingface.co/collections/answerdotai/modernbert-67627ad707a4acbf33c41deb
Пост: https://huggingface.co/blog/modernbert

Забыли уже про BERT на фоне всех новомодных LLM? А он жив! Answer.AI и ко выпустили обновлённый и ускоренный по современным стандартам ModernBERT.

В двух словах напомним тем, кто забыл. Оригинальная архитектура трансформера включает в себя энкодер и декодер, и первые модели 2017-го года были такими (характерный пример -- семейство T5, наследовавшее оригинальный код первого трансформера). Потом в 2018-м случился ImageNet moment в NLP с появлением берта (https://arxiv.org/abs/1810.04805), который был энкодером трансформера. А с появлением GPT (которая является декодером) многие массово перешли на чисто декодерные архитектуры, которые в плане генеративности дают сильно больше гибкости, чем энкодерные архитектуры. Но для разных задач классификации, разметки последовательностей и генерации эмбеддингов энкодерные берт-подобные архитектуры оставались и остаются популярны в узких кругах.

По тем временам берт был большим (110M и 340M параметров для base и large моделей соответственно), но на фоне нынешних 100B+ моделей это ничто и отлично влезает на девайсы и сервера без 100500 GPU. Тем более, что улучшений с тех пор появилось множество, RoBERTa (@gonzo_ML110), различные дистилляты (@gonzo_ML119) типа DistillBERT, интересные решения почти в духе ACT, Adaptive Computation Time (@gonzo_ML90) типа ALBERT (@gonzo_ML131) и наконец DeBERTa (@gonzo_ML459). Ну и много другого ещё было. И вот теперь ModernBERT!

Добавлено множество архитектурных улучшений:
* убирание bias-термов из линейных (кроме выходного) и layernorm слоёв
* позиционные эмбеддинги RoPE (rotary positional embeddings)
* pre-normalization с layernorm
* GeGLU активации

Кроме этого реализованы улучшения по части эффективности:
* Alternating Attention с чередованием global и local attention (каждый третий слой с global, остальные с локальным скользящим окном на 128 токенов)
* Unpadding с отказом от padding токенов, на которые тратились ненужные вычисления
* Flash Attention 3 (https://arxiv.org/abs/2407.08608)
* Компиляция через torch.compile, дало никогда-не-лишних 10% улучшения в throughput

Архитектуру слоёв подбирали чтобы эффективно использовать типовые GPU (серверные NVIDIA T4, A10, L4, A100, H100 и консьюмерские RTX 3090 и 4090, с фокусом на инференс), получили base и large модели c 22 и 28 слоями и 149М и 395M параметров (то есть слегка побольше оригинала).

Обучен на 2T токенов (смесь английского и кода), размер контекста 8192 (у Берта и Роберты было всего 512). От старого токенизатора (wordpiece) отказались, взяли BPE, модифицированную версию от OLMo (@gonzo_ML2437). Старые токены типа [CLS] и [SEP] для совместимости остались.

Обучают на Masked Language Modeling (MLM), от Next-Sentence Prediction (NSP) как и во многих других вариациях (типа RoBERTa) отказались. Оптимизатор StableAdamW, modified trapezoidal Learning Rate schedule (aka Warmup-Stable-Decay, WSD). Batch size scheduling от малых батчей до более крупных. Инициализация весов из Megatron для base и Phi для large. Первые 1.7T токенов обучают на длине контекста 1024, потом на оставшихся 300B расширяют до 8192.

Наверняка кто-то уже строил филогенетическое дерево эволюции бертов (и вообще), было бы интересно посмотреть кто от кого что унаследовал и как идеи переносились. Никто не видел такого?
👍 39
🔥 11
7
142 5.6K

Обсуждение 0

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram