Официальный репозиторий poolside получил критически важное обновление для модели Laguna S-2.1 в формате GGUF. Два точечных исправления - параметр yarn_attn_factor, возвращённый к значению 1.0, и полностью переработанный chat template - устраняют фундаментальные проблемы с потерей контекста и сбоями цепочки рассуждений. Ранние тесты сообщества подтверждают: модель перестала «забывать» инструкции на длинных дистанциях и научилась стабильно удерживать логику многошаговых вызовов инструментов. В этом разборе - техническая механика каждого фикса и готовые конфигурации для немедленного запуска.
Что изменилось в Laguna S-2.1 GGUF: два ключевых фикса
Разработчики poolside выпустили патч, закрывающий две группы ошибок, которые напрямую влияли на практическую применимость модели. Первое изменение - исправление параметра yarn_attn_factor до значения 1.0. В предыдущих сборках этот параметр был установлен некорректно, что приводило к неправильному расчёту mscale в llama.cpp и, как следствие, к деградации внимания на длинных последовательностях. Второе изменение - обновлённый chat template, который устраняет broken thinking и обеспечивает корректную обработку цепочки рассуждений при вызове инструментов.
Оба исправления уже интегрированы в актуальные GGUF-файлы из репозитория poolside. Пользователям, которые запускают модель локально через llama.cpp, достаточно обновить файл модели и применить конфигурацию, описанную ниже. Тем, кто работает с альтернативными клиентами вроде text-generation-webui, потребуется вручную заменить шаблон чата.
Yarn_attn_factor = 1.0: возвращаем правильный mscale в llama.cpp
Параметр yarn_attn_factor управляет коэффициентом масштабирования внимания в реализации YaRN (Yet another RoPE extensioN) внутри llama.cpp. При значении 0.0 или любом другом, отличном от 1.0, механизм mscale отключается или работает с искажениями. Результат - модель теряет способность эффективно распределять внимание между токенами на длинных контекстных окнах. Симптомы: повторяющиеся фразы, потеря нити рассуждений после 8-16 тысяч токенов, неспособность вернуться к инструкции из начала диалога.
Фикс до значения 1.0 восстанавливает штатную работу mscale. Модель получает корректные коэффициенты для масштабирования позиционных эмбеддингов, что напрямую отражается на связности генерации. В тестах на последовательностях длиной 32K токенов количество случаев broken thinking сократилось радикально - модель стабильно удерживает контекст и возвращается к ранним инструкциям без деградации.
Почему mscale важен для качества генерации
Механизм mscale в YaRN решает проблему «размывания» внимания при выходе за пределы обучающего контекстного окна. Без корректного масштабирования модель воспринимает дальние токены как шум, что приводит к нарушению логических связей. На практике это выглядит так: вы даёте модели системный промпт с набором правил, а через 10 тысяч токенов диалога она начинает эти правила игнорировать.
С yarn_attn_factor = 1.0 модель Laguna S-2.1 получает именно те коэффициенты масштабирования, которые были заложены в архитектуру YaRN. Внимание равномерно распределяется по всему контекстному окну, а не концентрируется только на последних токенах. Это критически важно для агентных сценариев, где модель должна помнить состояние задачи на протяжении десятков шагов.
Как проверить и применить фикс в своей сборке
Параметр yarn_attn_factor передаётся через аргументы командной строки llama.cpp или указывается в конфигурационном JSON. Пример запуска сервера с корректным значением:
./llama-server \
-m laguna-s-2.1.Q4_K_M.gguf \
--yarn-attn-factor 1.0 \
--ctx-size 32768 \
--host 0.0.0.0 \
--port 8080
Для CLI-режима аргумент аналогичен. Убедитесь, что используется актуальная версия llama.cpp - поддержка параметра yarn_attn_factor добавлена в релизах начиная с b10087, где также появилась совместимость с моделями семейства Laguna. Если вы обновляете существующую сборку, проверьте, что старые конфигурационные файлы не переопределяют этот параметр на некорректное значение.
Новый chat template: конец broken thinking и потерянным рассуждениям
Второе исправление касается шаблона чата - набора правил, по которым llama.cpp форматирует промпты перед отправкой в модель. Старый шаблон содержал ошибки в обработке специальных токенов, из-за которых модель «ломала» цепочку рассуждений. Проблема проявлялась в двух сценариях: модель начинала генерировать ответ, пропуская фазу reasoning, либо некорректно интерпретировала результаты вызова инструментов, теряя контекст между последовательными вызовами.
Новый шаблон исправляет структуру системных сообщений и маркеров инструментов. Модель теперь корректно распознаёт, когда требуется генерация рассуждения, а когда - непосредственный ответ или вызов функции. Это устраняет класс ошибок, который сообщество называет broken thinking: модель не «зависает» на полуслове и не перескакивает через обязательный этап обдумывания.
Сравнение старого и нового chat template
Ключевое различие - в обработке ролей и маркеров инструментов. Старый шаблон использовал плоскую структуру, где системные инструкции, пользовательские сообщения и результаты вызовов инструментов смешивались без чёткого разделения. Новый шаблон вводит явные границы через специализированные токены:
| Элемент шаблона | Старая версия | Новая версия |
|---|---|---|
| Системное сообщение | Встраивалось в начало без маркера роли | Явный тег <|system|> с закрывающим токеном |
| Цепочка рассуждений | Не имела отдельного контейнера | Блок <think>...</think> с принудительным закрытием |
| Вызов инструмента | Форматировался как обычный текст | Структурированный JSON внутри <tool_call> |
| Результат инструмента | Добавлялся без маркера источника | Явный тег <tool_response> с идентификатором вызова |
Эти изменения предотвращают broken thinking за счёт того, что модель получает однозначные сигналы о границах каждого этапа обработки. Когда шаблон требует закрыть тег </think> перед генерацией ответа, модель не может «забыть» завершить рассуждение и перейти сразу к выводу.
Интеграция нового шаблона в ваш проект
Обновлённый GGUF-файл из репозитория poolside уже содержит новый chat template. При использовании llama.cpp достаточно загрузить свежую версию модели - шаблон применится автоматически. Для клиентов, требующих ручного указания шаблона, ниже приведён полный конфиг в формате Jinja:
{% if messages[0]['role'] == 'system' %}
<|system|>
{{ messages[0]['content'] }}
</|system|>
{% endif %}
{% for message in messages %}
{% if message['role'] == 'user' %}
<|user|>
{{ message['content'] }}
</|user|>
{% elif message['role'] == 'assistant' %}
<|assistant|>
{% if 'tool_calls' in message %}
<tool_call>
{{ message['tool_calls'] | tojson }}
</tool_call>
{% else %}
<think>
{{ message['content'] }}
</think>
{% endif %}
</|assistant|>
{% elif message['role'] == 'tool' %}
<tool_response>
{{ message['content'] }}
</tool_response>
{% endif %}
{% endfor %}
Для text-generation-webui шаблон вставляется на вкладке Parameters в поле Custom chat template. Для llama.cpp server можно сохранить шаблон в файл и передать через флаг --chat-template-file template.jinja. Подробный разбор ошибок старого шаблона и методику замены мы уже описывали в статье про баг с preserve_thinking и решение через шаблон Qwen 27B - новый официальный шаблон следует той же логике, но интегрирован нативно.
Результаты ранних тестов: что говорят цифры
Сообщество уже провело первые замеры на обновлённой сборке. На задаче удержания контекста длиной 32K токенов модель с yarn_attn_factor = 1.0 показала точность следования инструкциям 94% против 67% у предыдущей версии. Количество случаев broken thinking на агентных сценариях с последовательными вызовами инструментов снизилось с 23% до менее чем 2% на тестовой выборке из 500 диалогов.
Предварительные замеры perplexity на стандартных бенчмарках демонстрируют снижение показателя на 8-12% на последовательностях длиннее 16K токенов. Это прямое следствие корректной работы mscale: модель точнее предсказывает следующие токены, поскольку эффективнее использует весь доступный контекст. Полный разбор производительности Laguna S-2.1 на агентных задачах доступен в нашем тесте модели для AI-агентов - там же метрики скорости инференса и сравнение с конкурентами.
Отдельного упоминания заслуживает стабильность: в тестах на 100 последовательных вызовах инструментов без перезагрузки контекста обновлённая сборка не допустила ни одного JSON-сбоя. Старая версия на тех же задачах давала 7-9 ошибок форматирования, требовавших повторной генерации.
Практическое руководство: быстрый старт с обновлённой Laguna S-2.1 GGUF
Пошаговый алгоритм для немедленного запуска исправленной модели:
- Скачайте обновлённый GGUF. Актуальные квантованные файлы доступны в официальном репозитории poolside на Hugging Face. Выбирайте квант под своё железо - Q4_K_M для GPU с 24-48 ГБ VRAM, Q2_K для 16 ГБ.
- Обновите llama.cpp. Требуется версия не ниже b10087. Проверьте поддержку моделей Laguna командой
./llama-cli --version- в списке поддерживаемых архитектур должна быть указана MoM с token-choice роутером. - Примените конфигурацию. Запустите сервер с параметром
--yarn-attn-factor 1.0и убедитесь, что chat template подгружается из модели автоматически. Для CLI-режима используйте аналогичные аргументы. - Проверьте качество. Отправьте тестовый промпт с длинным контекстом - например, описание из 20 тысяч токенов с инструкцией в начале. Модель должна корректно вернуться к инструкции в ответе.
Пример команды для серверного запуска с полным набором параметров:
./llama-server \
-m laguna-s-2.1-q4_k_m.gguf \
--yarn-attn-factor 1.0 \
--ctx-size 32768 \
--threads 16 \
--gpu-layers 99 \
--host 0.0.0.0 \
--port 8080
Если модель по-прежнему пропускает блок рассуждений на задачах средней сложности, проверьте, что после тега <think> в шаблоне присутствует символ новой строки - этот нюанс мы детально разбирали в статье про форсированное мышление в Laguna S-2.1. Poolside также выпустила патч, исправляющий зацикливание модели - подробности в обзоре обновления полной точности и FP8.
Два этих фикса - yarn_attn_factor и chat template - превращают Laguna S-2.1 из экспериментальной модели с нестабильным поведением в рабочий инструмент для агентных сценариев и задач с длинным контекстом. Применение обоих исправлений устраняет основные жалобы сообщества и позволяет получить от 120B-архитектуры предсказуемо высокое качество генерации.