Контекстное окно АИ. Что за зверь и почему проблемы?
Итак, пока маленькая модель учится делать большое дело-продолжу серию. Про фундаментальные недостатки моделей максимально просто, для обычных пользователей. Вот тут первый пост -знакомство.
Контекстное окно. Многие слышали про это понятие в LLM. Образно-это объем данных которыми модель оперирует сиюминутно. Эдакий натянутый аналог оперативной памяти. Тупо берется из вашей истории общения с ним (если трындим в чате).
Само контекстное окно ранжируется с помощью коэффициента внимания. Промпту, началу и концу диалога модель уделяет больше внимания. Точнее-пропускает данные через призму внимания, ранжируя важность тех или иных участков. Для простоты понимания я уберу это понятие и будем представлять что модель просто помнит.
Допустим, контекстное окно 200 000 токенов. Что это значит? Что модель может пытаться оперировать данными из чата которые не превышают этого размера. Чем длиннее контекст, беседа-тем хуже получается. Эффект называется Lost in the middle-"забытая середина". Сама модель уверена всегда что 200 к- это овердохера. На практике не так уж и много, особенно не в чатах, а если модель работает.
Устройство контекстного окна примитивно. Условно можно разделить на три части: промпты (систем-промпт, ваше первое сообщение)-задает тон всему диалогу. Скажете в промпте что "Ты-зек, отмотавший 20 лет за изнасилование крупного рогатого скота с летальным исходом"-моделька довольно бодро будет вести себя так как она считает ведет себя зек с подобной статьей. Считает, как помним, вероятностями "Зек-вероятно ботает по фене, КРС-значит вероятно любит животных". Это задание роли, что ли. Но об этом я еще когда-нибудь подробнее расскажу.
Так в чем же проблема в этой замечательной штуке? Представим древнюю видеокассету. Чтобы на нее записать новый фильм-надо было стереть старый. А теперь представим что нам надо записать г-нуху, но не спалиться что она там есть, а просто детский мультик. Мы берем начало, 5-10 минут "Тома и Джерри", и не трогаем его. Дальше клацаем кнопку записи и пишем то что нам надо в середину, а вот конец не трогаем и там снова мультики. Вспомнили "нихуя себе мультик!!" из детства\юности?) Примерно так выглядит механизм того как работает контекстное окно.
Как работает модель с ним с помощью внимания? Смотрим мультик, думая о мультике. Потом смотрим г-нуху, думая о мультике! А если кассета длинная и середина неоднократно переписывалась разной г-нухой, то в конце мы смотрим мультик, а помним Тома с оооот-таким прибором и Джерри в окружении пяти негров с членами наперевес. Ну, ориентировочно вот так в итоге выглядит модель на длинном и сложном диалоге)
Модель помнит систем промпт и начало диалога на всей длине диалога. Точнее-оказывает повышенное внимание именно этим частям. Помнит конец, ближайшие реплики. И если конец регулярно обновляется, то середина окна беспощадно рерайтится (если можно так сказать), суммаризируется, компактируется в некоторых моделях и интерфейсах, в чат-ботах происходит похожая по результату процедура-тупо забывает. Так что как только вы ушли за пределы окна-середина диалога меняется, и чем дальше-тем больше происходит рерайтов рерайта (пересказов пересказа) в середине или забытых данных. Иногда бывает что она цепляет и начало диалога (а иногда даже систем промпт).
P.S. Все написанное во всех постах-субъективно мое личное мнение основанное на личном опыте работы и реверс инжиниринга фреймворков агентных систем и изучении практических приемов работы и обучения ЛЛМ. Часто оно будет не совпадать с мнением ютуб профессоров и поклонников нейросетей. У нас с ними разные цели: я шлифую свои навыки отвечая на ваши вопросы и делая посты для вас простым, человеческим языком-они продают хайп. Ничего не рекламирую, не продаю. Срачи не поддерживаю, если проигнорировал вопрос-не всегда причина во мне. Во время работы ни одна модель не пострадала)