
Статья 1. Базовая техническая часть
Фокус: выбор модели под VRAM, методы квантования, формат GGUF, fine-tuning и метрики деградации.
Локальный запуск модели ограничивается не только размером файла. В рабочую память должны поместиться веса модели, KV-cache для контекста, служебные буферы рантайма и часть временных данных. На практике главный ресурс - VRAM: она быстрее системной RAM и находится непосредственно рядом с вычислительными блоками GPU.
Если модель не помещается в VRAM, часть слоёв можно выгрузить в RAM, но скорость падает. Причина в том, что данные начинают идти через более медленную системную память и PCIe. RAM расширяет вместимость, но не заменяет VRAM по пропускной способности (вместе 100+ токенов в секунду - ожидайте 5-10).
KV-cache (память о деталях диалога в прошлом) растёт почти линейно с длиной контекста. Поэтому модель, которая запускается на 4K токенов, может не поместиться или заметно замедлиться на 64K токенов. При выборе файла нужно смотреть не только на размер GGUF, но и на запас VRAM под контекст.

2. Fine-tuning (дообучение уже готовой языковой модели на своих данных) без полного обновления весов: LoRA и QLoRA
Полный fine-tuning обновляет все или почти все веса модели. Это даёт максимальную гибкость, но требует много памяти: кроме весов нужно хранить градиенты, активации и состояния оптимизатора. LoRA решает задачу иначе: базовая матрица остаётся замороженной, а обучается небольшая низкоранговая добавка.
LoRA удобна тем, что вместо полного изменения матрицы обучаются две компактные матрицы адаптера. QLoRA добавляет ещё один уровень экономии: базовая модель хранится в квантизированном виде, а обучаются только LoRA-адаптеры. Поэтому QLoRA часто становится практическим вариантом fine-tuning на ограниченной VRAM.
Важно не смешивать обучение и последующий запуск. LoRA-адаптер можно хранить отдельно, можно слить с базовой моделью в merged weights, а потом уже экспортировать результат в GGUF для локального inference.


3. GGUF и квантование: что именно скачивается и запускается
GGUF - это формат упаковки модели для локального inference. Он хранит метаданные архитектуры, tokenizer, список тензоров и сами тензоры, часто уже в квантизированном виде. GGUF не является способом обучения: это формат доставки модели в рантайм вроде llama.cpp, Ollama, LM Studio или Unsloth Studio.
Квантование уменьшает размер весов за счёт замены точных чисел компактными кодами. Веса обычно квантуются блоками: у каждого блока есть свой scale, поэтому ошибка ниже, чем при одном масштабе на весь тензор. Чем меньше бит, тем меньше размер, но тем выше риск искажения поведения модели.
Обычный GGUF export обычно означает выбор готового метода квантования, например Q8, Q5, Q4, Q3 или Q2. Это не автоматический поиск лучшей схемы для каждого слоя. Хороший результат зависит от модели, метода квантизации, длины контекста, tokenizer/chat template и целевых задач


4. Почему качество кванта нельзя оценивать только по размеру файла
Два файла одинаковой битности могут вести себя по-разному. Причина в чувствительности слоёв: ошибка в одном блоке почти не влияет на результат, а ошибка в другом меняет распределение logits и ломает формат ответа. Поэтому современные агрессивные кванты используют калибровку, importance-aware подход и mixed precision.
imatrix можно понимать как статистику важности, полученную на калибровочных данных. Она помогает распределять ошибку квантования: важные веса и каналы штрафуются сильнее, менее чувствительные блоки можно сжимать агрессивнее. Но калибровочный набор должен быть похож на реальные задачи, иначе важность будет оценена неверно.
Perplexity полезна, но недостаточна. KL divergence сравнивает распределения токенов исходной и квантизированной модели и лучше показывает, насколько квант изменил поведение. Для практики всё равно нужны реальные тесты: русский язык, кодинг, long context, JSON, tool-calling, RAG и типовые пользовательские запросы.



5. Где заканчивается базовая теория и начинается Dynamic Quantization
В базовой статье достаточно понимать принцип: низкая средняя битность не означает одинаковую битность каждого слоя. Mixed precision позволяет хранить критичные блоки точнее, а объёмные и менее чувствительные блоки сжимать сильнее. Именно эта идея лежит в основе заранее подготовленных Dynamic-квантов.
Обычный export в GGUF - это conversion с выбранным методом. Dynamic GGUF - это уже подготовленный артефакт, где схема смешанной точности подбирается под конкретную модель и проверяется метриками. В этой статье это только мост к следующему материалу, потому что подробный разбор Unsloth Dynamic 2.0 Quants требует отдельной фокусировки


6. Полный workflow локальной модели
Практический путь выглядит так: выбирается базовая модель, готовится датасет и chat template, затем при необходимости выполняется LoRA/QLoRA fine-tuning. Результат хранится как адаптер, merged model или checkpoint, после чего модель экспортируется в GGUF и запускается в локальном runtime.
На границах этапов чаще всего возникают ошибки. GGUF не обучает модель, а только упаковывает её для inference. Если exported GGUF ведёт себя хуже исходного checkpoint, проблема может быть не только в квантовании: часто влияют tokenizer, EOS token, chat template и параметры запуска.

Что будет во второй статье
Следующая статья будет посвящена Unsloth Dynamic 2.0 Quants. Там фокус сместится с общей теории на конкретный стек Unsloth: где лежат готовые UD-кванты, как они отличаются от обычного GGUF export, как читать названия файлов, почему Dynamic 2.0 является model-specific mixed-precision подходом и как математически объяснить выбор важных и менее важных слоёв.
Источники и опорные материалы
Unsloth Dynamic 2.0 GGUFs: https://unsloth.ai/docs/basics/unsloth-dynamic-2.0-ggufs
Unsloth: Saving to GGUF: https://unsloth.ai/docs/basics/inference-and-deployment/saving-to-gguf
Unsloth: LoRA hyperparameters guide: https://unsloth.ai/docs/get-started/fine-tuning-llms-guide/lora-hyperparameters-guide
Unsloth: Qwen3.5 GGUF Benchmarks: https://unsloth.ai/docs/models/qwen3.5/gguf-benchmarks
LoRA: Low-Rank Adaptation of Large Language Models: https://arxiv.org/abs/2106.09685
QLoRA: Efficient Finetuning of Quantized LLMs: https://arxiv.org/abs/2305.14314
llama.cpp quantize README: https://github.com/ggml-org/llama.cpp/blob/master/tools/quantize/README.md
GGUF format documentation: https://github.com/ggml-org/ggml/blob/master/docs/gguf.md