avatar
gonzo-обзоры ML статей
@gonzo_ML
05.10.2019 14:04
Итак, первый лот:

DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter
Victor Sanh, Lysandre Debut, Julien Chaumond, Thomas Wolf
Статья: https://arxiv.org/abs/1910.01108

Эту модель все уже давно знают по посту от Hugging Face (https://medium.com/huggingface/distilbert-8cf3380435b5) и по их же реализации в библиотеке transformers (бывшая pytorch-transformers, которая теперь стала достаточно универсальной, чтобы обеспечить interoperability моделей между как раз только что вышедшим TF 2.0 и PyTorch), тоже на днях вместе с переименованием обновившейся до версии 2.0.0 (https://github.com/huggingface/transformers/releases). Кажется, это самая популярная быблиотека, сожержащая наиболее популярные предобученные модели на трансформерах (https://github.com/huggingface/transformers#model-architectures).

В предверии NeuralIPS 2019 вышла наконец и статья на arxiv.

Собственно DistilBERT — это дистиллированный BERT, примерно на 40% меньший по размеру, на 60% более быстрый и сохраняющий 97% качества оригинального BERT’а (BERT-base на самом деле).

Идея дистиллирования весьма проста. Давайте обучим более простую модель (ученика), воспроизводящую поведение более сложной модели (учителя).

Модель-студент в DistilBERT — это модель, где слоёв в два раза меньше, а их размерность остаётся прежней (типа, все BLAS вычисления настолько оптимизированы, что это слабо влияет). Слои студента инициализируются весами из модели-учителя.

В случае DistilBERT мы воспроизводим финальное распределение вероятностей после softmax в задаче masked language modeling (MLM).

Функция потерь — это комбинация обычного MLM loss с новым кросс-энтропийным лоссом, штрафующим за непохожесть предсказаний ученика на предсказания учителя. Также добавляется косинусный лосс на эмбеддинги, чтобы вектора скрытых состояний обеих моделей смотрели в одинаковых направлениях.

Кроме того в DistilBERT применены улучшения из недавней RoBERTa: обучение на больших батчах (4К), динамические маски и отсутствие Next Sentence Prediction (NSP) задачи.

Обучали DistilBERT на том же датасете, что и BERT. 90 часов на 8xV100 (16Gb) против 1 дня на 1024xV100 (32 Gb) в случае обучения RoBERT’ы.

Дистиллировали только предобучение. Отдельным экспериментом попробовали сделать дополнительное дистиллирование для fine-tuning под SQuAD, оказалось ещё получше.

В целом результат достойный, работает хорошо, времени требует меньше (и на обучении, и на инференсе). Пробовали даже загонять модель в iPhone 7 Plus, этот код живёт тут: https://github.com/huggingface/swift-coreml-transformers.
arXiv.org
DistilBERT, a distilled version of BERT: smaller, faster, cheaper...
As Transfer Learning from large-scale pre-trained models becomes more prevalent in Natural Language Processing (NLP), operating these large models in on-the-edge and/or under constrained...
51 5.2K

Обсуждение 0

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

Обсудить в Telegram