-
Notifications
You must be signed in to change notification settings - Fork 77
ru Multi task classifiers
This page is about multitask models, which are utilized in Dream.
[Эта модель] (https://github.com/deeppavlov/dream/tree/main/annotators/combined_classification) использует порт 8087. Имя аннотатора: Combined_classification.
В модели используются простые линейные слои поверх опорной сети в корпусе дистиллятора. Эта архитектура объясняется в [руководстве по DeepPavlov] (http://docs.deeppavlov.ai/en/master/features/models/multitask_bert.html). После слияния этого PR модель должна поддерживать версию 1.1 DeepPavlov. (Пока этот PR не будет объединен, он смотрит на ветку DeepPavlov, которая была объединена в эту версию)
В DREAM новая многозадачная модель «9 в 1» обучалась на следующих наборах данных: Классификация тональности — на DynaBench (94 тыс. образцов). Примечание: в предыдущих многозадачных моделях использовалась SST (8k выборок), что приводило к переобучению. Головка однолепестковая.
Фактоидная классификация - по набору данных YAHOO (3,6 тыс. выборок), как и раньше. Головка однолепестковая.
Классификация эмоций — в наборе данных go_emotion (42 тыс. образцов). Head является однокомпонентным, так как использование многокомпонентного head давало худшие результаты. (Поэтому мы использовали только однокомпонентные образцы.) Примечание. В предыдущих многозадачных моделях использовался пользовательский набор данных, что также приводило к переобучению. Классификация Midas - по набору данных Midas (~9 тыс. выборок). Голова однозначная, только семантические классы использовались как в МЕЧТЕ сейчас. Обратите внимание - мы впервые добавляем эту головку в многозадачную модель DREAM!
Тематическая классификация - на датасете Дили (1,8 млн выборок). Head является однозначным, так как использование multilabel head оказалось несовместимым. Обратите внимание - этой модели все еще недостаточно для прохождения тестов, поэтому нам все еще нужны классификаторы замены Cobot. Кроме того, имена классов для этого классификатора и классификаторов замены Cobot различаются, поэтому для поддержки этой разницы были добавлены специальные функции для каждой такой темы.
Токсичная классификация — в наборе данных Kaggle (170 тыс. образцов). Примечание — чтобы сделать классификатор однозначным, в этот набор данных был добавлен класс non_toxic, как и в предыдущих многозадачных моделях.
Темы коботов — на приватном наборе данных DREAM-2, из которого был исключен самый частый «мусорный» класс (Phatic), а все многометочные примеры переведены в одноместный формат. Все эти меры сделали модель менее подходящей для «мусорных» классов, тем самым улучшив ее качество на реальных данных. Размер очищенного набора данных: 216 тыс. выборок
Темы диалогов коботов - на приватном наборе данных DREAM-2, из которого был исключен самый частый "мусорный" класс (other), все примеры с несколькими метками переведены в формат с одной меткой, а также удалена поддержка истории. Все эти меры сделали модель менее подходящей для «мусорных» классов, тем самым улучшив ее качество на реальных данных. Размер очищенного набора данных: 127 тыс. выборок
Диалоговые намерения кобота - на приватном наборе данных DREAM-2, из которого все примеры с несколькими метками были преобразованы в формат с одной меткой, а также удалена поддержка истории. Все эти меры сделали модель менее подходящей для «мусорных» классов, тем самым улучшив ее качество на реальных данных. Размер очищенного набора данных: 318 тыс. выборок
Также были опробованы идеи улучшения архитектуры: использование токенов task_specific в конкатенации с CLS для классификации или вместо CLS. Что не увенчалось успехом. Однако увеличение размера партии с 32 до 640 (для дистиллированной модели) или 320 (для обычной модели) привело к улучшению.
В сеттинге 25-12-2022 только классификатор Midas использовал историю. Обучение модели без истории с нуля почти не повлияло на производительность и, как это ни парадоксально, дало некоторое улучшение для Midas (настройка 3 VS настройка 2). И это позволило использовать в 2 раза меньшую максимальную длину последовательности и иметь только 1 предсказание модели для кэширования, что уменьшило время предсказания с 0,73 до 0,55 секунды.
Setting | 1 | 2 | 3 | 4 | 5 | ||
---|---|---|---|---|---|---|---|
Task / model | dataset modification? | Train size | Singletask, distilbert base uncased,batch 640 | Multitask, distilbert base uncased, batch 640 | Multitask, distilbert base uncased, batch 640, all tasks trained without history | Singletask, bert base uncased, batch 320 | Multitask, bert base uncased batch 320 |
Use history in MIDAS training data | yes | yes | no | yes | yes | ||
Emotion classification (go_emotions) | converted to multi-class | 39.5к | 70.47/70.30 | 68.18/67.86 | 67.59/67.32 | 71.48/71.16 | 67.27/67.23 |
Toxic classification(Kaggle | #ERROR! | 1.62m | 94.53/93.64 | 93.84/93.5 | 93.86/93.41 | 94.54/93.15 | 93.94/93.4 |
Sentiment classification(DynaBench, v1+v2) | no | 94k | 74.75/74.63 | 72.55/72.21 | 72.22/71.9 | 75.95/75.88 | 75.65/75.62 |
Factoid classification(Yahoo) | no | 3.6k | 81.69/81.66 | 81.02/81.07 | 80.0/79.86 | 84.41/84.44 | 80.34/80.09 |
Midas classification | only semantic classes | 7.1k | 80.53/79.81(with history) | 72.73/71.56 (with history) 62.26 /60.68 (without history) |
73.69/73.26(without history) | 82.3/82.03(with history) | 77.01/76.38(with history) |
Topics classification(Dilya) | no | 1.8m | 87.48/87.43 | 86.98/86.9 | 87.01/87.05 | 88.09/88.1 | 87.43/87.47 |
Cobot topics classification | converted to single label no history, removed 1 widespread garbage class Phatic | 216k | 79.88/79.9 | 77.31/77.36 | 77.45/77.35 | 80.68/80.67 | 78.21/78.22 |
Cobot dialogact topics classification | converted to single label no history, removed 1 widespread garbage class Other | 127k | 76.81/76.71 | 76.92/76.79 | 76.8/76.7 | 77.02/76.97 | 76.86/76.74 |
Cobot dialogact intents classification | converted to single label no history | 318k | 77.07/77.7 | 76.83/76.76 | 76.65/76.57 | 77.28/77.72 | 76.96/76.89 |
Total(9in1) | 4218k | 80.36/80.20 | 78.48/78.22 | 78.36/78.15 | 81.31/81.12 | 79.3/79.11 | |
GPU memory used, Mb | 2418*9=21762 | 2420 | 2420 | 3499*9=31491 | 3501 | ||
Test inference time, sec ( for the tests) | 0.76 | 0.55 | ~ 1.33 |
Для достижения наилучшего компромисса между использованием памяти, временем вывода и тестовыми показателями использовалась модель из настройки 3 (многозадачность, база дистиллята без оболочки, партия 640). Теперь он объединен с dev как PR-213.
Новая многозадачность: экономия памяти графического процессора
Если бы мы относились абсолютно ко всем моделям как к однозадачным, то 6 моделей, заменяемых текущим комбинированным классификатором в DREAM (эмо, токсичные, сентиментальные и 3 модели коботов), заняли бы ~3500*6 ~ 21000 Мб памяти GPU. Классификатор Midas занял бы около 3500 МБ памяти графического процессора, поскольку он занимает текущий dev. Мы не учитываем модель классификатора тем, поскольку неясно, какие однозадачные классификаторы тем мы бы использовали. Если бы мы использовали тематический классификатор, подобный дистильберту, это заняло бы ~2418 МБ памяти GPU. В этом случае замена всех однозадачных моделей заняла бы ~27000 Мб памяти GPU. По сравнению с этим параметром наша многозадачность обеспечивает экономию памяти графического процессора примерно на 91%.
Эта экономия вызвана заменой многих BERT одним BERT, а также независимостью от трансформатора, которая помогла быстро добавить distilbert-base-uncased вместо BERT-base-uncased.
Использование памяти процессора для многозадачной модели: 2909 Мб. Если рассматривать абсолютно все модели как однозадачные, оценка экономии составит 25948 + 25940,6 = 22308 Мб. По сравнению с этим положением, наша многозадачность обеспечивает экономию памяти процессора примерно на 87%.
По сравнению с предыдущим разработчиком (где многозадачность 6in1 bert-base уже используется), наша многозадачность дает ~75% экономии памяти графического процессора, ~57% экономии процессора и ~80-85% экономии времени на вывод аннотаций. (Экономия времени вывода связана с тем, что текущая многозадачность намного быстрее, чем Midas, благодаря независимости от трансформатора, и нам больше не нужно использовать их оба).
Статья подана в печать.