К основному содержанию
скилл CX Codex

hqq-quantization — скилл для Claude Code: квантизация LLM

Скилл для квантизации весов LLM в 8/4/3/2/1 бит без калибровочного датасета. Пригодится, когда нужно сжать модель за минуты и отдать её в vLLM или Transformers.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Orchestra-Research/AI-Research-SKILLs --skill hqq-quantization -a claude-code
npx skills add Orchestra-Research/AI-Research-SKILLs --skill hqq -a claude-code
Открыть на GitHub

Что делает hqq-quantization

Скилл объясняет агенту, как применять Half-Quadratic Quantization: вместо подбора калибровочных данных вы задаёте BaseQuantizeConfig с числом бит, размером группы и осью, а HQQLinear заменяет обычный nn.Linear. Для полной модели то же самое делается через HqqConfig в AutoModelForCausalLM.from_pretrained.

Внутри описаны несколько бэкендов вывода: чистый PyTorch, pytorch_compile, ATEN, TorchAO int4, GemLite, BitBlas и Marlin. Marlin рассчитан на GPU Ampere и новее, BitBlas и TorchAO требуют отдельных пакетов. Есть раздел про смешанную точность — внимание в 4 бита, MLP в 2 бита — и про дообучение квантованной модели через LoRA/PEFT.

Понадобятся hqq>=0.2.0 и torch>=2.0.0. Если работаете с моделями на HuggingFace Hub, готовые HQQ-веса можно просто загрузить и запустить генерацию. Для серверного вывода скилл показывает запуск через vLLM с параметром quantization="hqq".

Какие задачи решает

  • сжать модель в 4 бита без калибровочного датасета
  • уложить LLM в память одной GPU через 2-битную квантизацию
  • подобрать бэкенд вывода под конкретную видеокарту
  • смешать точность по слоям: внимание в 4 бита, MLP в 2
  • дообучить квантованную модель через LoRA

Примеры запросов агенту

  • Сквантуй meta-llama/Llama-3.1-8B в 4 бита через HQQ и сохрани в ./llama-8b-hqq-4bit
  • Настрой HQQ с nbits=2 и group_size=16 для MLP-слоёв, внимание оставь в 4 бита
  • Запусти HQQ-модель через vLLM с quantization="hqq"

Как установить hqq-quantization

1Через Skills CLI (Vercel)

npx skills add Orchestra-Research/AI-Research-SKILLs --skill hqq-quantization -a claude-code
npx skills add Orchestra-Research/AI-Research-SKILLs --skill hqq -a claude-code

2Вручную: положить файлы

~/.claude/skills/hqq/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/hqq/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о hqq-quantization

Как установить hqq-quantization в Claude?

Выполните npx skills add Orchestra-Research/AI-Research-SKILLs --skill hqq-quantization -a claude-code, затем npx skills add Orchestra-Research/AI-Research-SKILLs --skill hqq -a claude-code. Файл скилла окажется в ~/.claude/skills/hqq/SKILL.md.

Что делает hqq-quantization?

Описывает квантизацию весов LLM методом Half-Quadratic Quantization: настройку BaseQuantizeConfig, замену nn.Linear на HQQLinear, выбор бэкенда и загрузку готовых HQQ-моделей из HuggingFace.

Какие зависимости нужны для работы скилла?

hqq>=0.2.0 и torch>=2.0.0. Отдельные бэкенды вроде BitBlas, TorchAO или Marlin ставятся дополнительно, если планируете использовать именно их.

Исходный текст

SKILL.md · MIT
---
name: hqq-quantization
description: Half-Quadratic Quantization for LLMs without calibration data. Use when quantizing models to 4/3/2-bit precision without needing calibration datasets, for fast quantization workflows, or when deploying with vLLM or HuggingFace Transformers.
version: 1.0.0
author: Orchestra Research
license: MIT
tags: [Quantization, HQQ, Optimization, Memory Efficiency, Inference, Model Compression]
dependencies: [hqq>=0.2.0, torch>=2.0.0]
---

# HQQ - Half-Quadratic Quantization

Fast, calibration-free weight quantization supporting 8/4/3/2/1-bit precision with multiple optimized backends.

## When to use HQQ

**Use HQQ when:**
- Quantizing models without calibration data (no dataset needed)
- Need fast quantization (minutes vs hours for GPTQ/AWQ)
- Deploying with vLLM or HuggingFace Transformers
- Fine-tuning quantized models with LoRA/PEFT
- Experimenting with extreme quantization (2-bit, 1-bit)

**Key advantages:**
- **No calibration**: Quantize any model instantly without sample data
- **Multiple backends**: PyTorch, ATEN, TorchAO, Marlin, BitBlas for optimized inference
- **Flexible precision**: 8/4/3/2/1-bit with configurable group sizes
- **Framework integration**: Native HuggingFace and vLLM support
- **PEFT compatible**: Fine-tune quantized models with LoRA

**Use alternatives instead:**
- **AWQ**: Need calibration-based accuracy, production serving
- **GPTQ**: Maximum accuracy with calibration data available
- **bitsandbytes**: Simple 8-bit/4-bit without custom backends
- **llama.cpp/GGUF**: CPU inference, Apple Silicon deployment

## Quick start

### Installation

```bash
pip install hqq

# With specific backend
pip install hqq[torch]      # PyTorch backend
pip install hqq[torchao]    # TorchAO int4 backend
pip install hqq[bitblas]    # BitBlas backend
pip install hqq[marlin]     # Marlin backend
```

### Basic quantization

```python
from hqq.core.quantize import BaseQuantizeConfig, HQQLinear
import torch.nn as nn

# Configure quantization
config = BaseQuantizeConfig(
    nbits=4,           # 4-bit quantization
    group_size=64,     # Group size for quantization
    axis=1             # Quantize along output dimension
)

# Quantize a linear layer
linear = nn.Linear(4096, 4096)
hqq_linear = HQQLinear(linear, config)

# Use normally
output = hqq_linear(input_tensor)
```

### Quantize full model with HuggingFace

```python
from transformers import AutoModelForCausalLM, HqqConfig

# Configure HQQ
quantization_config = HqqConfig(
    nbits=4,
    group_size=64,
    axis=1
)

# Load and quantize
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    quantization_config=quantization_config,
    device_map="auto"
)

# Model is quantized and ready to use
```

## Core concepts

### Quantization configuration

HQQ uses `BaseQuantizeConfig` to define quantization parameters:

```python
from hqq.core.quantize import BaseQuantizeConfig

# Standard 4-bit config
config_4bit = BaseQuantizeConfig(
    nbits=4,           # Bits per weight (1-8)
    group_size=64,     # Weights per quantization group
    axis=1             # 0=input dim, 1=output dim
)

# Aggressive 2-bit config
config_2bit = BaseQuantizeConfig(
    nbits=2,
    group_size=16,     # Smaller groups for low-bit
    axis=1
)

# Mixed precision per layer type
layer_configs = {
    "self_attn.q_proj": BaseQuantizeConfig(nbits=4, group_size=64),
    "self_attn.k_proj": BaseQuantizeConfig(nbits=4, group_size=64),
    "self_attn.v_proj": BaseQuantizeConfig(nbits=4, group_size=64),
    "mlp.gate_proj": BaseQuantizeConfig(nbits=2, group_size=32),
    "mlp.up_proj": BaseQuantizeConfig(nbits=2, group_size=32),
    "mlp.down_proj": BaseQuantizeConfig(nbits=4, group_size=64),
}
```

### HQQLinear layer

The core quantized layer that replaces `nn.Linear`:

```python
from hqq.core.quantize import HQQLinear
import torch

# Create quantized layer
linear = torch.nn.Linear(4096, 4096)
hqq_layer = HQQLinear(linear, config)

# Access quantized weights
W_q = hqq_layer.W_q           # Quantized weights
scale = hqq_layer.scale       # Scale factors
zero = hqq_layer.zero         # Zero points

# Dequantize for inspection
W_dequant = hqq_layer.dequantize()
```

### Backends

HQQ supports multiple inference backends for different hardware:

```python
from hqq.core.quantize import HQQLinear

# Available backends
backends = [
    "pytorch",          # Pure PyTorch (default)
    "pytorch_compile",  # torch.compile optimized
    "aten",            # Custom CUDA kernels
    "torchao_int4",    # TorchAO int4 matmul
    "gemlite",         # GemLite CUDA kernels
    "bitblas",         # BitBlas optimized
    "marlin",          # Marlin 4-bit kernels
]

# Set backend globally
HQQLinear.set_backend("torchao_int4")

# Or per layer
hqq_layer.set_backend("marlin")
```

**Backend selection guide:**
| Backend | Best For | Requirements |
|---------|----------|--------------|
| pytorch | Compatibility | Any GPU |
| pytorch_compile | Moderate speedup | torch>=2.0 |
| aten | Good balance | CUDA GPU |
| torchao_int4 | 4-bit inference | torchao installed |
| marlin | Maximum 4-bit speed | Ampere+ GPU |
| bitblas | Flexible bit-widths | bitblas installed |

## HuggingFace integration

### Load pre-quantized models

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

# Load HQQ-quantized model from Hub
model = AutoModelForCausalLM.from_pretrained(
    "mobiuslabsgmbh/Llama-3.1-8B-HQQ-4bit",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B")

# Use normally
inputs = tokenizer("Hello, world!", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=50)
```

### Quantize and save

```python
from transformers import AutoModelForCausalLM, HqqConfig

# Quantize
config = HqqConfig(nbits=4, group_size=64)
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    quantization_config=config,
    device_map="auto"
)

# Save quantized model
model.save_pretrained("./llama-8b-hqq-4bit")

# Push to Hub
model.push_to_hub("my-org/Llama-3.1-8B-HQQ-4bit")
```

### Mixed precision quantization

```python
from transformers import AutoModelForCausalLM, HqqConfig

# Different precision per layer type
config = HqqConfig(
    nbits=4,
    group_size=64,
    # Attention layers: higher precision
    # MLP layers: lower precision for memory savings
    dynamic_config={
        "attn": {"nbits": 4, "group_size": 64},
        "mlp": {"nbits": 2, "group_size": 32}
    }
)
```

## vLLM integration

### Serve HQQ models with vLLM

```python
from vllm import LLM, SamplingParams

# Load HQQ-quantized model
llm = LLM(
    model="mobiuslabsgmbh/Llama-3.1-8B-HQQ-4bit",
    quantization="hqq",
    dtype="float16"
)

# Generate
sampling_params = SamplingParams(temperature=0.7, max_tokens=100)
outputs = llm.generate(["What is machine learning?"], sampling_params)
```

### vLLM with custom HQQ config

```python
from vllm import LLM

llm = LLM(
    model="meta-llama/Llama-3.1-8B",
    quantization="hqq",
    quantization_config={
        "nbits": 4,
        "group_size": 64
    }
)
```

## PEFT/LoRA fine-tuning

### Fine-tune quantized models

```python
from transformers import AutoModelForCausalLM, HqqConfig
from peft import LoraConfig, get_peft_model

# Load quantized model
quant_config = HqqConfig(nbits=4, group_size=64)
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    quantization_config=quant_config,
    device_map="auto"
)

# Apply LoRA
lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)

model = get_peft_model(model, lora_config)

# Train normally with Trainer or custom loop
```

### QLoRA-style training

```python
from transformers import TrainingArguments, Trainer

training_args = TrainingArguments(
    output_dir="./hqq-lora-output",
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    learning_rate=2e-4,
    num_train_epochs=3,
    fp16=True,
    logging_steps=10,
    save_strategy="epoch"
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    data_collator=data_collator
)

trainer.train()
```

## Quantization workflows

### Workflow 1: Quick model compression

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, HqqConfig

# 1. Configure quantization
config = HqqConfig(nbits=4, group_size=64)

# 2. Load and quantize (no calibration needed!)
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    quantization_config=config,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B")

# 3. Verify quality
prompt = "The capital of France is"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0]))

# 4. Save
model.save_pretrained("./llama-8b-hqq")
tokenizer.save_pretrained("./llama-8b-hqq")
```

### Workflow 2: Optimize for inference speed

```python
from hqq.core.quantize import HQQLinear
from transformers import AutoModelForCausalLM, HqqConfig

# 1. Quantize with optimal backend
config = HqqConfig(nbits=4, group_size=64)
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    quantization_config=config,
    device_map="auto"
)

# 2. Set fast backend
HQQLinear.set_backend("marlin")  # or "torchao_int4"

# 3. Compile for additional speedup
import torch
model = torch.compile(model)

# 4. Benchmark
import time
inputs = tokenizer("Hello", return_tensors="pt").to(model.device)
start = time.time()
for _ in range(10):
    model.generate(**inputs, max_new_tokens=100)
print(f"Avg time: {(time.time() - start) / 10:.2f}s")
```

## Best practices

1. **Start with 4-bit**: Best quality/size tradeoff for most models
2. **Use group_size=64**: Good balance; smaller for extreme quantization
3. **Choose backend wisely**: Marlin for 4-bit Ampere+, TorchAO for flexibility
4. **Verify quality**: Always test generation quality after quantization
5. **Mixed precision**: Keep attention at higher precision, compress MLP more
6. **PEFT training**: Use LoRA r=16-32 for good fine-tuning results

## Common issues

**Out of memory during quantization:**
```python
# Quantize layer-by-layer
from hqq.models.hf.base import AutoHQQHFModel

model = AutoHQQHFModel.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    quantization_config=config,
    device_map="sequential"  # Load layers sequentially
)
```

**Slow inference:**
```python
# Switch to optimized backend
from hqq.core.quantize import HQQLinear
HQQLinear.set_backend("marlin")  # Requires Ampere+ GPU

# Or compile
model = torch.compile(model, mode="reduce-overhead")
```

**Poor quality at 2-bit:**
```python
# Use smaller group size
config = BaseQuantizeConfig(
    nbits=2,
    group_size=16,  # Smaller groups help at low bits
    axis=1
)
```

## References

- **[Advanced Usage](references/advanced-usage.md)** - Custom backends, mixed precision, optimization
- **[Troubleshooting](references/troubleshooting.md)** - Common issues, debugging, benchmarks

## Resources

- **Repository**: https://github.com/mobiusml/hqq
- **Paper**: Half-Quadratic Quantization
- **HuggingFace Models**: https://huggingface.co/mobiuslabsgmbh
- **Version**: 0.2.0+
- **License**: Apache 2.0

© Orchestra Research · MIT · Orchestra-Research/AI-Research-SKILLs

Похожие скиллы

Всё по теме «ИИ и ML» →
AgentDB Performance Optimization ruvnet Скилл для оптимизации векторных баз AgentDB: снижение памяти в 4–32 раза через квантизацию, ускорение поиска в 150 раз через индексирование HNSW, кэширование и пакетные операции. CX Codex +1 1 100установок vector-index-tuning Seth Hobson Скилл помогает настраивать векторные индексы под задержку, полноту поиска и расход памяти. Пригодится при работе с HNSW, квантизацией и масштабированием поиска. CX Codex 10 700установок quantized-export Seth Hobson Скилл экспортирует одобренные чекпойнты и LoRA-адаптеры в FP8, AWQ, GGUF или merged safetensors. Нужен перед развёртыванием модели. CX Codex 2 600установок gke-inference официальный google Готовит Kubernetes-манифесты для AI/ML-инференса на GKE и помогает выбрать модельный профиль и ускоритель для нового сервинга. CX Codex 6 791установок tao-run-inference-service NVIDIA Corporation Скилл развёртывает микросервис инференса моделей NVIDIA TAO в контейнере и останавливает его. Пригодится для работы с контрольными точками и отправки запросов к эндпоинту. CX Codex +1 1 600установок jetson-inference-mem-tune Jetson Team Подбирает стек инференса и флаги памяти для LLM или VLM на NVIDIA Jetson. Нужен, когда модель не влезает или сервер падает по OOM. CX Codex +1 1 200установок

Из того же набора66

tensorboard Скилл учит агента логировать метрики обучения, строить гистограммы весов и открывать TensorBoard. Пригодится, когда нужно сравнить прогоны или найти узкое место в модели. CX Codex +1 956установок optimizing-attention-flash Скилл для оптимизации внимания трансформеров через Flash Attention: ускорение в 2-4 раза и сокращение памяти в 10-20 раз. CX Codex +1 967установок quantizing-models-bitsandbytes Скилл помогает квантовать LLM в 8-бит и 4-бит через bitsandbytes, сокращая расход памяти GPU на 50–75%. Пригодится, когда нужно уместить тяжеловесную модель в видеопамять. CX Codex +1 966установок grpo-rl-training Скилл для дообучения моделей методом GRPO через библиотеку TRL: готовые шаблоны функций награды и конфиги обучения. CX Codex +1 963установок verl-rl-training Скилл помогает настраивать обучение LLM методами подкрепления (RLHF, GRPO, PPO) через библиотеку verl с поддержкой Ray, FSDP и vLLM. CX Codex +1 962установок axolotl Подсказывает агенту, как настроить обучение и дообучение LLM через Axolotl: YAML-конфиги, LoRA и QLoRA, методы DPO, KTO, ORPO, GRPO. CX Codex +1 960установок huggingface-tokenizers Скилл помогает настроить быструю токенизацию текста на базе библиотеки Tokenizers от Hugging Face. Пригодится при подготовке датасетов и обучении собственных словарей. CX Codex +1 959установок sentence-transformers Создаёт локальные векторные представления текста и изображений для RAG, семантического поиска и сравнения документов. CX Codex +1 959установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой