Сравнение форматов вывода LLM: TXT, Markdown, HTML, HTML+CSS на Qwen 3.6 35B | AiManual
AiManual Logo Ai / Manual.
28 Май 2026 Гайд

Токены под микроскопом: во сколько обходится красивый вывод Qwen 3.6 35B

Эксперимент с Qwen 3.6 35B: сколько токенов «съедает» каждый формат вывода, квантование, KV cache. Практические замеры и советы по оптимизации промптов для лока

Вы когда-нибудь задумывались, сколько лишних токенов вы платите за то, чтобы Qwen нарисовал табличку в HTML, а не просто выплюнул строку текста? Я да. И однажды ночью, сидя с лопатой в руках и локальным инстансом Qwen 3.6 35B под капотом, я решил это выяснить. Результаты оказались настолько контринтуитивными, что я переписал половину своих промптов и сэкономил под 30% токенов на инференсе. Добро пожаловать под капот.

Почему формат вывода — это не просто эстетика?

Когда вы просите LLM: «Напиши отчёт в HTML», модель генерирует не только контент, но и обёртку: теги, атрибуты, стили. Каждый <div> или **жирный** — это дополнительный токен. А токены, как вы знаете, тянут за собой время и деньги (или лимиты, если вы на облаке).

Но есть нюанс: если вам нужно отдать результат человеку или в систему, которая парсит разметку, сырой TXT может обернуться ещё большими затратами на постобработку. Поэтому выбор формата — это всегда trade-off между стоимостью генерации и стоимостью потребления.

Ключевая метрика: общее количество токенов (prompt + completion). Но если промпт фиксирован, главное — длина completion. Именно её мы и будем измерять.

Экспериментальная установка

В качестве подопытного — Qwen 3.6 35B в 4-битном квантовании (GPTQ), запущенная через Hexllama — штука, которая, кстати, реально упрощает жизнь с флагами llama.cpp. Inferencing на одной NVIDIA A100 80GB (но можно и на 4090, просто будет чуть медленнее). KV cache включён, контекст 8K.

Промпт — один и тот же для всех форматов (меняется только инструкция о формате вывода):

Ты — ассистент, отвечающий на вопросы по RAG. Опиши архитектуру типичного RAG-пайплайна, перечислив 4 основных этапа.

Вариации промпта:

  • TXT — «Ответь обычным текстом, без разметки. Просто абзацы.»
  • Markdown — «Ответь в формате Markdown, используй заголовки и списки.»
  • HTML — «Ответь в виде HTML-кода, используй семантические теги (h2, ul, p и т.д.).»
  • HTML+CSS — «Ответь в виде HTML-кода с встроенными CSS-стилями (цвета, отступы, шрифты).»

Каждый запрос повторялся 5 раз, усреднялись значения по completion токенам и времени до первого токена (TTFT).

Результаты: таблица убийц

Формат Среднее кол-во completion токенов Относительно TXT TTFT (мс) Качество (субъективно)
TXT 320 1x (база) 120 5/10 — читаемо, но скучно
Markdown 410 +28% 135 7/10 — структура, но нет цвета
HTML 580 +81% 155 7/10 — структура, но пусто
HTML+CSS 890 +178% 210 9/10 — красиво, но дорого

Внимание: Markdown оказался самым эффективным «компромиссом» — даёт читаемую структуру всего за +28% токенов. HTML+CSS жрёт почти в 3 раза больше токенов, чем TXT, но если вы собираетесь отдавать результат в веб-интерфейс, экономия на фронтенде может перевесить.

Анатомия раздувания токенов

Давайте разберём, куда уходят токены в самом «жирном» варианте — HTML+CSS. Qwen 3.6 сгенерировала вот такой фрагмент (сокращён):

<!DOCTYPE html>
<html>
<head>
<style>
  body { font-family: Arial; margin: 20px; }
  h2 { color: #2c3e50; border-bottom: 2px solid #3498db; }
  ul { list-style-type: square; color: #333; }
</style>
</head>
<body>
<h2>1. Ingestion</h2>
<p>Загрузка документов в базу знаний...</p>
...
</body>
</html>

Каждый селектор, фигурная скобка, двоеточие — это отдельный токен. В среднем, одно CSS-правило «съедает» 15-20 токенов. А если модель решает добавить отступы и цвета для каждого элемента — сумма растёт как на дрожжах. При этом реальная информация (содержание этапов RAG) занимает лишь 30% от общего объёма.

💡
Совет: Если вам нужен красивый HTML, но не хочется платить за генерацию всех стилей, попробуйте подход, описанный в статье про htmLLM-50M — отдельную маленькую модель, которая генерирует только разметку без контента. Можно скормить ей TXT-ответ большой LLM и на выходе получить HTML.

Подводные камни: как НЕ надо делать

Первая ошибка, которую я совершил — попросил «выдай ответ в HTML» без указания степени детализации. Qwen 3.6 выдала полную HTML-страницу с <!DOCTYPE>, хотя мне нужен был только фрагмент. Это сразу +200 токенов.

Вторая ошибка — не указал, что CSS нужно минимизировать. Модель любит генерировать «красивые» стили с градиентами и тенями, что ещё сильнее раздувает ответ. Исправленный промпт:

Ответь в HTML. Используй только семантические теги, без стилей. Минимум обёрток. Только контент.

Это снизило количество completion токенов для HTML почти в 2 раза (с 580 до 340).

Практический чек-лист оптимизации

  1. Определите, кто будет читать ответ. Человек — Markdown или TXT. Машина (API) — лучше TXT/JSON. Фронтенд — HTML+CSS только если вы не можете пост-обработать.
  2. Используйте минимально возможную разметку. Если нужны только заголовки и списки, Markdown достаточно.
  3. Экспериментируйте с указанием максимальной длины. max_tokens=512 без формата — модель может обрезать смысл, а с форматом — обрезать стили, оставив контент.
  4. Кэшируйте KV cache при повторяющихся промптах. Если вы генерируете похожие отчёты, разница в TTFT между форматами сглаживается.
  5. Попробуйте RAG с предварительной разметкой. Иногда проще хранить документы уже в HTML, а LLM использовать только для извлечения — об этом я писал в гайде по RAG для документации.

Влияние квантования на «дороговизну» формата

Я запускал Qwen 3.6 35B в двух вариантах: полный float16 и 4-bit GPTQ. Результат предсказуем, но неочевиден: в квантованной модели разница между форматами чуть меньше в абсолютных токенах (из-за особенности токенизации в квантованных весах — модель чуть «жаднее»), но в относительном выражении — такая же. Зато TTFT в кванте был выше на 18-25% для всех форматов, что говорит о дополнительной нагрузке на декодирование.

Если вы используете локальные LLM на слабом железе (Mac M5 с 128 ГБ, как в сравнении для юристов), каждый лишний токен бьёт по времени генерации. Поэтому рекомендую придерживаться TXT или Markdown, а красоту навешивать уже после генерации.

Вердикт (без слова «заключение»)

Самый эффективный способ сэкономить токены — не просить модель делать то, что вы можете сделать сами. Если вам нужен HTML с бутстраповскими классами — лучше пусть модель выдаст Markdown, а вы конвертнёте его Pandoc'ом за микросекунду. Это сэкономит не только токены, но и нервы, когда Qwen вдруг решит, что цвет фона должен быть #ff69b4.

Но если вы всё-таки гонитесь за красивым выводом прямо из модели — помните, что HTML+CSS обходится в 2-3 раза дороже TXT. Зато можете смело показывать результат клиенту, не тратя время на вёрстку. Вопрос только в том, что дороже: ваше время или GPU-часы.

Подписаться на канал