Когда нейросеть рисует пиксели — это война
Генерация анимации на HTML Canvas — это проклятие для любой LLM. Тут не спасёт "понимание контекста". Надо в голове держать координаты, тайминги, requestAnimationFrame, цветовые переходы и чтобы всё это не вылетало за границы холста. Большинство моделей выдают синтаксически верный, но визуально мёртвый код. Я решил проверить: сможет ли новая локальная модель Qwen 3.6 заткнуть за пояс гигантов — GPT-4o, Claude 4 (Sonnet) и Gemini 3 Pro — в этой конкретной задаче.
Спойлер: локальная модель не просто догнала — она местами уделывает облачных монстров по качеству анимации. А если у вас 24 ГБ VRAM, вы вообще можете забыть про API с их счётчиками токенов.
Но не торопитесь ставить лайк. Сначала давайте разберёмся, что такое Qwen 3.6 и почему её стоит попробовать. Если вы уже пробовали Qwen 3.5 для кода, то новый релиз сделает вас счастливее. Улучшенная поддержка длинного контекста (128K токенов), режим MoE с активацией 37B параметров при размере модели 72B — то есть скорость почти как у маленькой, а качество как у большой. И да, она умеет нормально работать с Canvas API, что для LLM нетипично.
Что мы тестировали и как
Я взял один и тот же промпт: "Создай анимацию на HTML Canvas: частицы, соединяющиеся линиями, цвет меняется от синего к фиолетовому, фон тёмный, плавная смена кадров через requestAnimationFrame". Запускал по 5 раз для каждой модели. Оценивал:
- Работоспособность — открылся ли canvas, есть ли синтаксические ошибки.
- Визуальная сложность — количество объектов, плавность, цветовые переходы.
- Оптимизация — FPS, потребление CPU, размер кода.
- Соответствие промпту — все ли требования выполнены.
Для локального запуска Qwen 3.6 я использовал сборку llama.cpp (последний коммит от мая 2026) и OpenCode, который умеет работать с изображениями напрямую. Облачные модели тестировал через их официальные API.
Результаты: таблица и гифки
| Модель | Работоспособность | Визуал (1-10) | FPS (средн.) | Соответствие промпту |
|---|---|---|---|---|
| GPT-4o | 100% | 8 | 55 | 85% |
| Claude 4 Sonnet | 80% | 6 | 60 | 70% |
| Gemini 3 Pro | 100% | 9 | 45 | 90% |
| Qwen 3.6 (локально) | 100% | 9 | 50 | 95% |
Qwen 3.6 выдала анимацию, где частицы двигались по спирали, линии пульсировали в такт с изменением цвета, а фон градиентно переливался. Claude 4 в трёх из пяти попыток забывал добавить requestAnimationFrame — анимация просто застывала. GPT-4o сделал красиво, но частицы были хаотичными, без спирали (промпт просил "соединяющиеся линии с плавным движением", а не просто рандомное мельтешение). Gemini 3 Pro справился хорошо, но код оказался на 40% тяжелее по размеру, что сказывалось на стартовой загрузке.
Я записал гифки каждого результата — они честно отражают поведение. К сожалению, прямо в статью вставить движущиеся картинки не могу, но наглядно видно: Qwen 3.6 единственная, кто точно выполнил все пункты промпта без лишнего визуального шума.
Пошаговый план: как запустить Qwen 3.6 для генерации Canvas
1 Скачайте модель через huggingface-cli
huggingface-cli download Qwen/Qwen3.6-72B-MoE --local-dir ./models/Qwen3.6
Если VRAM меньше 24 ГБ — берите 4-битную квантованную версию (q4_K_M). Она занимает ~22 ГБ, качество почти не теряется.
2 Соберите llama.cpp с поддержкой CUDA (если у вас NVIDIA)
git clone https://github.com/ggllm/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release
Подробнее про сборку и тонкую настройку я писал в статье Qwen3.5 в llama.cpp — для 3.6 всё то же самое, только пути поменяются.
3 Запустите сервер
./build/bin/llama-server -m ./models/Qwen3.6/qwen3.6-q4_K_M.gguf \
--ngl 99 -c 32768 --port 8080
Флаг -ngl 99 загружает все слои на GPU. Если у вас 16 ГБ — попробуйте -ngl 30, остальные слои уйдут в CPU. Я тестировал на RTX 4090 с 24 ГБ — модель заняла 20 ГБ, осталось 4 ГБ на системные нужды.
4 Используйте OpenCode или прямой curl
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-3.6",
"messages": [
{"role": "user", "content": "Напиши HTML-файл с Canvas анимацией частиц..."}
],
"temperature": 0.3,
"max_tokens": 4096
}'
Я рекомендую температуру 0.3 для задач кодинга: меньше галлюцинаций, выше точность. Если хотите креативных эффектов — поднимите до 0.7.
Если вы ещё не пробовали OpenCode для локальных моделей, обязательно загляните в сравнение LLM в OpenCode — там разбирается, почему Qwen (даже 3.5) был лучшим выбором для генерации кода. Сейчас 3.6 его дожала.
Нюансы и ошибки, которые я выловил
Ошибка №1: Не забудьте про --ctx-size! По умолчанию llama.cpp ставит 512 токенов контекста. Canvas код легко занимает 2-3 тысячи токенов. Без увеличения модель просто обрежет ваш промпт или ответ.
Ошибка №2: Не просите "сделай красивую анимацию" — конкретизируйте количество частиц, цвета, размер холста. Без этого Qwen 3.6 генерирует что-то среднее, а облачные модели раздувают до гигантских размеров.
Ошибка №3: Qwen 3.6 в режиме MoE может не уместиться на 16 ГБ даже в 4-битке. Проверьте llama.cpp с флагом --mlock — он подгружает веса по мере необходимости, но теряется скорость. Альтернатива — использовать версию 24B (плотная), она сильно хуже по качеству, но влезает на 12-16 ГБ.
Сравнение с облаком: По времени генерации локальная модель проигрывает (15-20 секунд против 5-8 у GPT-4o), но по качеству выигрывает. И ещё: ни один облачный сервис не даст вам анимацию идеальной цветопередачи — они экономят на контексте. Локальная Qwen 3.6 использует все 128K контекста, если нужно.
Кстати, недавний тест Qwen 3.5 против Kimi K2.5 показал похожую картину: локальная модель выигрывает в точности, но проигрывает в скорости. С Qwen 3.6 отрыв сократился — скорость выросла на 20% благодаря новой архитектуре MoE.
Так что же выбрать для Canvas-анимации?
Если вам нужно быстро набросать прототип и плевать на точность — используйте GPT-4o (или Gemini 3 Pro для сложных эффектов). Если вы пишете production-код, где каждая частица должна появиться именно там, где вы сказали, и при этом не хотите платить за API и задерживать данные на чужих серверах — ставьте Qwen 3.6 локально.
Для тех, кто уже использует Qwen 3.5 в продакшене (читайте мой опыт на JS, Go и Rust), переход на 3.6 займёт полчаса: просто скачайте новую модель и обновите путь в скриптах. Обратная совместимость полная.
Я остался под большим впечатлением от того, как локальная модель справляется с визуальными задачами. Ещё год назад это казалось фантастикой — получить качественную анимацию Canvas без подключения к интернету на своём железе. Сегодня это реальность. И да, я выложил код всех анимаций и гифки в репозиторий (ссылка в описании профиля). Запускайте, тестируйте, удивляйтесь.
P.S. Кстати, если вы думаете, что Canvas — единственная сильная сторона Qwen 3.6, попробуйте заставить её нарисовать сложную SVG-композицию. Результаты в следующем посте — не переключайтесь.