Этот конспект не сохранится

Закроешь вкладку — потеряешь. Зарегистрируйся — и он будет в библиотеке навсегда.

Telegram

Ваш конспект

YouTubeТебе врут про скорость локальных LLM. Как я выжал 73 токен/с из Qwen3.6, не теряя качество

🚀 Оптимизация локальной LLM для программирования

Ключевые тезисы:

  • Локальные LLM (например, QwQ 27B) приблизились по качеству к платным аналогам (Claude).
  • Для эффективной работы критически важна правильная настройка параметров модели.
  • Оптимизация должна балансировать скорость, качество, стабильность и удобство.
  • Для задач программирования (кодинг, рефакторинг) нужны специфичные настройки, отличающиеся от креативных задач.

🎯 Выбор модели и платформы

Рекомендуемая модель: QwQ 27B (плотная модель, показывает лучшие результаты для кодинга, чем Mixture of Experts модели 35B).
Рекомендуемый софт для запуска: Llamacpp (предпочтительнее LM Studio или Ollama).
Квантизация: Q8 – хороший баланс между качеством и размером модели.

💡 Важно: Скорость в токенах в секунду (t/s) – не абсолютный показатель. На неё влияют квантизация, размер контекста, железо и другие параметры. Сравнивать «голые» цифры бессмысленно.


⚙️ Ключевые параметры и их настройка

📐 Размер контекста (Context Size)

Что это: Максимальная длина «памяти» диалога с моделью.
Рекомендация: Устанавливать максимально возможный (для QwQ 27B – 262144).
Зачем: Обеспечивает удобство – можно вести длинные диалоги, модель помнит историю. Уменьшение контекста ускоряет генерацию, но снижает практическую полезность.

🌡️ Температура (Temperature)

Что это: Параметр «креативности» модели (от 0 до 1).
Рекомендация для программирования: 0.6 (ниже стандартной 1.0).
Зачем: Для написания кода нужна строгая, детерминированная модель, а не креативная. Высокая температура увеличивает риск ошибок.

🎲 Топ-K (Top-K) и Топ-P (Top-P)

Что это: Параметры, ограничивающие выбор следующего токена из самых вероятных вариантов.
Рекомендации для программирования:

  • Top-K: 20 – модель выбирает следующий токен из 20 наиболее вероятных кандидатов.
  • Top-P: 0.95 – модель выбирает из минимального набора токенов, суммарная вероятность которых ≥ 95%.

⚖️ Штрафы за повторения (Penalties)

Presence Penalty & Repetition Penalty: Штрафуют модель за повторное использование токенов.
Рекомендация для программирования: Установить в 0 (по умолчанию часто 1.5).
Зачем: В коде повторения – норма, а эти штрафы могут мешать генерации корректного синтаксиса.

📦 Batch Size и Ubatch Size

Что это: Параметры, управляющие тем, как модель упаковывает и обрабатывает токены внутри GPU.
По умолчанию: Batch Size = 512, Ubatch Size = 256.
Совет: На мощной карте с большим объёмом VRAM можно увеличивать для ускорения. Если модель крашится – первым делом пробуйте уменьшать эти значения.


🚀 Параметры для ускорения (MTP, Flash Attention)

🔮 Multi-Token Prediction (MTP)

Что это: Технология, позволяющая предсказывать несколько токенов за раз.
Ключевая метрика: Draft Acceptance Rate (процент принимаемых «черновых» токенов).

  • < 50% – плохо, MTP неэффективен.
  • 60-75% – нормально.
  • > 80% – отлично.
    Параметры: spec_draft_nmax (например, 2 или 4). Увеличивайте, если Draft Acceptance высокий.
    Важно:* Для работы MTP нужна CUDA версии 13.3 (избегайте 13.2, так как может выдавать мусор).

⚡ Flash Attention

Что это: Оптимизированный алгоритм внимания, сильно ускоряющий генерацию.
Совет: Убедитесь, что параметр flash_attn включён в вашей конфигурации.


🖥️ Аппаратные настройки

🎮 Распределение по видеокартам (Tensor Split, -ts)

Зачем: Если у вас несколько видеокарт (особенно разного объёма VRAM), нужно явно указать, как распределять слои модели.
Как: Командой nvidia-smi -L узнайте порядок карт в системе (GPU 0, 1, 2...). Затем задайте пропорцию, например:

  • -ts 1 1 для двух одинаковых карт.
  • -ts 24 12 8 16 для четырёх карт с разным объёмом памяти.
  • -ts 0 0 для автоматического распределения (может работать неоптимально).

🧵 Параллелизм (-parallel)

Рекомендация: Если вы работаете с моделью в одном экземпляре, устанавливайте -parallel 1. Большие значения могут не давать прироста.


📊 Два типа скорости

  1. Prompt Processing (PP): Скорость обработки входного промпта. Зависит от количества активных ядер GPU. На видеокарте происходит почти мгновенно.
  2. Token Generation (TG): Скорость генерации ответа. Главный параметр для пользовательского восприятия. Зависит от пропускной способности памяти (VRAM), размера модели и квантизации. Всегда медленнее PP, так как токены генерируются последовательно.

✅ Выводы

  1. Контекст и температура – базовые параметры для удобства и качества кода.
  2. Top-K, Top-P и Penalties требуют специфичной настройки под программирование.
  3. Для ускорения используйте MTP (следите за Draft Acceptance) и Flash Attention.
  4. При использовании нескольких GPU настраивайте Tensor Split.
  5. Всегда обновляйте драйверы (CUDA) для поддержки новых оптимизаций.
  6. Тестируйте настройки комплексно, оценивая не только скорость (t/s), но и итоговое качество кода и стабильность работы.
🤖 Настройка локальной LLM для программирования — конспект на EchoNote