Объясню без терминов, чем мы занимаемся и почему это не очередное «сжатие модели».
Языковая модель — это очень длинный список чисел. Каждое число называется весом, и обычно на него отводят шестнадцать бит. Модель на двадцать семь миллиардов весов в таком виде занимает больше пятидесяти гигабайт, и чтобы она отвечала быстро, её держат в памяти видеокарты. Отсюда всё остальное: дорогие карты, аренда, облако, ваши документы на чужом сервере и счёт в конце месяца.
Мы храним вес тремя состояниями: минус один, ноль, плюс один. Меньше двух бит вместо шестнадцати. Та же модель занимает около семи гигабайт и помещается в обычную домашнюю видеокарту, а модель поменьше — в триста шестьдесят семь мегабайт, то есть в любое устройство с процессором.
Сжимать умеют многие, и обычно это разовая операция: файл ужали, качество просело, живём с тем, что вышло. Троичный вес интереснее тем, что меняет сам способ считать. Умножение на минус один, ноль и плюс один — это не умножение, а сложение и пропуск. Обычный процессор делает такое быстро, безо всякой видеокарты.
Отсюда наш сервер: модель верхнего класса, отвечающая двадцать восемь токенов в секунду на правке кода, работает на процессорной машине без единой видеокарты. Принято считать, что так не бывает. Я сам так считал до того, как замерил.
Но важнее скорости другое, и это главное, ради чего всё затевалось. Все опубликованные в мире троичные модели во время обучения держат рядом обычную копию каждого веса — иначе их не научить, — а после обучения замораживают навсегда. Значит дообучить такую модель у заказчика нельзя: нужна та самая тяжёлая копия и видеокарта под неё. Мы учим иначе: целыми счётчиками, по байту на вес, без копии вообще. Поэтому наша модель продолжает учиться там, где стоит. Характер и знания компании запекаются за двадцать минут на бытовой карте, и данные никуда не уезжают.
Платим мы за это двумя вещами, и обе называю сразу. Троичное обучение требует примерно втрое больше текста — это плата за отказ от тяжёлых копий, и она меня устраивает: текст дешевле железа. И в трит помещается не всё: маленькая модель физически не может держать много фактов, сколько её ни учи. Это не лечится усердием, это стена.
Поэтому знания у нас лежат снаружи, в справочнике, который модель читает. Оказалось, что это не обходной манёвр, а преимущество: устаревший факт правится за минуту, как строка в документе. В обычной модели тот же факт правится переобучением. Разница между работой на минуту и работой на неделю — вот, собственно, и весь наш продукт, если коротко.
Андрей Рощупкин