AI1 августа в 07:31 · 6 мин

Рекурсивный движок 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. Все ссылки на внешние ресурсы проверяются на актуальность перед публикацией.*

Первоисточники

Habr AI
← Вернуться в эфир