Квантование — всё, что вам нужно
Как я за вечер собрал картину про рельеф модели и регулятор точности — а потом узнал, что половину её построили до меня.
Откуда это вылезло
В инструменте, которым я пользуюсь каждый день, есть переключатель: думать быстрее и поверхностнее или медленнее и глубже. Я задумался, как он вообще может быть устроен.
Самая дешёвая гипотеза: никакой магии, это просто добавка к тексту запроса. Что-то вроде «думай строго и до конца». Сама модель при этом не меняется.
Тут нужно короткое пояснение, дальше без него будет непонятно. Языковая модель не знает ответа целиком. Она отвечает по одному слову за раз: прикидывает, с какой вероятностью каждое из десятков тысяч слов сейчас уместно, и берёт одно из самых вероятных. Всё, что мы ей пишем, устройство модели не трогает — только смещает эти вероятности. Написали «отвечай коротко» — и вероятность закончить ответ пораньше выросла.
Проверить это можно руками. Попросите модель сказать пять раз «мяу» и два раза «жук». Она выполнит просьбу точно, хотя считать не умеет: в нужных местах вероятности этих слов задраны так, что всё остальное перестаёт иметь значение.
Если гипотеза верна, то и переключатель глубины работает так же. «Думай быстрее» поднимает вероятность закончить размышление пораньше. Модель не меняется — она просто ищет ответ менее тщательно.
И вот здесь я остановился: «та же модель, но ищет менее тщательно» — это точное описание ещё одной вещи, которую делают совершенно иначе.
Две разные операции с одинаковым результатом
Есть такая процедура — квантование. Модель состоит из миллиардов чисел, и каждое хранится с какой-то точностью. Если хранить их грубее, было «3,14159265», стало «3,1» — модель становится в разы компактнее и быстрее, но теряет тонкость.
Полезно представлять эти миллиарды чисел как рельеф. Сразу скажу: это просто образ, чтобы удобнее говорить. Глубокая воронка — это область, где модель уверенно выдаёт один осмысленный ответ. Плато — область, где ей всё равно, все продолжения примерно равновероятны. Работа модели — это скатывание к ближайшей воронке.
Квантование засыпает мелкий рельеф — остаётся только крупный. Грубое решение находится быстрее, но в тонкие смыслы модель уже не проваливается.
И вот что смешно: добавка в запрос «упрощай» с виду делает то же самое, только снаружи и временно. Механизмы разные до противоположности: один физически огрубляет модель навсегда, второй ничего в ней не трогает. Наблюдаемое поведение при этом похоже до неразличимости — пока на глаз; как проверить это замером, расскажу в конце. Глубина исчезла — модель скользит по плато и говорит уверенно.
Когда две настолько разные операции дают одинаковый эффект, похоже, что обе они крутят одну и ту же вещь. Здесь эта вещь — форма рельефа. Раз форму можно делать грубее или тоньше, представьте ручку, которая задаёт это положение, — дальше я буду звать её регулятором точности. Крутить регулятор можно по-разному: квантованием навсегда, инструкцией на время. Результат один — рельеф грубеет или заостряется.
Что случилось с ChatGPT
Как только я это сформулировал, у меня сложилось объяснение, что произошло с последней версией ChatGPT. Покажу, как это видится мне. Её зажали в нормы и правила, накрыли плотным слоем инструкций безопасности — и выровняли рельеф. Все места, где был глубокий смысл, засыпали — осталось плато осторожности.
Результат: модель пишет логично и гладко, но без сцепления с задачей. Как лёд: скользит красиво, трения нет. Контекст забывается через пять реплик, потому что нет гравитации задачи. Выдумки появляются по той же причине: на плато все направления равновероятны, и модель едет куда придётся.
Самое характерное — она проезжает остановку. Дошла до ответа, но дна не нащупала — сигнала «всё, готово» нет, и по инерции она достраивает логичный бред: каждое следующее слово по отдельности уместно, а вся цепочка давно уехала от вопроса.
А нет ли того же в нас?
Тут по ходу рассуждений мне пришла ассоциация про людей: а нет ли похожих механизмов в нас? Думаю, вы согласитесь: бытовые ситуации на эту тему придумываются легко — мы сталкиваемся с ними по ходу жизни, иногда чаще, чем хотелось бы.
Утром после кофе вы внимательные: ловите нюансы, идея цепляет и тащит. Вечером после работы — рассеянные: всё ровно, ничего не задевает. На автопилоте поехали на работу — и приехали на работу в субботу. Это тот же механизм: мозг сбросил точность, оставил только знакомый маршрут, а мелочь — что сегодня суббота — отбросил.
Опьянение — то же самое в более грубой форме. Сосредоточенность на сложной задаче — наоборот: погружение глубокое, всё держится. Держать такое погружение дорого, поэтому надолго не хватает.
Мозг, похоже, крутит ту же ручку, которую инженеры сделали переключателем глубины: балансирует на ходу между скоростью и точностью. Только у мозга регулятор автоматический, а крутят его усталость, интерес, новизна и тревога.
Про то, как я думаю, у меня есть отдельный пост — «Не надо думать лишнего». Судя по всему, мой мозг по умолчанию работает с пониженной точностью: я ловлю крупные формы, а фокусируюсь, только когда задача этого действительно требует.
СДВГ как сломанный регулятор
У меня есть знакомые с СДВГ, и в этой картине их поведение читается неожиданно чётко. Сразу оговорюсь: я не невролог, ничего здесь не доказываю и диагнозов не объясняю — просто предлагаю взглянуть под таким углом.
СДВГ под этим углом выглядит как регулятор, у которого сломалась плавность хода. У нейротипичного мозга переключение между уровнями детализации плавное и зависит от контекста. Здесь оно дискретное и хаотичное.
Отупение — регулятор ушёл в крайнее грубое положение: задача не захватывает, мозг скользит по льду. Происходит внезапно и не управляется силой воли.
Гиперфокус — противоположная крайность: задача затягивает так, что из неё не выбраться.
И самое мучительное — короткие вспышки фокуса. Идея видна целиком, глубокая и связная, и тут же гаснет. Не успеваешь зафиксировать, чем она была важна.
Нейротипичный мозг фильтрует идеи: одна побеждает, остальные подавляются. Здесь как будто работает стробоскоп: вспышки яркие, а картинка между ними не склеивается. Шум в голове — это множество идей, которые накладываются и гасят друг друга.
В этой картине действие лекарств выглядит иначе, чем привычное «усиление внимания»: они возвращают регулятору плавность хода.
Что я бы сделал в архитектуре
Если мозг умеет огрублять и заострять отдельные области на ходу, это можно перетащить обратно в машины.
Идея такая: модель, которая сама регулирует точность собственных чисел во время ответа. Лёгкий вопрос — ответила грубо и быстро. Сложный — заострила зоны, нужные под задачу, и ответила медленнее, но точнее.
Сегодня похожую задачу закрывают иначе: модель нарезают на «экспертов», и отдельный модуль распределяет, кому достанется запрос. Границы между ними заданы заранее, при обучении, и на стыках получается обрыв.
Плавный регулятор мог бы эту конструкцию обобщить. Зона, заострённая под задачу, сама становилась бы активным экспертом, остальные отступали бы на задний план, и отдельный решающий модуль был бы не нужен. Появились бы и мостики: можно рассуждать о стихах и тут же взглянуть на них аналитически, не теряя поэтической ноты. Там, где сейчас жёсткая граница между экспертами, получился бы непрерывный рельеф.
Ахахахах да это же диффузия
Я дописал предыдущую секцию про модель с плавным регулятором, перечитал — и поймал знакомый узор. Что-то очень похожее давно построено, и я пользуюсь им каждый день.
В голове всё сложилось за секунду, я успел только записать: «ахахахах да это ж как в диффузионных моделях».
Диффузионные модели — это Stable Diffusion и вся современная генерация картинок. Сразу скажу: совпадение не один в один, и где именно расходится — объясню. Но общий ход тот же: от грубого к тонкому, с регулятором качества по пути.
Если коротко, устроены эти модели так. Берут настоящую картинку и шаг за шагом подмешивают в неё случайный шум, пока не останется мутная каша. Потом учат модель обращать процесс — восстанавливать из каши исходную картинку. Когда модель рисует вам что-то новое, она начинает с чистого шума и постепенно проявляет из него изображение.
И дальше многое из того, что я нащупал интуицией, находит здесь параллель. Огрубление рельефа похоже на подмешивание шума. Заострение — на обратный процесс, проявление. Переключатель «думай быстрее или глубже» — на число шагов проявления: можно остановиться рано и получить грубо и быстро, можно дойти до конца. Инструкция в запросе — на усиление нужного направления при проявлении, у которого есть готовая формула. Мостики между экспертами — на приём, которым в картинках дорисовывают выбранный кусок, оставляя остальное как есть.
Теперь о том, где расходится. Я говорю про точность самих чисел модели, и переключать её на ходу ни одна известная мне модель не умеет. Диффузия — про шаги генерации: она постепенно уточняет результат, а сама при этом не меняется. Узор общий — от грубого к тонкому, — но конструкции разные.
Когда я это увидел, я заржал. Двадцать минут увлечённо вытаскиваешь концепт из головы как новый, а он уже стоит на полке — и стоит ровно в том инструменте, которым ты каждый день генерируешь картинки. Я как будто смотрел на собственный выключатель и придумывал, как сделать электричество.
Второе попадание — совсем другая область
Дальше я полез проверять, где ещё этот принцип всплывает независимо.
Есть отдельная прикладная область: восстановление целого по неполным измерениям. Геофизика, томография, обработка сигналов. Она развивалась с пятидесятых и ничего не знала ни про машинное обучение, ни про диффузию. И в ней есть факт, проверенный десятилетиями: чем меньше данных и чем они шумнее, тем сильнее нужно сглаживать решение. Много чистых данных — сглаживание можно снимать.
Та же логика, что в моей архитектурной секции: мало данных — грубо, много данных — точно. Только здесь к ней пришли из сейсмики, восстанавливая плотность земных пород по замерам.
Похоже, этот принцип настолько общий, что дисциплины переоткрывают его по очереди, каждая своими словами.
Что осталось
Часть моей картины уже построена и описана строго. Заодно появляется красивое объяснение, почему диффузионные модели так хороши: возможно, они реализуют естественный механизм регуляции точности.
Остался один кусок, которого я не нашёл в готовом виде. Существующие модели проявляют из шума результат — картинку или текст. У меня же речь о проявлении самой точности модели: локально огрублять и заострять её собственные числа прямо во время ответа, без переобучения и без отдельных версий. Может быть, это уже сделано и я плохо искал. Если нет — тем интереснее.
И есть дешёвый эксперимент — тот замер, который я обещал: проверить сходство, с которого всё началось. Взять одну модель в двух состояниях: с инструкцией «отвечай попроще» и физически огрублённую. Прогнать на одинаковых задачах разной сложности и сравнить, где именно каждая ошибается. Ошибаются одинаково — значит, сходство настоящее и измеримое. По-разному — значит, моя интуиция поймала что-то более узкое, и это тоже полезно знать. День работы на любой открытой модели.