MOdel ResOurCe COnsumption Оценка использования ресурсов NLP-моделями
Проект MOROCCO направлен на оценку производительности российских моделей SuperGLUE: скорости инференса, использования оперативной памяти GPU.
Призываем всех участников основного лидерборда Russian SuperGLUE переходить от представления статических json'ов с ответами к публичным репозиториям для своих моделей и воспроизводимых результатов в Docker-контейнерах.
На этой странице вы найдете описание проекта. Общедоступные докер-контейнеры с моделями и техническую документацию см. на странице Marocco на github. Проект основан @kuk
В проекте измеряется производительность опен-сорс моделей:rubert
, rubert-conversational
, bert-multilingual
, rugpt3-small
, rugpt3-medium
, rugpt3-small
, rugpt3-large
.
Чтобы добавить свою модель на лидерборд производительности: 1) создайте докер-контейнер в соответствии с примером 2) укажите общедоступный URL-адрес модели и код контейнера для ее запуска при отправке результатов.
Русскоязычный BERT в реализации DeepPavlov: архитектура Bidirectional Encoder Representations from Transformers: cased, 12-слоев, 768-скрытых, 12-голов, 180M параметров
RuBERT обучался на русскоязычной части Википедии и новостных данных. Эти данные использовались для создания словаря русских субтокенов, при этом в качестве инициализации для RuBERT была взята многоязычная версия BERT-base
BERT в реализации DeepPavlov: Russian, cased, 12-слоев, 768-скрытых, 12-голов, 180M параметров
Conversational RuBERT обучался на OpenSubtitles, Dirty, Pikabu, и сегменте Social Media из корпуса Taiga. На этих данных был собран новый словарь токенов для модели Conversational RuBERT, модель была инициализирована весами RuBERT.
Классический mBert
Русскоязычные GPT3 модели, обученные с контекстом 2048 токенов, включая rugpt3-small (125 млн параметров), rugpt3-medium (350 млн параметров), rugpt3-large (760 млн параметров)
Чтобы измерить использование GPU RAM моделью, мы запускаем контейнер с одной записью в качестве входных данных, измеряем максимальное потребление ОЗУ графического процессора, повторяем процедуру 5 раз, берем медианное значение. rubert, rubert-conversational, bert-multilingual, rugpt3-small имеют примерно одинаковое потребление GPU RAM. rugpt3-medium в ~2 раза больше, чем rugpt3-small, rugpt3-large в ~3 раза больше. rubert
, rubert-conversational
, bert-multilingual
, rugpt3-small
имеют примерно одинаковое потребление GPU RAM. rugpt3-medium
в ~2 раза больше, чем rugpt3-small
, rugpt3-large
в ~3 раза больше.
danetqa | muserc | parus | rcb | rucos | russe | rwsd | terra | lidirus | |
---|---|---|---|---|---|---|---|---|---|
rubert | 2.40 | 2.40 | 2.39 | 2.39 | 2.40 | 2.39 | 2.39 | 2.39 | 2.39 |
rubert-conversational | 2.40 | 2.40 | 2.39 | 2.39 | 2.40 | 2.39 | 2.39 | 2.39 | 2.39 |
bert-multilingual | 2.40 | 2.40 | 2.39 | 2.39 | 2.40 | 2.39 | 2.40 | 2.39 | 2.39 |
rugpt3-small | 2.38 | 2.38 | 2.36 | 2.37 | 2.38 | 2.36 | 2.36 | 2.37 | 2.36 |
rugpt3-medium | 4.41 | 4.38 | 4.39 | 4.39 | 4.38 | 4.38 | 4.41 | 4.39 | 4.39 |
rugpt3-large | 7.49 | 7.49 | 7.50 | 7.50 | 7.49 | 7.49 | 7.51 | 7.50 | 7.50 |
GPU RAM usage, GB
Для измерения скорости инференса мы запускаем контейнер с 2000 записями в качестве входных данных с размером батча 32. Во всех задачах размер батча 32 использует GPU почти на 100%. Чтобы оценить время инициализации, мы запускаем контейнер с инпутом размера 1. Скорость инференса равна (размер инпута = 2000) / (общее время - время инициализации). Повторяем процедуру 5 раз, берем медианное значение.
danetqa | muserc | parus | rcb | rucos | russe | rwsd | terra | lidirus | |
---|---|---|---|---|---|---|---|---|---|
rubert | 118 | 4 | 1070 | 295 | 9 | 226 | 102 | 297 | 165 |
rubert-conversational | 103 | 4 | 718 | 289 | 8 | 225 | 101 | 302 | 171 |
bert-multilingual | 90 | 4 | 451 | 194 | 7 | 164 | 85 | 195 | 136 |
rugpt3-small | 97 | 4 | 872 | 289 | 8 | 163 | 105 | 319 | 176 |
rugpt3-medium | 45 | 2 | 270 | 102 | 3 | 106 | 70 | 111 | 106 |
rugpt3-large | 27 | 1 | 137 | 53 | 2 | 75 | 49 | 61 | 69 |
Время инференса, примеров в секунду
Каждый диск на диаграмме ниже соответствует базовой модели из списка, площадь диска пропорционален использованию GPU RAM. по оси X - скорость инференса модели в записях в секунду, по оси Y - средняя оценка модели по 9 задачам Russian SuperGLUE.
rugpt3-small
обрабатывает ~200 примеров в секунду, тогда как rugpt3-large
— ~60 примеров/сек.bert-multilingual
чуть медленнее чем rubert*
из-за худшего русскоязычного токенизатора. bert-multilingual
разбивает тексты на большее число токенов, и ему требуется обработать более крупные батчи.rugpt3-medium
, rugpt3-large
работают чуть хуже чем меньшие rubert*
модели.rugpt3-large
большее число параметров, чем у rugpt3-medium
при этом она обучена за меньшее время и имеет более низкие результаты.