Комментарии 8
Наша модель хотя и имеет миллиарды параметров, но вполне способна вместиться в одну домашнюю GPU:
Так какой объем VRAM ей требуется? Хватит 12 Гб у 3060?
А для сравнения, сколько BERT требует VRAM? Я пробовал ruBERT от DeepPavlov в Colab. На TPU работает, на GPU не запустился, вроде как не хватило памяти. Использовал, правда, не hugging face, а keras-bert. К сожалению, последний перестал (видимо, версия tf в колабе поменялась) работать в колабе на TPU (судя по всему, какие-то неподдерживающиеся ТПУ операции), поэтому было бы интересно попробовать вашу модель.
какой объем VRAM ей требуется? Хватит 12 Гб у 3060?
На всякий случай специально замерил: в загруженном состоянии модель изначально занимает примерно 2300 MB видеопамяти, при полноценном дообучении на RuCoLA — примерно 10 гигабайт (разумеется, в смешанной точности, но без больших хаков наподобие offloading). Должно хватить в вашем сетапе :)
сколько BERT требует VRAM?
Тут нужно учитывать, что вариаций BERT бывает много: скажем, есть RuRoBERTa-large, которая при обучении в сетапе выше потребляет примерно 7500 MB памяти, а есть rubert-tiny, которая весит десятки мегабайт и сравнительно быстро работает даже на CPU. При этом все модели имеют разный размер и уникальные сильные и слабые стороны; как я писал в посте, выбирать, что использовать, стоит исходя из задачи.
судя по всему, какие-то неподдерживающиеся ТПУ операции
Кстати, технически ничто действительно не мешает использовать и даже предобучать модель нашим кодом на TPU: в частности, в проектах sahajBERT и в особенности CALM волонтёры уже могли пользоваться TPU в рамках эксперимента (код есть в оригинальном репозитории).
Прошу прощения за оффтоп, но пользуясь близостью темы, задам насущный вопрос. Прошу прощения, если вопрос глупый, я ненастоящий датасайентист.
В transformers поддерживаются и tf, и pytorch. Но некоторые модели (тот же ruBERT) - чекпоинт pytorch, transformers их сам конвертирует в tf. Имеет ли это смысл, или лучше забить и попробовать всё делать на pytorch, если модель на pytorch? Особого глубокого смысла, почему я использовал tf/keras нет, просто так исторически сложилось.
В transformers есть разные классы для BERT (и других моделей): чисто энкодер, для MLM, для классификации итп итд. Пример использования вашей модели c huggingface:
model = AutoModelForMaskedLM.from_pretrained("yandex/RuLeanALBERT")
Я же могу использовать класс не
xxxForMaskedML
, а другой, например, для классификации? Или лучше свою голову классификации прикрутить, ведь там непонятный черный ящик с непонятными слоями...
Я бы не стал лишний раз конвертировать модели в TensorFlow без необходимости (скажем, без наличия inference-движка, опирающегося на модели в нужном формате): экосистема PyTorch на текущий момент гораздо богаче, а отличия с точки зрения производительности в стандартных ситуациях бывают в пользу каждого фреймворков и не всегда значимы. Более того, насколько я понимаю, поддержка TensorFlow в целом ослабевает в последнее время на фоне популярности PyTorch.
Использовать эти классы вы в целом действительно можете, но из-за деталей реализации модели (это всё-таки не обычный BERT) загрузить RuLeanALBERT в AutoModel у вас пока что не получится. В качестве решения на текущий момент вы можете использовать реализацию
LeanAlbertForSequenceClassification
из кода, который мы выложили: общий интерфейс там такой же, как уAutoModel
, и, как видно из кода обучения, всё прекрасно работает вместе с классомTrainer
изtransformers
.
в процессе реализации дообучения мы обнаружили ряд проблем в разметке отдельных задач RuRussianSuperGLUEМ
Добрый день. Можете пояснить какие проблемы там были обнаружены?
На HF Hub у вас лежит только файл модели. Это правильно? Разве там не должен быть рядом сложен vocab и конфиги для токенайзера?
??подход децентрализации в обучении давно просился, это отличный вектор, спасибо!
Можете пояснить какие проблемы там были обнаружены?
В случае с датасетами RUSSE и RuCoS, в которых надо ответить сущностью или что-то сказать о смысле слова из предложения, я заметил ряд проблем с соответствием сущностей и сегментов, которые им сопоставлены: например, сегменты включают в себя пунктуацию, пробелы или вообще не те слова, которые должны в них находиться. Это вредит чистоте данных, а соответственно, и качеству моделей: в коде (например, тут) более детально описана суть проблем и исправления, которые применяются при подготовке данных. Как можно видеть по лидерборду, подобные исправления для RUSSE сделали наше решение лучшим по сравнению со всеми другими ML-методами.
На HF Hub у вас лежит только файл модели. Это правильно? Разве там не должен быть рядом сложен vocab и конфиги для токенайзера?
Кажется, всё нужное на месте: по этой ссылке находятся файлы токенизатора (как написано в инструкции на GitHub, они лежат в отдельной папке).
Интересно почему Яндекс не сделает свой открытый датасет?
Самая большая BERT-подобная модель на русском, которая поместится на ваш компьютер