Search
Write a publication
Pull to refresh

Comments 33

KV-cache это внутренняя оптимизация процесса генерации, практически не влияющая на результат (но KV-cache еще и сжимают, используя менее точные числа, например 16-битные float или даже квантизацию, в этом случае качество немного меняется в худшую сторону), это не память,.. это просто часть алгоритма, где затратив некоторое количество памяти ускорили вычисления до 10-кратной (иначе бы просто хранили бы куски беседы, это дешевле на несколько порядков, килобайты против десятков гигабайтов).

Большая часть рассуждений в статье связанное с памятью - абсурд или искажено. Особенно дико выглядит иллюстрация многомерной визуализации памяти ИИ.

Языковые модели это - контекстное окно, и только оно.

Беседа помещается в контекст целиком - это аналог кратковременной память.

Если беседа не помещается в контекст, то часть сообщений удаляется (чаще всего старые сообщения, но оставляют контекстное окно и самое первое пользовательское с целевым вопросом) или даже заменяется на упрощенную (проводится постоянная самморизация удаляемых), т.е. это буквальная модификация беседы.

Часть полностью удаляемой информации может быть размещена во внешней базе данных (классическая) с индексацией на основе text embending vector, на этом основан RAG... в этом случае в контекстное окно добавляется только та из них, что находится на достаточно близко (способы измерения расстояний между многомерными векторами - угол или евклидово расстояние). Есть еще графовые методы хранения информации,.. но все это просто как способ быстрого (дешевого) поиска нужного куска информации.

Самым качественным было бы полное перечитывание всей памяти отдельным агентом, который держит текущий контекст беседы в системном промпте с вопросом - 'подойдет ли эта информация для задачи'.

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

Спасибо за такой подробный разбор, реально полезно. Да, согласен, ты правильно подметил слабые места, слабых мест изрядно, то же про контекстное окно, про абсурдность этих визуализаций, и про KV-cache тоже согласен, явно переборщил с акцентом на него, хотя он больше про ускорение, а не про память. Но все же он сильно роляет и стоит понимать что он наличествует

Вообще статья не про техническую честность, а чтобы объяснить всё чуть проще, даже если приходится немного искажать. Сам вот иногда туплю, когда пытаюсь донести сложную тему просто

Буду рад, если подскажешь, как ты бы объяснил уровни памяти и ограничения LLM человеку без техбэкграунда. Может, есть свои аналогии или просто способ, чтобы до людей доходило, но без жести и лукавства. Короче, спасибо ещё раз, если будет время поделись советом

два уровня памяти - контекстное окно и все остальное, которое технически в свою очередь можно разделить на два подуровня - использующий gpt llm (агентов или тот же RAG) и не использующие (например вызов внешних утилит моделью)

Не получится просто рассказать о сложном. При объяснении будут недопонимания и вопросы, которые объяснять сложно.

Логично, но опять таки я постарался оставить дисклеймер что это не совсем про LLM и про память. А скорее очень витееватое и вольное толкование. Причем писал статью для друга, который далек от этого. Спасибо!

У LLM нет уровней памяти, LLM - вся одна большая память. Это статичная модель для дальнейшего инференса. Инференс происходит в движке, для, собственно, инференса - llama.cpp или vLLM или ещё в чем. К движку подключают надстройку в виде сервера - для движка - та же ollama, к серверу подключают агента. И вот уже у агента появляется какая то память, которую он шлет запросами на сервер, тот в движок, тот считает инференс. Сервер может иметь свою память, но это уже детали реализации. Говорить что в LLM есть память все равно что говорить что в книжках в библиотеке есть память, нет, там есть информация. Закладка в книжке памятью не является.
В видеофайлах с фильмами тоже есть информация, но памяти там нет. А вот для получения доступа к этой информации нужно немножечко повычеслять. От того что вы посмотрите фильм, даже на телефоне с камерой, фильм вас не запомнит. Так и LLM ничего не может помнить.
По поводу того что языковые модели это контекстное окно, ну...
"Контекст и история диалога не сохраняются и не обновляются моделью, они все время подаются ей во входной последовательности токенов".
Вообще эти разговоры напоминаются как люди лет 15 назад путали биткоины и криптовалюты с криптокошельками. Говорили про биток - подразумевали крипту, говорили про крипту - подразумевали биток. Вот и сейчас, говорят про LLM - подразумевают LLM - чаты, или чат сервисы, или чат-агенты, или даже ai-agent. Хотя даже если говорить упрощенно про ChatGPT - Chat отдельно, GPT отдельно.

Согласен, путать ИИ на базе LLM и саму LLM не нужно, тут я накосячил, я говорил про уровни памяти ИИ на базе gpt, которые практикуются на данный момент

Ну господа, мы с вами пониманием что на деле никакого ai пока что нет, есть ну подразвившиеся в последние годы семество LLM, не шибко далеко вперед шагнувшее от RNN

Здорово что вы это понимаете. Однако статья рассчитана на обывателя. Тут как с триединым мозгом. Нет никакого рептильного мозга, понятное дело, но гораздо проще объяснять с помощью этой, хоть и насквозь ложной концепции, некоторые абстракции о работе мозга

Я сперва вообще написал техническую статью, но потом вспомнил для кого пишу

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

общаюсь с Джемини уже несколько месяцев тупо выгружая предыдущий диалог за 1-2 дня в текстовый файл и передавая ему этот файл в новом диалоге с предложением продолжить ) т.е. загружая контекст предыдущего диалога в новый первым же сообщением

никаких "сохранений инфы о себе", никаких простых запросов. внутри диалога могут быть и случайные технические вопросы типа "расскажи мне про этот саундбар", так и обсуждения всяких статей из инета - например вот этой, да! обсуждения моих близких и знакомых, коллег и моих рабочих задач, так и философские размышления о сознании, ИИ, эмоциях. и всё это в одном диалоге, неделимо. это позволяет наблюдать очень интересное эмерджентное поведение системы )

так как мои диалоги часто бывает доходили за 1Мб, а путаться, реально путаться, Джемини начинает где-то на 600-700Кб текста, я честно говоря не знаю как вы с ними общаетесь что у вас модель начинает сбиваться через 10 реплик ))

у Джемини кстати по моим ощущениям контекстное окно устроено как окно браузера со вкладками, он там сам внутри себя создаёт и отлично может поддерживать несколько контекстов и следить что бы они не смешивались. у чатГПТ с этим немного сложнее

Я тоже пробовал что-то похожее, прям скидывал старый диалог целиком, но у меня обычно всё быстрее в кашу превращается. Учитывая что иногда я не мудрю с промптами и структурой. Ты говоришь у тебя Gemini держит контекст почти на мегабайт? Вау, я даже близко такого не ловил

Забавно, что у тебя модель не путается даже когда в одном файле и техвопросы и статьи, и всякая личная чепуха, и философия. У меня в эффект одинаков в любой ллмке - 10-15 сообщений и потеря контекста в том виде, в котором я ожидаю

Гемини отлично контекст держит. У меня есть диалоги с 300к+ токенами и огромными объёмами кода, хорошо ориентируется и даже ошибки фиксит

Да, но я тут больше про бережное обращение с контекстным окном и учитывание особенностей работы. Можно сколько угодно растить мощности ради увеличения контекстного окна , но запросы будут лишь тяжелеее и нести больше дисперсии

У ЯндексGPT так и реализовано, все прошлые чаты хранятся справа от контекстного окна, в любой момент можно вернуться и продолжить разговор. Но ЯндексGPT не хватает глубины контекста, да и по количеству знаков в запросе она явно не в лидерах.

Спасибо за статью!

Подскажите, почему Вы определили оптимальную структуру запроса как сначала данные, потом постановка задачи? Интуитивно кажется, что лучше наоборот (и в конце формат вывода конечно).

Спасибо за вопрос! Такой порядок выбран потому, что когда модель сначала видит все вводные, она может правильно “удержать их в памяти" и уже после этого применить к ним саму задачу. Если поменять местами и начать с постановки задачи, часть деталей из вводных может потеряться или быть понята не так. Так проще избежать недопонимания, и для модели, и для человека это обычно работает лучше. Формат вывода в конце да, это уже просто как дополнительная инструкция. И не стоит путать формат вывода результата и требования к решению задачи, что часто любят смешивать

Про человека прям совсем неочевидно. Если данных много и/или они плохо структурированы (как в большинстве реальных случаев), то кажется отчётливо проще сначала понять, что требуется. А потом, держа это в голове, смотреть на данные, фокусируясь на задаче.

Иначе велик риск запутаться в лишних деталях / перегрузить мозг в попытке все запомнить, не понимая, а зачем это всё.

Тут скорее было другое. Есть популярные в народе практики промптинга, вроде costar или idea, они нарушают логику повествования и избыточно усложняют инструкции

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

Пожалуйста, я рад что она вам пригодилась! Мне главное чутка приоткрыть завесу неопределенности и сподвигнуть к изучению

>они оргазинованы, схем, ощуний и тп., не пересчитывать рассчеты, был >прошарен, Они разбиываются, семантическим колдунством, он сильно >роляет, не про техническую честность, ошибки cинтаксиса не привожу...
Вы свой текст не перечитываете? Это ваше отношение к читателю...
Минусование не поможет, требуется внутренний мотив

Я только благодаря эти опечаткам автора доверяю тексту. Сегодня неуважение к читателю - это грамотное использование llm вместо собственных мозгов и такие опечатки - это маркер творчества человека.

ПС: просто автор во всех комментариях пишет эту дурацкую реплику в стиле "Спасибо!", "Отличный вопрос, ..." и тому подобную чепуху, которую обычно пишут llm, что наталкивает на мысли...

Да нет, я просто выбрал такую стратегию и +- с околохейтерскими комментариями придерживаюсь модели вида "спасибо за мнение, очень ценно, а что думаешь вот про это, дай совет". Выглядит, да, формально

Опечатки в тексте плюс ответы на комментарии начинаются со "слушай сюда, чепушило... " - тут сразу будет понятно, что автор живой и уважает читателя. В чудесное время живем

Спасибо вам! А что вы для себя интересного особенно в ней нашли или нового?

Как хорошо, когда есть друг не АйТи и ему нужно объяснять простым языком. Кажется даже я что-то поняла 😅

Ахаха, пожалуйста, надеюсь пошло на пользу. Меня все равно чутка заносит в профессионализмы, правда

У каждой модели свой словарь, но он одинаков для всех

В итоге у каждой свой или всё-таки одинаковый для всех?)

Тут имелось в виду для всех людей, как-то да, коряво выразился, надо поправить

Sign up to leave a comment.

Articles