# HIGGS

[HIGGS](https://huggingface.co/papers/2411.17525) 是一种零样本量化算法，它将 Hadamard 预处理与 MSE-Optimal 量化网格相结合，以实现更低的量化误差和业界领先的性能。

HIGGS 的运行时支持通过 [FLUTE](https://github.com/HanGuo97/flute) 库实现。目前仅支持 Llama 3 和 Llama 3.0 的 70B 与 405B 变体，以及 Gemma 2 的 8B 与 27B 变体。此外，HIGGS 目前也不支持量化训练以及一般的反向传播。

运行以下命令以安装 FLUTE。

```bash
pip install flute-kernel
```

```bash
pip install flute-kernel -i https://flute-ai.github.io/whl/cu11.8
```

创建一个 [HiggsConfig](/docs/transformers/main/zh/main_classes/quantization#transformers.HiggsConfig)，用于指定将模型量化到的比特数。

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

model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-2-9b-it",
    quantization_config=HiggsConfig(bits=4),
    device_map="auto",
)
```

> [!TIP]
> 在 ISTA-DASLab 的官方[集合](https://huggingface.co/collections/ISTA-DASLab/higgs-675308e432fd56b7f6dab94e)中查找使用 HIGGS 预量化的模型。

## torch.compile

HIGGS 与 [torch.compile](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html) 完全兼容。

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, HiggsConfig

model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-2-9b-it",
    quantization_config=HiggsConfig(bits=4),
    device_map="auto",
)

model = torch.compile(model)
```

请参阅下表，了解 Llama-3.1-8B-Instruct 在 RTX4090 上的前向传播/秒基准测试。

| 批处理大小 | BF16（使用 `torch.compile`） | HIGGS 4bit（不使用 `torch.compile`） | HIGGS 4bit（使用 `torch.compile`） |
|------------|-----------------------------|----------------------------------|-----------------------------------|
| 1          | 59                          | 41                               | 124                               |
| 4          | 57                          | 42                               | 123                               |
| 16         | 56                          | 41                               | 120                               |

