LINUX.ORG.RU

Шпаргалка о том, как LLM устроены на самом деле

 


1

2

Господа и дамы! Товарищи! Почитал я ветки в разделе AI и немного удивился. Потом удивился ещё раз и протёр глаза. Подумал. И решил написать серию постов, которые по-крайней мере определят общую терминологию и её понимание. Иначе, сваливание данного раздела в шаманизм только вопрос времени. Итак начинаем.

Как работает языковая модель (ChatGPT, Claude, Kimi и т.д.)

Шпаргалка о том, как LLM устроены на самом деле. Выкладываю частями, номера разделов сквозные. Цель - дать общий язык для споров про «кванты», «контекст» и «параметры», которые обычно идут на ощущениях. Немного наивно сначала, и по детски, но так проще.

Правило ноль: «нейросеть» — это не одна машина

«Нейросеть» - это не устройство, а способ обучения: машине показывают миллионы примеров, и она сама подстраивает свои внутренние настройки. А вот что за машина получится — зависит от чертежа (его называют архитектурой). Текстовая модель, генератор картинок и распознаватель голоса построены по разным чертежам, как паровоз, вертолёт и моторная лодка: всё это «двигатели», но оценивать их одной цифрой — бессмыслица. Поэтому фраза «все нейросети на одно лицо» - примерно как «весь транспорт одинаковый».

Сначала определение: что это физически - файл? программа? база данных?

Короткая сказка, а потом по делу.

Жил-был механический писец - кукла из тысяч пружинок и рычажков: завёл ключом, и она пишет письмо. Загадка: внутри куклы нет ни одной записки с текстом. Откуда она «знает», как писать? А ниоткуда не знает: вся её наука — в том, насколько туго затянута каждая пружинка. Мастер настраивал её годами: подтянул одну пружинку на волосок, ослабил другую, завёл, поглядел, какие буквы вышли кривыми, — и снова за ключ. Однажды натяжения подобрались так, что кукла стала писать складно. Спросите у неё: «Где у тебя хранятся письма?» - нигде. Письма не хранятся — они получаются при каждом заводе из правильно натянутых пружинок.

Нейросеть - та же кукла, только: пружинок не тысячи, а миллиарды. Каждая «пружинка» - просто число («насколько сильно эта деталь давит на соседнюю»). Заводит механизм отдельная программа - назовём её «движок». А «мастер, который годами подтягивал», — это обучение. (Дальше в шпаргалке пружинки будут называться «ручками» и «настройками»: ручка — то же самое, число, которое куда-то выставлено.)

Теперь по частым догадкам:

«Нейросеть - это файл с данными?» — Да, но не обычный. Обученная нейросеть — гигантский файл, в котором перечислены натяжения всех пружинок: миллиарды чисел, и ничего кроме чисел. «Прочитать» его нельзя: это не текст и не записи, это таблица «какая пружинка насколько затянута».

«Нейросеть - это исполняемый файл?» — Нет. В файле нет ни одной команды — только таблица натяжений, исполнять нечего. Прокручивает механизм отдельная программа, движок (llama.cpp — как раз движок): она читает таблицу, выставляет по ней все пружинки и прогоняет ваш текст сквозь механизм, деталь за деталью. Вся «работа нейросети» — гигантский пересчёт того, как пружинки давят друг на друга, ничего больше. Один и тот же движок годится любой кукле: разные модели — это разные таблицы натяжений, а не разные механизмы. (Вот почему «скачал модель» и «запустил в llama.cpp» — два разных действия: скачали таблицу натяжений, а приводит механизм в движение движок.)

«Нейросеть - база данных?» — Нет. В базе данных каждая запись лежит на полке, и её можно снять и прочитать. В таблице натяжений полок нет: нельзя «найти» в ней ни один из текстов, по которым мастер учил куклу. Кукла не помнит свои учебники — она умеет писать похожее на них.

«Нейросеть - это способ записи знаний?» — Нет, способ настройки знаний. Знания в ней не записаны — они в натяжениях. Как умение велосипедиста: оно в мышцах, а не в дневнике, и текстом его не прописать.

«А где крутят ручки?» — Только при обучении, и крутит их программа-тренер. Показать кукле пример - посмотреть, что она написала - сравнить с правильным - подтянуть или ослабить каждую из миллиардов пружинок на волосок в сторону «чтобы вышло правильнее» - взять следующий пример. Триллионы таких микро-подтяжек - и однажды натяжения становятся «умными». Когда вы общаетесь с готовой моделью, никто ничего не крутит: пружинки застыли, движок лишь гоняет ваш текст сквозь них.

Итого одной фразой: нейросеть - это файл с таблицей натяжений миллиардов пружинок плюс программа-движок, которая прокручивает эти пружинки сквозь ваш текст. «Знания» - не записи в файле, а то, что умеют правильно натянутые пружинки.

★

Последнее исправление: CrX (всего исправлений: 1)

1. Из чего она сделана

Внутри модели - миллиарды числовых настроек, представьте себе миллиарды маленьких ручек-регуляторов (специалисты зовут их «весами», а их количество — «параметрами»). Обучение — это когда все ручки разом подкручивают так, чтобы модель хорошо угадывала примеры из обучающей выборки. После обучения ручки замораживаются навсегда: когда вы общаетесь с моделью, она ничему у вас не учится и ничего в себе не меняет.

Отсюда два следствия:

  • «У модели 400 миллиардов параметров» - это размер органа, а не уровень интеллекта. Больше ручек не значит «умнее», как больше мышц не значит «умеет играть на скрипке».
  • Знания модели нельзя «выписать из неё на бумажку». Они размазаны по настройке всех миллиардов ручек сразу - как умение ездить на велосипеде: умеешь, но не можешь объяснить текстом.

2. Она не «думает ответ». Она угадывает продолжение

Модель не ищет ответ в базе данных - никакой базы внутри нет. Её единственная задача: глядя на весь текст до сих пор, угадать следующий кусочек (текст нарезается на обломки слов - «токены»; букв и слов в привычном виде модель не видит вообще). Написала кусочек - приложила его к тексту - угадывает следующий. И так тысячи раз.

«Понимание», «рассуждение», «знание» - это то, что получилось из миллиардов повторов этой простой операции на хороших текстах. Полезно держать в голове исходный контракт: модель всегда обязана продолжить текст. Сказать «стоп, я не знаю» она по устройству не может - и это прямой источник выдумок (см. раздел 8).

3. Контекст - это рабочий стол, а не память

Всё, что модель «помнит» в разговоре, - это просто текст переписки, лежащий перед ней. Представьте письменный стол: на нём ваш вопрос, её прошлые ответы, подложенные документы. Размер стола ограничен («окно контекста») - когда стол забит, старое с него смахивают.

Следствия, которые часто не осознают:

  • Стёрли чат - стёрли стол. В новом разговоре модель вас не помнит. Никак.
  • «Память» в продуктах типа ChatGPT - это не свойство модели, а отдельная записная книжка снаружи: перед ответом нужные записи просто подкладывают на стол текстом.
  • Большое окно контекста - не подвиг памяти, а просто большой стол. И большой стол сам по себе создаёт проблемы (раздел 6).

4. Как она «читает» стол: картотека и оглядывание

Чтобы написать следующий кусочек, модель оглядывает весь стол. Устроено это как сверка с картотекой, и вот её устройство - оно ещё понадобится.

Каждый фрагмент текста, попав на стол, регистрируется в картотеке - точнее, сразу в десятках картотек, по одной на слой модели. В каждой карточке две графы:

  • признак (специалисты говорят «ключ», K) - «по какому признаку меня искать»: как этот фрагмент отзывается, когда его зовут;
  • содержимое («значение», V) - «что я отдам, если посмотрели на меня».

А фрагмент, который пишется прямо сейчас, держит в руках запрос (Q): что он ищет. Он идёт по картотеке и сверяет запрос с признаками. Чем сильнее совпадение, тем больше «внимания» получает карточка. Итог: новый кусочек вбирает содержимое всех карточек - каждой в своей пропорции. Сам механизм так и называется - вниманием (attention).

Пример. Модель дописывает слово «она» во фразе «…она открыла дверь». Запрос у этого места - примерно «о ком речь?». Из всей картотеки сильнее всех отзывается признак слова «Мария» пятью строками выше - и содержимое «Мария» вливается в понимание местоимения. Умение строить нужные признаки и запросы - то, что натренировалось при обучении. «Магия LLM» живёт здесь.

И важная деталь напоследок: признак и содержимое — не сами слова, а числовые отпечатки, которые модель вычисляет из каждого фрагмента. Запомните слово «вычисляет» — на нём держится следующий раздел.

drbond ★
() автор топика
Ответ на: комментарий от drbond

5. Картотека разговора — то, что называют KV-кэшем

Теперь деталь, без которой не понять половину споров про «квантование контекста».

Почему «кэш». Признак и содержимое фрагмента не лежат в тексте готовыми — модель их вычисляет (набором умножений через ручки своего слоя). Но фрагмент, уже лежащий на столе, не меняется никогда - значит, вычисленные для него карточки всегда будут теми же самыми. Пересчитывать их при написании каждого следующего кусочка - тысячи раз повторять одну и ту же работу. Поэтому сервер делает то, что делает любой компьютер с уже сделанной работой: вычислил один раз - сохранил - переиспользует. Такой запас вычисленного «на потом» и называется кэшем (как кэш браузера сохраняет картинки сайта, чтобы не скачивать заново). «KV» - просто имена двух граф карточки: признак (K) и содержимое (V). KV-кэш - это сохранённая картотека всего разговора.

Кстати, пауза перед первым словом ответа - это и есть заполнение картотеки: сервер один раз честно читает всё, что вы прислали, и вычисляет карточки. Дальше он пишет ответ, добавляя по карточке на каждое новое слово.

Где это лежит физически. В памяти машины, которая крутит модель, - как правило, прямо в видеопамяти графического процессора (GPU), рядом с весами модели: в картотеку заглядывают при написании каждого кусочка, и держать её далеко - тормозить на каждом слове. И у каждого разговора картотека своя: сто одновременных пользователей - сто растущих стопок карточек.

Три свойства этой стопки объясняют всё остальное:

  • Она огромна относительно текста. По карточке в каждой из десятков картотек на каждый фрагмент - в тысячи раз больше места, чем сам текст. У больших классических моделей на длинном разговоре картотека может весить больше, чем вся модель целиком.
  • Она растёт вместе с разговором. Текст удвоился - карточек вдвое. Когда говорят «длинный контекст дорог», дорога именно эта стопка.
  • Она одноразовая. Кончился разговор - картотека выброшена; новый чат - стопка с нуля. А если память сервера кончилась раньше конца разговора, старые карточки приходится смахивать - и модель «забывает» начало.

6. Почему длинный контекст — зона риска сам по себе

Здесь две отдельные вещи, которые в спорах постоянно склеивают в одну.

Первая - устройство чтения. У классических моделей картотека из раздела 5 спасает от медленного перечитывания, но не от роста самой стопки: она линейно растёт с текстом. Поэтому существуют другие чертежи: гибридные модели, где большая часть слоёв ведёт конспект - сводку прочитанного фиксированного размера, которая вообще не растёт с длиной текста (как у Kimi-Linear: три четверти слоёв «по конспекту», четверть - с обычной картотекой и оглядыванием). Конспект дешёвый, но из него нельзя достать дословную цитату - только «помню в целом». Это другой механизм работы с тем же «1M контекста», не лучше и не хуже - другой.

Вторая - качество. Длинный забитый стол деградирует у любых моделей, даже без всякой экономии: внимание «размазывается», середину текста модель начинает терять (это известный эффект: начало и конец списка помнятся, середина плывёт). Человек, листавший 800 страниц подряд, ведёт себя так же. Так что «на максимальном контексте многошаговая работа рискованна» — верно. Но причина — устройство чтения, а не округление чисел (следующий раздел).

drbond ★
() автор топика
Ответ на: комментарий от drbond

7. Квантование - это округление чисел. Два объекта, две отдельные цены (часть 1 из 2)

Что это вообще такое

«Проквантую в q8» звучит как заклинание, а по сути это просто хранение чисел с меньшей точностью: как цены можно хранить до копейки, а можно с округлением до рубля - чек почти не изменится, но в банковском проценте за год накопится ошибка.

Сначала о шкале. qN — это сколько битов остаётся на одно число. Родная точность — 16 бит, и у ручек, и у карточек: «q16» как отдельный режим не существует, это и есть исходник, от которого отсчитывают вниз. q8 — вдвое меньше места на число, q4 — вчетверо; чем меньше цифра, тем грубее округление и больше экономия. Вверх лестница не идёт: переписывание «37.2» как «37.2000» точности не добавляет - измеренных цифр больше не становится. (Карточки не исключение: даже их «родные» 16 бит - уже лёгкое округление относительно арифметики, которой внимание считает; модель цифры тоньше не различает.)

Округлять можно два разных объекта. Дальше они разобраны по отдельности, потому что у них разные цены.

Объект первый: ручки (веса модели)

Ручки одинаковы для всех и не зависят от разговора. Их округляют, чтобы модель влезла в память сервера. До умеренных уровней (q8, и даже q4) почти безвредно; цена равномерная, «на всех». Именно это обычно имеют в виду, когда говорят «скачал модель в квантовании».

Объект второй: картотека (KV-кэш)

А вот объект, о котором идут споры про «квантование контекста», - поэтому подробнее.

Каждое число в каждой карточке (раздел 4) изначально записывается 16-битным. Округлить картотеку в q8 — значит хранить эти числа 8-битными: стопка занимает вдвое меньше памяти сервера, в ту же память влезает больше длинных разговоров. Цена ошибки двоякая:

  • ошибка в графе «по какому признаку меня искать» сдвигает, куда модель посмотрит. Механизм, превращающий сравнения в «распределение взглядов», резко усиливает мелкие огрехи;
  • ошибка в графе «что я отдам» пачкает взятое: каждое заимствование чуть искажено, а на длинном разговоре их (заимствований) тысячи - кривая копится.

Главное свойство: цена растёт вместе с длиной разговора, потому что стопка у каждого разговора своя. На q8 даже длинные тексты почти неотличимы от родных 16 бит. Измеримая плата начинается с q4 — прежде всего - «найди иголку в стоге сена». И на многошаговых задачах, где надо удержать много точных ссылок. Смягчающие приёмы (масштаб на каждую графу, свежие карточки в полных 16 битах — округляются только старые) оттягивают деградацию. На коротких разговорах округлять картотеку вообще бессмысленно: стопка мала и без того.

(Окончание раздела 7 — в следующем посте.)

drbond ★
() автор топика
Ответ на: комментарий от drbond

7. Квантование — это округление чисел (часть 2 из 2: разбор фразы)

Разбор фразы «возьму модель с 1M контекста, проквантую контекст хоть в q8 — не вывезет»

Переведём её с заклинательного на механический - по шагам и строго через картотеку.

Шаг 1. Что вообще значит «проквантую контекст». Для оглядывания контекст существует не как текст, а как картотека (раздел 5). Значит, фраза означает: округлить карточки картотеки. Больше ничего «квантование контекста» не означает; ручки модели тут ни при чём.

Шаг 2. Что значит «в q8». Карточки изначально лежат в 16 битах; q8 - перезаписать их 8-битными. Вся операция - «16 → 8», первая и самая мягкая ступень вниз от исходника. Мягче бывает только одно: не округлять вовсе. «Хоть в q8» звучит как «дожму до предела», но предел не достигнут - под этой ступенью ещё q5, q4, q3, q2.

Шаг 3. Что операция даёт и чего стоит. Даёт: стопку вдвое меньше, больше длинных разговоров в той же памяти. Стоит: слегка сдвинутые взгляды и слегка испачканные заимствования - на q8 почти неотличимо от родных 16 бит даже на длинных текстах. «Не вывезет» становится обоснованным опасением начиная с q4 и ниже.

Шаг 4. А если модель — гибрид. У Kimi-Linear карточки есть только у четверти слоёв; остальной контекст живёт в конспекте фиксированного размера (раздел 6), где карточек «на каждый фрагмент» просто нет — перезаписывать 16 → 8 там нечего. На такой модели операция «проквантую контекст» затрагивает малую долю всей контекстной машинерии.

Вердикт. «Не вывезет» из этой операции не следует: на q8 - почти неотличимо, на гибриде - почти нечего округлять. Сама интуиция «заполненный 1M + многошаговая задача = опасно» верна, но по другой причине: растяжение внимания на длинном столе (раздел 6), которое никуда не девается и на родных 16 битах. Опасной фраза стала бы в редакции «проквантую в q4 и загоню многошаговую задачу на заполненный 1M» - вот там два риска перемножаются.

И правило на будущее: цифра «q8» сама по себе - не ответ. Ответ начинается с «какая архитектура», «что округляем - ручки или картотеку» и «с 16 до 8 или с 16 до 4».

drbond ★
() автор топика
Ответ на: комментарий от drbond

8. Почему она уверенно выдумывает

Модель обязана продолжить текст и не имеет внутреннего датчика «я не знаю». Если данных не хватает, она не молчит - она генерирует самое правдоподобное продолжение. Правдоподобное и правдивое - разные вещи: выдуманная ссылка выглядит в точности как настоящая, потому что модель видела тысячи настоящих. Отсюда практическое правило: факты, цифры, цитаты, имена - проверять снаружи; модель - собеседник-эрудит с скверной памятью на детали, а не справочник.

9. Почему ответы каждый раз разные

На каждом шаге модель имеет список продолжений с вероятностями («в 60% случаев дальше идёт это, в 3% — вот это») и выбирает из него с элементом случайности, примерно с броском кубика. Это настройка («температура»). Поэтому повторный вопрос даёт другой ответ - не потому что модель «передумала» или «устала», а потому что кубик. Там, где нужна одинаковая воспроизводимость, кубик выкручивают в ноль.

10. Модель не видит себя изнутри

У модели нет приборов о собственном состоянии. Она не знает, квантована ли она, сколько у неё параметров, насколько заполнился её стол и «поплыла» ли она в этом разговоре. Если спросить её об этом — она ответит, но это будет такой же сгенерированный текст-угадывание, как и любой другой: правдоподобный, а не измеренный. «Спроси у модели, всё ли с ней в порядке» — не измерение. Измерение - внешний контроль: тесты, задачи с известным ответом.

11. Агенты: почему многошаговая работа страдает от округления первой

Слово «агент» звучит громко, а устроено скромно, поэтому сначала определение.

Агент - это та же модель, замкнутая в рабочий цикл с инструментами. Ей ставят задачу — «почини падающий тест» - и она сама: составляет план → вызывает инструмент (прочитать файл, выполнить команду) → читает результат → решает, что делать дальше → снова вызывает. Десятки и сотни циклов, пока не решит, что готово. Никакой новой магии внутри: тот же угадыватель продолжения из раздела 2, только его ответы превращаются в действия, а результаты действий подкладываются обратно на стол.

Главное свойство агентной работы: качество задачи - это качество шага, возведённое в степень числа шагов. Одиночный вопрос в чате стал чуть хуже - и ответ чуть хуже. У агента сотни мелких решений подряд, и осечка любого портит все следующие. Арифметика для масштаба: если каждый шаг выходит идеально с вероятностью 99%, то за 200 шагов хотя бы одна осечка случится с вероятностью около 87% (математика: 0,99²⁰⁰ ≈ 0,13 - шанс дойти до конца без единой). Не каждая осечка фатальна - часть агент замечает и чинит сам, - но направление ясное: маленькая просадка шага превращается в большую просадку задачи.

Округление ручек бьёт по рассуждениям и дисциплине. Знание фактов размазано по объёму модели и округление переживает легко (разделы 1 и 7); цепочка рассуждений - нет: мелкий огрех на шаге три портит шаг четыре. Для чата это «ответ чуть хуже»; для агента - «вызвал не тот инструмент», «неверно прочитал результат», «план развалился в середине». Первыми при грубом округлении ручек плывут и формы: точные имена инструментов, структуры вызовов, следование протоколу. В чате кривой вызов - помарка; для агента - сломанное действие, у которого есть цена.

Округление картотеки бьёт по точному извлечению на длинном столе. Цена ошибки картотеки растёт с длиной разговора (раздел 7), а агент живёт на длинных столах: выхлопы инструментов, листинги файлов, логи - стол пухнет на десятки тысяч токенов за считанные циклы. И главное его движение - «найти ровно то»: строку, в которой определена функция; обещание, данное сорок шагов назад; тест, который уже прогоняли. Это буквально «иголка в стоге сена» - ровно то, что грубое округление картотеки теряет первым.

А теперь всё одновременно. Длинная агентская задача - это длинный разговор (накопились ошибки картотеки) × сотни шагов рассуждений (копятся ошибки ручек) × свежий бросок кубика на каждом шаге (раздел 9) × и никто, включая саму модель, не видит, что качество поплыло (раздел 10). Риски не складываются - они перемножаются. Отсюда и справедливость реплики «при агентном использовании всё очень видно»: агент - увеличительное стекло для любых потерь точности, чат - нет.

Что из этого следует практически:

  • нижняя разумная планка для агентных задач — q8 по обоим объектам; q4 ручек - только после проверки на своих цепочках (общие бенчмарки агентскую просадку почти не показывают — она видна на длинных цепочках), q4 картотеки на длинном столе - почти гарантированные «потерянные иголки»;
  • точность - не единственный рычаг, и часто не главный: дисциплина стола бьёт точность карточек. Состояние - выносить в файлы, на стол подкладывать только нужное (короче стол - меньше накопления ошибок при любой точности), задачу - резать на короткие циклы (меньше шагов в цепочке - ниже степень);
  • внешний контроль обязателен, и он должен проверять суть, а не букву: модель, которой поставили условие «тесты должны проходить», честно напишет пачку тестов с пустыми телами - проходить они будут идеально. «Правдоподобное ≠ правдивое» из раздела 8 превращается у агентов в «исполненное буквально ≠ сделанное».

12. Про генераторы картинок — чтобы не путать

Диффузионные модели (Midjourney, Stable Diffusion) — другое семейство с другим чертежом: они учились не продолжать текст, а убирать шум из картинки, и генерируют изображение серией проходов «прояснения из кляксы». С текстовыми моделями их роднит только способ обучения (подстройка ручек на примерах). Устройство, слабые места и способы их ломать — полностью разные.

drbond ★
() автор топика
Ответ на: комментарий от drbond

если будет необходимость - перенесу в статьи.

оно не переносится, насколько я знаю..

aol ★★★★★
()
Ответ на: комментарий от drbond

Мини-словарь для разговора

  • Токен - кусочек слова, мельчайшая «буква» мира модели.
  • Параметры (веса) - они же «пружинки» из сказки в определении: замороженные после обучения числовые настройки; их количество — размер, а не интеллект.
  • Обучение / использование - месяцы подкручивания ручек на кластерах / секундная работа с замороженными ручками; при использовании модель не учится.
  • Контекст (окно контекста) - рабочий стол: всё, что лежит перед моделью прямо сейчас; вне стола для неё ничего нет.
  • Внимание — сверка запроса нового фрагмента с признаками всех остальных: «на что смотреть на столе» при написании каждого кусочка.
  • KV-кэш (картотека) - стопка карточек «по какому признаку меня искать / что я отдам», вычисленных моделью о каждом фрагменте разговора, чтобы не пересчитывать их заново; хранится в памяти сервера рядом с весами, растёт с длиной текста, выбрасывается с концом разговора.
  • Конспект (линейное внимание) - альтернатива растущей стопке карточек: сводка фиксированного размера; дешевле, но без дословных цитат; у гибридов обе механики смешаны.
  • Квантование весов - округление ручек модели ради памяти; одно на всех, почти безопасно до q4–q8.
  • Квантование KV-кэша - округление карточек картотеки ради вместимости; цена ошибки растёт с длиной текста, q8 мягко, q4 заметно.
  • qN (шкала квантования) - сколько битов остаётся на одно число: родная точность 16 бит, q8 — вдвое меньше места, q4 - вчетверо; «q16» - не режим, а исходник.
  • Температура - «сила кубика» при выборе продолжения.
  • Галлюцинация - правдоподобное продолжение там, где честным ответом было бы «не знаю».
  • Агент - модель, замкнутая в цикл с инструментами: сама планирует, вызывает инструменты, читает результаты и решает, что делать дальше; качество задачи - качество шага в степени числа шагов, поэтому потери точности обоих видов видны на агентах первыми.

Желательно помнить для любых споров про нейросети

Один параметр (контекст, миллиарды, q8, версия) почти никогда ничего не решает. Достойный вопрос всегда звучит так: «какая там архитектура и какой именно механизм ограничивает или страдает?» - потому что за одинаковыми цифрами у разных моделей стоят совершенно разные машины. «Проквантую контекст в q8» - фраза без содержания, пока не названо, что за контекстная механика у этой модели и что именно округляют: ручки или картотеку.

Приложение: примеры - типовые реплики из форумных споров

Пример 1. «Q4 - это примерно 90% от исходной модели, Q3 - 70%, Q2 - половина»

Первый вопрос: процент - от чего? Не названа ни метрика, ни задача, ни модель. Перед нами скалярная модель качества: будто у модели есть один-единственный уровень «умности», и квант просто умножает его на коэффициент. Ломается такая модель от одного встречного вопроса: «Тогда модель на 16 млрд параметров в q8 должна уверенно обыгрывать ту же модель на 32 млрд в q4?» Ответ - «иногда да, иногда нет, зависит от задачи», но скалярная модель не может дать такого ответа в принципе: у неё нет переменных, в которых он записался бы.

Как звучал бы разбор по механизму: качество - не одно число. Знание фактов живёт в объёме модели и округление переживает легко. Связность многошаговых рассуждений - цепочка, где мелкий огрех на шаге три портит шаг четыре (разделы 1 и 7). Поэтому «сколько процентов модели осталось» - вопрос без ответа, а «какая способность падает первой при таком округлении» - вопрос с ответом.

Пример 2. «Ниже 4 бит - полное дно» против «в двух битах не хуже облачной, проверял на бенчмарках»

Две реплики из одного спора, произнесённые с одинаковой уверенностью - и с одинаковым обоснованием: один прогон на своих задачах, без повторов, с незафиксированным «кубиком» (раздел 9), без названной метрики. Это то же «правдоподобное вместо измеренного» из раздела 10, только не модель рассказывает о себе, а человек - о своём опыте.

Показательно, что правдоподобны обе: на коротких вопросах двухбитная модель действительно может казаться неотличимой от полноценной, а на многошаговой агентной задаче - разваливаться. Истина именно в этом разделении, и её в споре почти нащупал третий участник: «а разница — в общих знаниях или в способности рассуждать? при агентном использовании всё очень видно». Это и есть правильный вопрос из финального правила: не «сколько процентов», а «какой механизм страдает» (почему именно агентам от этого больнее всего - раздел 11).

Пример 3. Ветка из двадцати сообщений про контексты в 128–256 тысяч токенов - без единого слова о картотеке

Типовой спор: «на каком кванте модель перестаёт тупить» - при том, что все участники ежедневно работают с контекстами в сотни тысяч токенов. Слово «кэш» не встречается ни разу. А между тем на таких длинах деградирует само чтение длинного стола (раздел 6) - даже на полных, неквантованных весах, - и её очень легко приписать «кванту», который в такой постановке ни при чём.

Больше того: «квант» в таких спорах - монолит, хотя округлять можно два разных объекта (раздел 7): ручки, о которых все и говорят, и картотеку, о которой не говорит никто. Получается спор о цифрах при отсутствии словаря для главного вопроса - «что именно округляем?»

Пример 4. «Вот вам бенчмарк: написать starfield на ассемблере Z80 - одна версия справляется, другая забивает контекст»

Один эксцентричный таск, один прогон, один бросок кубика. Для личного выбора «что оставить на своей машине» - честный сигнал. Для публичного утверждения «модель X тупит» - нет: разброс между прогонами одной и той же модели на одной и той же задаче (раздел 9) запросто съест наблюдаемую разницу. Хочется сравнивать публично - прогоняется фиксированный набор задач, несколько раз, на одинаковых настройках, и публикуются средние. Это ровно раздел 10: измерение - внешний контроль, а не впечатление.

Что общего у всех четырёх

Ни в одном таком споре не звучат два вопроса - «какая архитектура?» и «что именно округляем?» — хотя ответ зависит только от них. Зато все уверенно оперируют цифрами шкалы qN (раздел 7), которую сами же не определяли. Спор без этих двух вопросов - это соревнование впечатлений, а не поиск ответа.

drbond ★
() автор топика

Не, ну ты крут, я даже себя узнал ). Только ты ещё не учитываешь контекст. Когда мы говорим про квантование модели - обычно про квантование кэша никто и не думает и KV там всегда умолчательный обычно. Просто два бита модель сама по себе уже не сможет своими пружинками контекст удерживать - её будет рвать на длинных задачах. А когда мы говорим про квантование кэша - это уже для 90% уровень эксперта (здесь надо разобраться в вопросе). И я бы поспорил, что KV в q8 почти не отличим от оригинала. Офигеть как зависит от модели. На q4_1 глюкалово может начаться после первого же вопроса (это я проверял). Народный Qwen 3.8-27b здоровски, кстати, страдает от квантования кэша - он очень сильно полагается на рассуждения. Kimi Linear вот вроде и квантовать то особо нечего, а когда KV в q4 иногда после третьего-четвертого шага начинает нести черти-что. Поэтому вроде как есть эмпирические цифры q4 - сама модель, q8 - KV, а все остальное тестируйте сами и не удивляйтесь, что результат отличается от ожидаемого. ИМХО. А есть ещё всякие Unsloth Dynamic, да и тот же Bartowski квантует модели когда - там Q4K_M не совсем тот, что подразумевался изначально при наименовании. И в этих случаях там может оказаться так, что в Q3 лежат то, что в общем не особо страдает, а важные вещи иногда остаются у модели даже в родных 16 битах.

Сложная это тема, в общем, и в двух словах не объяснить. Но слог офигенен, мне понравился.

lonelywoolf
()
Последнее исправление: lonelywoolf (всего исправлений: 1)
Ответ на: комментарий от lonelywoolf

А когда мы говорим про квантование кэша - это уже для 90% уровень эксперта (здесь надо разобраться в вопросе).

Ну это самое простое - из текста выше - KV-кэш - это карточки на столе. Модель работает только с этими карточками и ничего другого не знает. Всё, что получает модель на вход проходит через стол. Абсолютно. В том числе и рассуждения модели в агентском цикле. А квант кэша - это зрение модели для выбора карточки. Чем больше цифра, тем чётче модель видит карточку. Чётче видно - точнее выбор, тем более правильные ручки модель использует для ответа, тем более правильным, с точки зрения спрашивающего будет ответ.

drbond ★
() автор топика
Ответ на: комментарий от drbond

Нет, из твоих пояснений вполне себе понятно. Я тут говорил к тому, что подавляющее большинство юзверей llama.cpp даже не запустит, а скачают какой-нить unsloth/hermes/lmstudio/etc

lonelywoolf
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария