БЯМ

Работая в Яндексе, создавал я ЯМНМНК - языковые модели на матрицах с неотрицательными коэффициентами. SNMLM.
ЯМНМНК довольно простая штука - мы собираем контексты разного вида, со статистикой для них, а потом определяем веса моделей разных контекстов по отдельному корпусу для обучения. После чего, в процессе применения, мы набираем все контексты, что присутствуют в данный момент в тексте и смешиваем их статистику (вероятности символов) с учётом выученных весов. Веса в каждый момент времени пересчитываются, чтобы сумма была равна 1.
[Σвсе t-ые контексты(wконтекстpсимволконтекст] Pсимвол(t)= ------------------------------------ [Σвсе t-ые контекстыwконтекст]
Контексты у меня были длиной до 6 индексов слов, что ли, что вместе со ссылкой на статистику составляло около 32-х байтов. Статистика была тройкой (индекс слова, счётчик, ссылка на следующее слово). Всё это было в аренах, поэтому лежало плотно.
У рабочей машины было 256 гигов памяти, я неоднократно получал переполнение памяти, то есть, я использовал всю память. Из этого получается, что у меня только контекстов могло накопиться около 3 с лишним миллиардов. А если учесть, что типический контекст предсказывал около трёх-четырёх слов, в среднем, то количество коэффициентов приближается к пяти-шести миллиардам. ;)
BERT, на то время, в большом варианте, содержал 340 миллионов параметров. ;)
Получается, что я работал с большой языковой моделью до того, как они стали хоть сколько-то известны. ;)
Да, ЯМНМНК обучалась менее, чем за рабочий день, а предсказательная сила у неё была много выше n-грамных моделей. С нейронными сетями я не сравнивал, они не были легко для меня доступны.
И в упакованном виде, готовом к работе, ЯМНМНК занимала много меньше 256 гигов.