Заметки из локальной лаборатории AI Platforms
23 августа 2026 · 15 мин чтения · Руководитель отдела разработки AI Platforms

От зацикленного xhigh до живой SVG

Qwen3.8-27B вышла девять дней назад. За это время мы успели скачать неудачную ревизию кванта, выяснить, что высокий reasoning в нашем интерфейсе на самом деле не включался, получить настоящий бесконечный цикл, найти рабочий anti-loop и столкнуть локальную модель с GPT-5.6 Sol на одной наглядной задаче.

  • Qwen3.8
  • GPT-5.6 Sol
  • Pi
  • локальные LLM
  • reasoning
  • SVG
  • agentic coding
  • harness

Девять дней вместо красивой легенды

14 августа 2026 года Qwen выпустила Qwen3.8-27B. Сегодня 23 августа. Поэтому никакой «многомесячной работы вокруг этой модели» здесь быть не могло: вся история уместилась чуть больше чем в неделю. Она от этого не становится менее интересной - скорее наоборот.

Наш harness существовал до Qwen3.8-27B. Он построен на базе Pi: основную логику backend мы почти не меняли, но сделали свой интерфейс, управление локальными моделями, режимы задач, наблюдаемость, работу с контекстом, инструментами и историей. Когда вышла новая 27B-модель, я начал встраивать её в уже рабочий контур.

18 августа я скачал UD-Q4_K_XL от Unsloth. Позже выяснилось, что локальный файл совпадает с ранней ревизией: 19 августа в репозитории сначала появился GGUF размером 17 923 394 624 байта, а через восемь минут его заменили файлом под тем же именем - уже 17 559 178 144 байта и с другим SHA-256. Никакого предупреждения в названии не было. То, что сначала выглядело как странности самой модели, частично могло быть свойством неудачного раннего кванта.

21 августа я поставил исправленный Dynamic V3. Он действительно оказался другим: лучше писал обычный текст и заметно увереннее работал в длинных задачах. При этом рабочий VRAM-футпринт вырос. Старый профиль на 163 840 токенов уже не помещал MTP - второй карте не хватало 228 МиБ. Контекст пришлось снизить до 143 360. Это важная деталь: новая ревизия была меньше на диске, но тяжелее в реальном запуске.

Сначала мы обнаружили, что xhigh вообще не включался

В интерфейсе был переключатель высокого reasoning, и внешне казалось, что он работает. Но разбор запросов показал обратное: Pi передавал включение thinking, а выбранное значение xhigh до шаблона Qwen не доходило. llama-server всё время оставался на нейтральном medium.

Именно поэтому ранние тесты выглядели нормально. Модель рассуждала, вызывала инструменты и заканчивала работу. Мы считали это управляемым высоким мышлением, хотя на самом деле наблюдали обычный medium. Ошибка harness маскировала проблему модели.

Когда я вручную добавил настоящий триггер Reasoning effort is set to xhigh, поведение изменилось сразу. Один прогон исчерпал прежний лимит в 32 768 токенов. В следующем, уже с увеличенным потолком, модель создала 119 277 символов внутреннего thinking, не вызвала ни одного инструмента и не дала финального ответа. Блок из 208 непустых строк - 13 598 символов - повторился дословно, затем начался в третий раз.

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

Самодельный high тоже не сработал

Следующая попытка казалась логичной: не использовать официальный xhigh, а дать промежуточную инструкцию Reasoning effort is set to high. У Qwen3.8-27B нет штатного режима high, это был наш эксперимент.

Буквального повтора большого блока уже не было, но проблема осталась в другой форме. За 28 минут модель сгенерировала 55 407 токенов и 21 раз писала себе что-то вроде Let me write, после чего снова возвращалась к архитектуре, механикам и графике. Настоящий вызов записи файла сформировался только в самом конце; я остановил прогон между формированием tool call и его выполнением. Почти весь бюджет ушёл до первого полезного действия.

Мы попробовали и более обычную инструкцию «думай глубже». Она закончила задачу и сократила первый ход до 17 105 токенов против 62 447 в экстремальном варианте, но результат оказался заметно проще: 755 строк и 32 функции против 1 067 строк и 63 функций в более амбициозной версии. Дополнительное тестовое вычисление действительно давало модели время выбрать более сложную архитектуру. Простая просьба быть внимательнее этого не воспроизводила.

Жёсткий reasoning budget на 24K или 32K я тоже отложил. Такой лимит не знает, закончен ли план: он способен оборвать генерацию посреди архитектурного решения или незакрытого tool call. Нужен был не механический обрыв, а мягкий переход от размышления к работе.

Фраза, на которой глубокий режим наконец заработал

`Reasoning effort is set to xhigh. Keep your reasoning concise and non-repetitive; once a coherent approach is established, proceed to the answer or tool call.` Мы сохранили сильный обученный триггер, но вместо приказа бесконечно перепроверять всё добавили явный выход к ответу или инструменту.

Что именно работает сейчас

llama-server остаётся на medium. Когда включён наш режим «Глубоко», перед базовым системным промптом Pi добавляется короткая фраза выше. Прошлое thinking сохраняется (preserve_thinking: true), а общий выход одного хода ограничен 65 536 токенами. Это аварийный потолок, а не цель.

Sampling оставлен официальным для Qwen3.8: temperature 1.0, top_p 0.95, top_k 20, min_p 0, presence_penalty 0, repeat_penalty 1. Мы специально не меняли одновременно пять переменных, чтобы было понятно, что именно повлияло на поведение.

После этого модель начала делать то, ради чего вообще нужен агентный harness: проектировать, вызывать инструменты, проверять файл, воспроизводить ошибки и возвращаться к исправлению. В одном из следующих тестов она собрала в единственном HTML небольшую игру примерно на 750 строк: пять районов, разные типы противников, комбо, ярость, частицы, Web Audio и голосовые реплики. Затем продолжила самостоятельно тестировать механику и баланс.

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

Стенд этого эксперимента

Конфигурация этого прогона, а не системные требования

2 × 16 GB
RTX 5060 Ti в рабочей станции
17,56 GB
UD-Q4_K_XL Dynamic V3 GGUF
143 360
токенов контекста
12 / 18
распределение слоёв между GPU
~30 мин
прогон SVG от Qwen

Одна задача: лошадь действительно едет на велосипеде

Я сравнил два SVG по одной сюжетной идее. Первый сделала GPT-5.6 Sol в Codex с высоким reasoning. Второй - локальная Qwen3.8-27B в нашем глубоком режиме поверх Pi.

Если посмотреть издалека, работа Sol нравится больше. У неё сильнее цвет: глубокий фиолетовый фон, большое солнце, бирюзовая рама, крупная лошадь и хороший контраст. Она быстрее работает как постер. Но цвет - это не вся сцена.

Когда начинаешь смотреть на механику, преимущество исчезает. У Sol задние ноги остаются фиксированными контурами рядом с кареткой, пока колёса вращаются отдельно. Основная поза лошади почти заморожена. У Qwen обе задние ноги стоят на педалях и проходят согласованный цикл, вращается кривошип, работает цепь, покачивается корпус, а пустыня движется несколькими планами.

Это и стало критерием: не «какая картинка приятнее в превью», а «какая система честнее выполняет задачу анимированной сцены».

Сравнение анимированных SVG: GPT-5.6 Sol слева и Qwen3.8-27B в нашем harness на базе Pi справа
Слева - GPT-5.6 Sol: сильнее цвет и эффект первого взгляда. Справа - Qwen3.8-27B в нашем harness на базе Pi: скромнее палитра, но связнее механика и анимация всей сцены.
Прямой разбор исходников

Что находится внутри двух SVG

Размер сам по себе ничего не доказывает. Здесь он полезен вместе со структурой и тем, что реально происходит в анимации.

МетрикаGPT-5.6 SolQwen3.8-27B
Размер файла 12 831 байт 29 230 байт
Строки 168 523
SVG-элементы 150 263
Группы g 16 69
Контуры path 49 53
Градиенты 7 5
Фильтры 3 0
Анимация 9 SMIL-узлов 31 CSS keyframe и 35 animation-связей

Почему второй SVG сильнее именно как анимация

Каждая задняя нога в локальном SVG разделена на бедро и голень. Для ближней и дальней ноги заданы отдельные циклы из 12 фаз. Кривошип делает оборот за 1,5 секунды, ноги работают в том же периоде, а педали контрвращаются, сохраняя ориентацию. Модель не просто подвигала конечности возле велосипеда - она связала два копыта с двумя противоположными педалями.

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

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

При этом контуров почти поровну - 49 против 53. Разрыв создают не лишние украшения, а временные состояния и связи. Sol нарисовала более эффектный кадр. Qwen построила более сложную сцену.

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

После практических тестов я посмотрел Artificial Analysis. На 23 августа Qwen3.8-27B в режиме xhigh получает 52 балла по Intelligence Index v4.1.1. GPT-5.6 Sol набирает 51 на low и 56 на medium. То есть по этому агрегированному индексу небольшая Qwen находится примерно между низким и средним reasoning Sol.

Claude Opus 4.6 Max показывает 45 баллов, хотя Artificial Analysis уже помечает эту модель как устаревшую и не полностью обновляет исторические результаты. Для меня здесь важен не лозунг «27B победила все флагманы». Важен другой факт: уровень, который ещё недавно ассоциировался только с дорогими закрытыми моделями, теперь появляется у локального checkpoint такого размера.

Эти 52 балла нельзя напрямую присвоить нашему стенду. Artificial Analysis тестирует своё API-представление модели, а у нас GGUF-квант, llama.cpp, конкретный sampling и собственный harness. Рейтинг объясняет направление, но не заменяет локальный eval. Именно поэтому я смотрю не только на число в таблице, а на ноги на педалях, tool calls, завершение задачи и итоговый файл.

Зачем всё это, если один SVG считается полчаса

Полчаса - долго, и локальный inference не бесплатен: железо нужно купить, запитать и охлаждать, а стек - поддерживать. Но две RTX 5060 Ti в этой статье не являются требованием модели. Я, как руководитель отдела разработки AI Platforms, проводил этот прогон на том стенде, который был у меня под рукой. Кто-то запустит тот же класс модели на одной RTX 3090 с 24 GB VRAM, кто-то распределит её между другими GPU или частью вынесет в RAM. Конкретный квант, контекст и скорость будут другими. Мы фиксируем конфигурацию ради воспроизводимости, а не выдаём её за единственно правильную.

Для меня разница между локальной и облачной моделью не сводится к цене одного ответа. Я нахожусь в России и пользуюсь Codex через VPN. Два Pro-аккаунта обходятся примерно в 16 тысяч рублей в месяц, а максимальный режим reasoning мне всё равно недоступен. При прежнем характере работы недельного лимита раньше хватало, а сейчас он может закончиться за два-три дня.

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

У нас есть и сервер с V100, на котором запланирована отдельная серия экспериментов. Но в эту статью его результаты я не подмешиваю: конкретно лошадь, игра и настройка глубокого режима проверялись на двух RTX 5060 Ti.

Это не глобальный рейтинг моделей

Один SVG не доказывает, что Qwen3.8-27B вообще сильнее GPT-5.6 Sol. Время, число токенов и внутренняя оркестрация систем не нормализованы. Вывод уже и полезнее: в этой задаче наш локальный стек построил более правильную анимированную сцену, хотя облачная модель сделала более эффектное превью.

Что я вынес из этой недели

Главный результат для меня - не победа одной лошади над другой. За девять дней стало видно, сколько качества находится между файлом модели и конечной работой. Ранняя ревизия кванта хуже писала текст. Настоящий xhigh зацикливался. Самодельный high тратил десятки тысяч токенов до первого инструмента. Один короткий anti-loop превратил бесполезное переобдумывание в долгую, но продуктивную агентную работу.

Поэтому сравнивать только названия checkpoint недостаточно. Реальная единица - это модель + квант + inference + chat template + harness + инструменты + проверка. В нашем случае Pi дал зрелую основу, а собственная обвязка позволила увидеть и исправить то, что обычный чат скрывал.

Если выбирать между двумя SVG, мой ответ простой. Для обложки я бы взял Sol и её цвета. Для задачи «лошадь действительно едет по пустыне на велосипеде» - Qwen3.8-27B в нашем harness. А для локальных моделей в целом этот тест означает ещё одну вещь: 27B уже перестала быть игрушечным классом. Теперь её слабое место - не отсутствие способности решить сложную задачу, а время, железо и качество инженерной обвязки вокруг неё.

Как проверялись файлы

Я разобрал desert_horse_cyclist.svg размером 12 831 байт и horse-bike-desert.svg размером 29 230 байт. XML-подсчётом получил число элементов, групп, контуров, градиентов и фильтров; отдельно посчитал SMIL-узлы, CSS keyframes и назначения animation. Затем сопоставил код с положением объектов и фазами движения на рендере.

Источники по модели и внешним оценкам: официальный репозиторий Qwen3.8, карточка Qwen3.8-27B, Artificial Analysis. Даты, размеры и SHA-256 ранней и исправленной ревизий Unsloth были сверены по истории репозитория и локальному GGUF.

Проверим локальную модель не на демо, а на вашей задаче

В AI Platforms мы собираем локальные стенды и agentic-harness под реальную работу. Если у вас есть задача, на которой небольшие модели обычно ломаются, мы построим воспроизводимый eval, сравним кванты и покажем вместе с результатом все ограничения - время, VRAM, контекст и незавершённые прогоны.