KV кэш и эволюционные алгоритмы 🫏
Есть такая штука — KV кэш. Она сильно оптимизирует время отклика от LLM, так как сохраняет вектора K и V для уже обработанных токенов. Это прям на порядок ускоряет инференс модели.
Здесь появляется эффект упрямого осла: LLM сложно сменить точку зрения, заданную в начале контекста, ведь вектора заморожены. Так же консерватизма добавляют Residual Connection, благодаря которым модель не создает семантику с нуля, а обновляет старую. И все это усугубляется тем, что в начале сессии обычно действует Full-Attention, что дает максимальный IQ. Далее при разрастании контекста включается Sparse-Attention, который уже тупит.
Поэтому приходися часто сбрасывать сессию, чтобы освежать контекст. В прошлом посте я упоминал эволюционные алгоритмы, и мне видится, что это интересное решение проблемы.
1. Спавним популяцию агентов, каждый решает задачу
2. Отбираем из них лучшие решения (селекция)
3. Лучшие решения можно скрещивать между собой
4. Запускаем процесс заново, только задача уже решается не с нуля, а на основе лучших решений с предыдущих шагов
И вот если каждый агент будет "ослить" в свою сторону, есть шанс наткнуться на оооч интересные решения. Все мусорные все равно отбросим на этапе селекции. При этом можно легко задать каждому агенту вектор осления для разнообразия популяции. Делается это как раз в начале сессии благодаря описанным в начале эффектам.
Есть такая штука — KV кэш. Она сильно оптимизирует время отклика от LLM, так как сохраняет вектора K и V для уже обработанных токенов. Это прям на порядок ускоряет инференс модели.
Здесь появляется эффект упрямого осла: LLM сложно сменить точку зрения, заданную в начале контекста, ведь вектора заморожены. Так же консерватизма добавляют Residual Connection, благодаря которым модель не создает семантику с нуля, а обновляет старую. И все это усугубляется тем, что в начале сессии обычно действует Full-Attention, что дает максимальный IQ. Далее при разрастании контекста включается Sparse-Attention, который уже тупит.
Поэтому приходися часто сбрасывать сессию, чтобы освежать контекст. В прошлом посте я упоминал эволюционные алгоритмы, и мне видится, что это интересное решение проблемы.
1. Спавним популяцию агентов, каждый решает задачу
2. Отбираем из них лучшие решения (селекция)
3. Лучшие решения можно скрещивать между собой
4. Запускаем процесс заново, только задача уже решается не с нуля, а на основе лучших решений с предыдущих шагов
И вот если каждый агент будет "ослить" в свою сторону, есть шанс наткнуться на оооч интересные решения. Все мусорные все равно отбросим на этапе селекции. При этом можно легко задать каждому агенту вектор осления для разнообразия популяции. Делается это как раз в начале сессии благодаря описанным в начале эффектам.