Skip to content
EN

Quantization для LLM

Коротко:

Quantization — техника compression модели через замену FP16/FP32 weights на меньшие precision (INT8, INT4, INT2). 70B LLM: FP16 = 140 GB RAM → INT4 = 35 GB (fits в single H100 80GB). Accuracy loss минимальный (1-3% perplexity) для INT4. Popular formats: GGUF (llama.cpp), GPTQ, AWQ, bitsandbytes. Enables inference на consumer GPUs (3090, 4090).

Ниже: подробности, пример, смежные термины, FAQ.

Проверить свой сайт →

Подробности

  • Precision levels: FP16 (baseline) → INT8 (2x compression) → INT4 (4x) → INT2 (8x, experimental)
  • GGUF: Universal format для llama.cpp, работает на CPU + GPU
  • GPTQ: quantization с calibration dataset, лучший compression-quality tradeoff
  • AWQ (Activation-aware Weight Quantization) — latest, best accuracy при INT4
  • Tools: llama.cpp, vLLM, TGI (Text Generation Inference), transformers с bitsandbytes

Пример

# Ollama — run Llama 3 70B INT4 quantized
$ ollama pull llama3:70b  # ~40 GB INT4 GGUF
$ ollama run llama3:70b "Explain TCP"

# Python with transformers + bitsandbytes
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
config = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type='nf4')
model = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-3-70B', quantization_config=config)

Смежные термины

Что такое квантование LLM — INT8/INT4?

Квантование LLM (Large Language Models) — это процесс преобразования весов нейронных сетей в меньшие форматы, такие как INT8 и INT4, для оптимизации вычислительных ресурсов и ускорения работы моделей. INT8 позволяет сократить размер модели в 4 раза по сравнению с плавающей запятой FP32, а INT4 может уменьшить её размер ещё больше, до 8 раз. Это важно для применения LLM в реальном времени на устройствах с ограниченными ресурсами.

Преимущества и недостатки квантования INT8 и INT4

Квантование INT8 и INT4 предоставляет несколько преимуществ, таких как:

  • Снижение потребления памяти: Модели, использующие INT8, занимают на 75% меньше места, чем FP32, а INT4 — ещё меньше.
  • Увеличение скорости обработки: Операции с целочисленными значениями выполняются быстрее на современных процессорах и графических ускорителях.
  • Энергоэффективность: Меньшее количество ресурсов требует меньше энергии, что особенно важно для мобильных приложений.

Однако есть и недостатки:

  • Потеря точности: Квантование может привести к снижению точности модели, что особенно критично для задач, требующих высокой точности.
  • Сложность внедрения: Процесс квантования требует дополнительных шагов в обучении и настройке моделей.

Практический пример квантования модели с использованием TensorFlow

Для квантования модели с использованием библиотек TensorFlow можно использовать следующий пример кода:

import tensorflow as tf

# Загружаем предварительно обученную модель
model = tf.keras.models.load_model('path_to_model')

# Применяем квантование
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_types = [tf.int8]
quantized_model = converter.convert()

# Сохраняем квантованную модель
with open('quantized_model.tflite', 'wb') as f:
    f.write(quantized_model)

В данном примере происходит загрузка модели, её квантование до формата INT8 с использованием TensorFlow Lite и сохранение результата в файл. Это позволяет использовать модель с меньшим потреблением памяти и высокой скоростью выполнения.

Больше по теме

Часто задаваемые вопросы

Какой потеря accuracy?

INT8 — <1% perplexity. INT4 — 1-3% (acceptable). INT2 — 5-10% (noticeable).

INT4 GGUF — как работает?

Llama.cpp packs weights 4-bit per channel с scale factor. Dequantized on-the-fly в kernel. Minimal speed penalty при compute-bound.

Fine-tune quantized model?

QLoRA — да. Training finetunes LoRA adapters (FP16), base model остаётся INT4. 1-stop setup, cheapest fine-tuning.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.