# Modülleri tam hassasiyette tutun

Bazı modüller, kuantize edildiğinde diğerlerinden daha fazla doğruluk kaybına uğrar. Bu modüllerin orijinal hassasiyetinde tutulması biraz bellek maliyeti getirir ve doğruluğun büyük kısmını geri kazanabilir. Bu durum, bir modeli yüklerken kuantize ettiğinizde geçerlidir. Önceden kuantize edilmiş bir checkpoint, hangi modüllerin atlandığını zaten kaydeder.

## Varsayılan atlanan modüller

Bir atlanacak modüller listesi iletmezseniz, çoğu yöntem bu modülleri kuantize edilmemiş olarak bırakır.

- Çıktı gömlemeleri, genellikle `lm_head`.
- `lm_head` ile ağırlıkları paylaşan giriş gömme (embedding) gibi diğer ağırlıklara bağlı ağırlıklar.
- Modelin son modülü.
- Modelin `_keep_in_fp32_modules` içinde listelendiği modüller.

Bazı yöntemler kendi varsayılanlarını ayarlar. [HQQ](./hqq), [FP-Quant](./fp_quant) ve [Four Over Six](./fouroversix) yalnızca `lm_head` modülünü atlar. [SINQ](./sinq) yalnızca `_keep_in_fp32_modules` içindeki modülleri atlar.

## Bir atla listesi (skip list) iletin

Modül adlarını, yöntemin yapılandırmasındaki atla-listesi (skip-list) argümanına iletin. Aşağıdaki örnek, `lm_head` ve MLP aşağı yönlü projeksiyonlarını [bitsandbytes](./bitsandbytes) ile bf16'da tutar.

```py
from transformers import AutoModelForCausalLM, BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    llm_int8_skip_modules=["lm_head", "mlp.down_proj"],
)
model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-0.6B",
    quantization_config=quantization_config,
    device_map="auto",
)
```

> [!WARNING]
> Bir atlanır liste (skip list), varsayılan atlanan modüllere eklemek yerine onları değiştirir; ancak `_keep_in_fp32_modules` içindeki modüller atlanmaya devam eder. Hâlâ `lm_head`'in kuantize edilmemesini istiyorsanız listenize ekleyin. [AWQ](./awq) istisnadır ve listenizi varsayılanlara ekler.

Argümanın adı, metoda bağlıdır.

| Argüman | Yöntemler |
|---|---|
| `modules_to_not_convert` | AWQ, EETQ, FBGEMM FP8, Fine-grained FP8, Four Over Six, FP-Quant, HIGGS, Metal, MXFP4, NVFP4, Quanto, SINQ ve torchao dahil olmak üzere çoğu yöntem |
| `llm_int8_skip_modules` | bitsandbytes, hem 4-bit hem de 8-bit modda |
| `skip_modules` | HQQ |

[GPTQ](./gptq) tam tersi bir yaklaşım benimser. `modules_in_block_to_quantize`, kuantize edilecek modülleri listeler ve blokta kalan her şey kuantize edilmeden bırakılır.

## Modül adlarını eşleştir

Çoğu yöntem, atlanacaklar listesindeki her girdiyi `model.named_modules()` içindeki tam modül adlarıyla, örneğin `model.layers.3.mlp.down_proj` gibi, eşleştirir. [HQQ](./hqq) istisnadır ve katman adlarını birebir eşleştirir. Bir girdi üç yoldan biriyle eşleşir.

- Bir sonek olarak. `mlp.down_proj`, her katmandaki aşağı projeksiyonla eşleşir.
- Bir modül sınırında sona eren bir önek olarak. `model.layers.1`, `model.layers.1.mlp` ile eşleşir ancak `model.layers.11.mlp` ile eşleşmez.
- Aynı sınırı olan bir düzenli ifade olarak. `model\.layers\.(0|1)` ilk iki katmanı eşleştirir.

Doğru girdileri bulmak için modül adlarını yazdırın.

```py
for name, _ in model.named_modules():
    print(name)
```

## Hangi modüllerin atlanacağını seçin

Yuvarlama hatasının doğruluğu en çok etkilediği ve en az bellek tasarrufu sağladığı modülleri atlayın. Varsayılanlarla başlayın, görevinizde doğruluğu ölçün ve yalnızca doğruluk düşerse modüller ekleyin.

- `lm_head`, sözlükteki her token için logitleri üretir; bu nedenle oradaki hatalar doğrudan seçilen tokenı değiştirir. Varsayılan olarak atlanır. Büyük sözlüklere sahip modellerde ayrıca en büyük tek katmanlardan biridir, bu yüzden doğruluk korunuyorsa onu kuantizelemek gerçek bir bellek tasarrufu sağlar.
- Qwen3-MoE'deki `mlp.gate` veya gpt-oss'teki `mlp.router` gibi MoE yönlendirici veya kapı katmanları, her token'ın hangi uzmanlara gideceğini belirler. Bu katmanlar çok küçüktür ve bir yuvarlama hatası bir token'ı yanlış uzmana yönlendirebileceğinden, neredeyse her zaman atlanmaya değerler.
- Görüntü-dil modellerindeki görüntü kodlayıcıları ve çok modlu projeksiyonlar, dil modeline kıyasla küçüktür ve bu bileşenlerdeki hatalar her görüntü jetonunu bozar. Görüntü anlama yeteneği düşerse bunları atlayın.
- İlk ve son birkaç decoder katmanı, orta katmanlara kıyasla genellikle daha fazla aktivasyon aykırılığına sahiptir. Kuantize edilmiş modelin doğruluğu bf16'ya göre belirgin şekilde daha kötü olduğunda bunları atlayın.

Atladığınız her modül, orijinal hassasiyetinde kalır ve bellek maliyeti oluşturur. Atlanacaklar listesine ekleme yaptıktan sonra modelin hâlâ sığıp sığmadığını kontrol edin.

