# AQLM

언어 모델의 가산 양자화([AQLM](https://huggingface.co/papers/2401.06118))는 여러 가중치를 함께 양자화하며, 가중치 간의 상호 의존성을 활용합니다. AQLM은 8~16개의 가중치 그룹을 여러 벡터 코드의 합으로 표현합니다.

AQLM은 [PEFT](https://huggingface.co/docs/peft) 라이브러리를 사용하여 [LoRA](https://huggingface.co/docs/peft/package_reference/lora)로 fine-tuning을 지원하며, [torch.compile](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html)과 완전히 호환되어 더 빠른 추론과 학습을 제공합니다.

GPU 및 CPU 추론과 학습을 위한 커널 지원이 포함된 AQLM 라이브러리를 설치하려면 아래 명령을 실행하세요.

```bash
pip install aqlm[gpu,cpu]
```

[from_pretrained()](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained)로 AQLM 양자화 모델을 로드합니다.

```python
from transformers import AutoTokenizer, AutoModelForCausalLM

quantized_model = AutoModelForCausalLM.from_pretrained(
    "ISTA-DASLab/Mixtral-8x7b-AQLM-2Bit-1x16-hf",
    dtype="auto", 
    device_map="auto"
)
```

## 구성

AQLM 양자화 설정은 주로 사용되는 코드북의 수와 비트 단위의 코드북 크기에 따라 달라집니다. 가장 인기 있는 설정과 지원되는 추론 커널은 아래에 나와 있습니다.

| 커널 | 코드북의 수 | Codebook 크기, 비트 | 기호 | 정확도 | 속도 향상     | 빠른 GPU 추론 | 빠른 CPU 추론 |
|---|---------------------|---------------------|----------|-------------|-------------|--------------------|--------------------|
| Triton | K                   | N                  | KxN     | -        | 약 0.7배 | ✅                  | ❌                  |
| CUDA | 1                   | 16                  | 1x16     | 최고        | 최대 약 1.3배 | ✅                  | ❌                  |
| CUDA | 2                   | 8                   | 2x8      | 확인          | 최대 약 3.0배 | ✅                  | ❌                  |
| Numba | K                   | 8                   | Kx8      | 좋습니다        | 최대 약 4.0배 | ❌                  | ✅                  |

## 리소스

AQLM 데모 [노트북](https://colab.research.google.com/drive/1-xZmBRXT5Fm3Ghn4Mwa2KRypORXb855X?usp=sharing)을 실행하여 모델을 양자화하고, 양자화된 모델을 Hub에 푸시하는 등 추가 예제를 확인해 보세요.

더 많은 예제 데모 노트북은 AQLM [저장소](https://github.com/Vahe1994/AQLM)에서 확인하세요.

