Рекурсивный движок llama.cpp на RTX 3050: тесты Qwen и прирост качества кода
Разработчик проанализировал работу форка llama.cpp с рекурсивным механизмом на бюджетной видеокарте RTX 3050. Тесты моделей Qwen 32B и Qwen 7B Coder показали, что рекурсия позволяет генерировать значительно более полный и структурированный код, исправляя недостатки базовой генерации, но требует компромисса в скорости обработки.
# Рекурсивный движок llama.cpp: от фрагментов к готовому коду
В мире локального запуска моделей искусственного интеллекта вопрос эффективности часто сводится к поиску баланса между качеством вывода и потреблением ресурсов. На минималистичном оборудовании, таком как RTX 3050 с 6 ГБ видеопамяти, каждое лишнее вычисление может стать решающим фактором. В этом материале мы рассмотрим результаты тестирования форка llama.cpp, реализующего рекурсивный механизм обработки контекста, и оценим, оправдывает ли он затраченные ресурсы.
*Многие пользователи сталкиваются с проблемой так называемого «ленивого кода» от ИИ: модель генерирует фрагменты решения, оставляя заглушки для импортов или логики запуска. Рекурсивный подход пытается решить эту задачу, заставляя модель уточнять и дополнять ответ до полной консистентности.*
Технические особенности теста
Для объективного сравнения были выбраны три модели разного масштаба: Qwen 3.5 (35B параметров), Qwen 2.5 Coder (7B) и Mistral 7B. Тестирование проводилось на одной платформе: мобильная версия RTX 3050 Mobile с 6 ГБ оперативной памяти видеокарты. Критически важный нюанс — использование квантованной версии модели Q4, что позволяет уместить веса в ограниченное пространство VRAM, но неизбежно снижает точность. Скорость базового вывода на данной конфигурации составляет около 3 токенов в секунду.
Сравнение велось между двумя версиями движка: 1. D=0 (базовый): Стандартный режим работы llama.cpp, где модель генерирует ответ за один проход. 2. D=12 (рекурсивный): Форк с активным рекурсивным механизмом, который итеративно пересматривает и уточняет сгенерированный контент, пока не будут устранены выявленные несоответствия или логические разрывы.
Стоит отметить, что рекурсивный подход неизбежно увеличивает нагрузку на видеокарту и требует больше времени на формирование ответа, так как модель должна «думать» поверх сгенерированного текста.
Результаты тестирования Qwen 32B: код-ревью
Наиболее показательным стал тест модели Qwen 3.5 на задачах код-ревью. В первом раунде, который можно охарактеризовать как «легкий», обе версии проявили одинаковый уровень компетентности. Разница в производительности была незначительной, а скорость генерации в рекурсивном режиме оказалась чуть ниже.
Однако ситуация кардинально изменилась на этапе «Hard-сегмента». Задача заключалась в анализе кода и提出 исправлений для решения проблем с состоянием гонки.
Качественный скачок
* Базовый вариант (D=0): Модель предложила решение, но оно было фрагментарным. Код содержал заглушки, отсутствовали необходимые импорты и инициализация. Исправление ограничивалось простейшим добавлением блокировки lock, без учета более глубоких аспектов надежности системы.
* Рекурсивный вариант (D=12): Движок заставил модель пересмотреть свой ответ. Результатом стало сформирование монолитного, готового к продакшну скрипта. Помимо базовой синхронизации, модель добавила структурированный сбор метрик, валидацию типов на входе и правильное размещение логики внутри контекста блокировки, что защитило транзакции от ошибок состояний гонки.
Количество корректных исправлений выросло почти в 3,1 раза. Цена этого качества составила лишь 17% дополнительного времени обработки. В контексте сложных инженерных задач, где важно получить работающее решение «из коробки», такой компромисс выглядит оправданным.
Тесты Qwen 2.5 Coder 7B: практика разработки
Модель среднего размера была проверена на более широкий спектр задач: код-ревью, разработка полного цикла (fullstack) и создание простой 2D-игры («Динозаврик»).*
Полный цикл разработки (Fullstack)
Сценарий был максимально реалистичен: задача на создание простой, но функциональной веб-страницы с версткой и интерактивностью.
* Базовый вариант: Модель остановилась на создании базового HTML-шаблона с заголовками и простейшим CSS. Она не дописала скрипты для модальных окон, не реализовала корзину и оставила формы пустыми. Уровень завершенности — около 30%. Модель, как и ожидалось, не смогла уместить всю логику в один проход и «захотела», чтобы пользователь сам доделал проект. * Рекурсивный вариант: Движок обеспечил 100% выполнение требований. Вывод содержал полностью рабочий HTML с адаптивной версткой, стили для модальных окон, CSS для кнопок и JavaScript для логики корзины. Все формы были заполнены корректными полями, а модальные окна работали по назначению. Результат — готовая к использованию страница.
Прирост функциональности составил 2,2 раза, а уровень завершенности вырос с 30% до 100%.
Задачи код-ревью (Qwen 2.5 Coder)
Сравнение проводилось по трем параметрам: скорость генерации, корректность логики и полнота решения.
| Параметр | Базовый (D=0) | Рекурсивный (D=12) | | :--- | :--- | :--- | | Скорость | Базовая | 13% ниже | | Корректность | Частичные уязвимости | Полное исправление | | Полнота | 89% | 98% |
* Уязвимости и эндпоинты: Базовая модель пропустила защиту опасных рут /ping и /math. Рекурсивный вариант выявил эту ошибку и сгенерировал код, полностью блокирующий доступ к ним. * Итоговая оценка: Уровень защищенности кода в рекурсивном режиме достиг 98% против 89% в базовом.
2D-игра «Динозаврик»**
Обе версии смогли реализовать физический цикл и управление прыжками. Однако рекурсивная модель показала себя более тщательной: адаптивная верстка была реализована без наложения блоков, а обработка коллизий была более стабильной. Разница в чистоте кода и UX очевидна.
Итоги и выводы
Анализ тестов подтверждает эффективность рекурсивного подхода в llama.cpp, особенно при работе с моделями среднего размера (7B) и задачами, требующими целостности решения. Основные выводы:
1. Радикальное улучшение качества: На задаче Fullstack прирост завершенности достиг 2,2x. На сложной логике код-ревью (Qwen 32B) количество корректных исправлений выросло в 3,1 раза. 2. Блокировка критических ошибок: Рекурсивный движок способен выявлять и исправлять грубые пропуски, которые базовая модель игнорирует, доводя уровень защищенности до критических значений (например, блокировка рут /ping). 3. Цена скорости: Главный недостаток — падение производительности на 13%. Для задач с жесткими требованиями к скорости (например, чат-боты в реальном времени) этот метод может быть избыточным. 4. Рекомендация по использованию: Этот метод наиболее эффективен при генерации целых файлов, скриптов или архитектурных решений, где важна логическая завершенность, а не мгновенный отклик.
Почему так мало тестов Qwen 3.5 35B?
Важно понимать техническое ограничение: моё оборудование (RTX 3050 Mobile с 6 ГБ VRAM) не позволяет запускать модель размером 35 миллиардов параметров полностью в видеопамяти. Использование дополнительного объема оперативной памяти для размещения весов модели Q4 вызывает существенные задержки и требует специфических патчей. Поэтому тесты проводились преимущественно на более компактных моделях (7B и 32B с квантованием Q4), где рекурсия работает наиболее стабильно.
Честность в визуализации данных
Для генерации диаграмм был привлечен ИИ-ассистент. В процессе его работы была сделана попытка наиболее выигрышно представить результаты рекурсивной модели. Однако все представленные цифры и таблицы строго соответствуют реальным показателям тестов. Никаких критических искажений фактов нет — только субъективный выбор масштаба осей для визуализации.
Ссылки и инструменты
Для повторения эксперимента рекомендую использовать форк llama.cpp с ускорениями: * GitHub репозиторий: [https://github.com/cubetitled-ui/llama.cpp/tree/patch-speedup](https://github.com/cubetitled-ui/llama.cpp/tree/patch-speedup) * Google Диск с результатами тестов: [Ссылка на Диск](https://drive.google.com/drive/folders/15QYzCQkJvjaPsv1U-K3PBpp3Rai9q_SY?usp=sharing)
Исправление ошибок в тестах Mistral
Примечание: В ранних версиях тестов модели Mistral 7B были допущены неточности из-за чрезмерного доверия ИИ-агенту при автоматической генерации отчетов. После ручного перепроверки данных результаты были скорректированы. Версия с Qwen 2.5 Coder и Qwen 32B прошла верификацию и считается корректной.
---
*P.S. Все ссылки на внешние ресурсы проверяются на актуальность перед публикацией.*