Квантизация

Подробно о методах сжатия языковых моделей для запуска на ограниченном железе.

🇬🇧 English version: quantization.md

Что такое квантизация

Квантизация - это процесс уменьшения точности представления весов нейронной сети (обычно с 32-битной плавающей точки до меньшего количества битов) для уменьшения размера модели и ускорения вычислений при минимальной потере качества.

Почему это важно для локального запуска

Без квантизации большие языковые модели просто не поместятся в оперативную память большинства потребительских устройств:

Основные форматы квантизации

GGUF (GPT-Generated Unified Format)

Основной формат для llama.cpp и сопутствующих инструментов (Ollama, LM Studio, etc.)

Kванты (K-quants) в GGUF

Это специальные схемы квантизации, разработанные для llama.cpp, которые используют разное количество битов для разных типов весов в зависимости от их важности.

Тип Среднее битов/вес Описание Когда использовать
Q2_K 2.0 Очень низкое качество Только при экстремальной нехватке памяти
Q3_K_S 2.5 Низкое качество Очень ограниченные ресурсы
Q3_K_M 3.0 Низкое-среднее качество При очень tight fit
Q4_0 4.0 Удовлетворительное Базовый 4-bit uniform
Q4_K_S 4.3 Хорошее качество Баланс размера и качества
Q4_K_M 4.8 Отличное качество Рекомендуется по умолчанию
Q4_K_M 4.8 Отличное + Хороший выбор для большинства задач
Q5_0 5.0 Очень хорошее Когда нужно чуть больше качества
Q5_K_S 5.3 Отличное качество Превосходный баланс
Q5_K_M 5.5 Отличное + Для требовательных задач
Q6_K 6.0 Высокое качество Для кода, математики, точных вычислений
Q8_0 8.0 Почти как FP16 Когда памяти достаточно и нужно максимум качества
F16 16.0 Максимальное качество Эксперименты, сравнение baseline

Как это работает на примере

В Q4_K_M:

Сравнение качества (пример для 7B модели)

| Метод | Размер | Perplexity (ниже = лучше) | Относительная скорость | |—|—|—|—| | F16 (FP16) | ~13.5 GB | Baseline (5.12) | 1.0x | | Q8_0 | ~10.4 BC | 5.15 (~+0.6%) | ~0.9x | | Q6_K | ~7.8 GB | 5.20 (~+1.6%) | ~0.7x | | Q5_K_M | ~6.2 GB | 5.25 (~+2.5%) | ~0.6x | | Q4_K_M | ~4.9 GB | 5.30 (~+3.5%) | ~0.5x | | Q4_0 | ~4.5 GB | 5.45 (~+6.4%) | ~0.5x | | Q3_K_M | ~3.6 GB | 5.80 (~+13.3%) | ~0.4x | | Q2_K | ~2.3 GB | 6.50 (~+27.0%) | ~0.3x |

Примечание: 실제 цифры зависят от конкретной модели и задачи

Форматы квантизации для разных инструментов

Ollama / llama.cpp

LM Studio

mlx-lm (Apple Silicon)

GPTQ

AWQ

Как рассчитать, влезает ли модель

Простой способ (для GGUF моделей)

  1. Посмотрите размер файла .gguf (например, 7.2 GB)
  2. Добавьте примерно 1-2 GB для KV cache (зависит от длины контекста)
  3. Добавьте 0.5-1 GB для накладных расходов фреймворка
  4. Итого: размер_файла + 1.5-3.0 GB должно быть меньше доступной RAM

Пример: модель 6.8 GB + 2.0 GB = 8.8 GB должно поместиться в 16 GB RAM с запасом

Для mlx-lm форматов

Аналогично, но обычно требуется на 10-20% меньше места из-за более эффективного хранения на Apple Silicon

Инструменты для работы с квантизациями

llama.cpp

MLX

HuggingFace Transformers + bitsandbytes

Практические советы

  1. Начните с Q4_K_M - для большинства задач это оптимальный выбор
  2. Если нужно больше качества и есть память - переходите на Q5_K_M или Q6_K
  3. Если критична скорость или очень мало памяти - рассмотрите Q3_K_M
  4. Для кода и математических задач - Q6_K часто дает заметное улучшение качества
  5. Не гонитесь за Q8_0/F16 если у вас ограниченные ресурсы - прирост качества часто неоправданно мал по сравнению с увеличением размера
  6. Проверяйте конкретную модель - некоторые модели лучше переносят квантизацию чем другие
  7. Следите за обновлениями - методы квантизации постоянно улучшаются

Ресурсы для дальнейшего чтения


Что дальше

Если хотите Переходите
Посмотреть бенчмарки разных квантизаций на Mac benchmarks/apple-silicon.md
Сравнить инструменты по поддержке квантизаций tools.md
Выбрать модель под свою задачу models.md
Вернуться к навигации README.md

В разделе: getting-started · running-models · models · catalog · quantization · memory-and-context · tools · advanced-setup · troubleshooting · apple-silicon
Связанные разделы: Нулевой уровень · AI-агенты · Use Cases
Навигация: ← Локальные модели · ↑ На главную · 🇬🇧 English