# HIGGS

[HIGGS](https://huggingface.co/papers/2411.17525)は、Hadamard前処理とMSE最適量子化グリッドを組み合わせることで、量子化誤差を低減し、最先端の性能を実現するゼロショット量子化アルゴリズムです。

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/ja/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]
> HIGGSで事前量子化されたモデルは、ISTA-DASLabの公式[コレクション](https://huggingface.co/collections/ISTA-DASLab/higgs-675308e432fd56b7f6dab94e)でご利用いただけます。

## 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                               |

