# Bir model ince ayarı yapın

Kantize ağırlıklar doğrudan gradyanlarla güncellenemez, bu nedenle kantize bir modeli ince ayarlamak için dondurulmuş kantize ağırlıkların üzerine küçük bir adaptör eğitilir. 4-bit bir modelde [LoRA](https://huggingface.co/docs/peft/main/en/conceptual_guides/lora) adaptörü eğitmek QLoRA olarak bilinir ve bu, bf16'da belleğe sığmayacak bir modelin ince ayarını yapmanızı sağlar.

[Trainer](/docs/transformers/main/tr/main_classes/trainer#transformers.Trainer), eğitimden önce modeli kontrol eder ve şunlardan emin olur:

- Kantizasyon yöntemi eğitimi destekler. [Yöntem seçin](./selecting) bölümündeki İnce ayar sütununa bakın.
- Model, eğitilebilir bir adaptöre bağlıdır. Kuantizasyon farkında eğitimi destekleyen yöntemler istisnadır ve bunlar [aşağıda](#quantization-aware-training) ele alınmaktadır.
- Model `torch.compile` ile derlenmemiş.

## Bir adaptör eğitin

[PEFT](https://huggingface.co/docs/peft/index) paketini yükleyin.

```bash
pip install -U peft
```

Modeli eğitim destekleyen bir yöntemle yükleyin, [add_adapter()](/docs/transformers/main/tr/main_classes/peft#transformers.integrations.PeftAdapterMixin.add_adapter) ile bir LoRA adaptörü ekleyin ve modeli [Trainer](/docs/transformers/main/tr/main_classes/trainer#transformers.Trainer)'a iletin. Aşağıdaki örnek 4-bit [bitsandbytes](./bitsandbytes) kullanır ve `train_dataset`'in tokenize edilmiş bir veri seti olduğunu varsayar.

```py
import torch
from peft import LoraConfig
from transformers import AutoModelForCausalLM, BitsAndBytesConfig, Trainer, TrainingArguments

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)
model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-0.6B",
    quantization_config=quantization_config,
    device_map="auto",
)

lora_config = LoraConfig(r=16, lora_alpha=32, target_modules="all-linear", task_type="CAUSAL_LM")
model.add_adapter(lora_config)

trainer = Trainer(
    model=model,
    args=TrainingArguments(output_dir="qwen3-qlora", bf16=True),
    train_dataset=train_dataset,
)
trainer.train()
```

Yalnızca adaptör ağırlıkları eğitilir. Kuantize edilmiş temel ağırlıklar donmuş kalır.

## Adaptörü kaydet

[save_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.save_pretrained) yalnızca birkaç megabayt olan adaptör ağırlıklarını kaydeder. Bu, kuantize edilmiş ağırlıklarını kaydedemeyenler dahil olmak üzere her yöntemle çalışır.

```py
model.save_pretrained("qwen3-qlora-adapter")
```

Adaptörü kullanmak için, temel modeli aynı kuantizasyon yapılandırmasıyla yükleyin ve adaptörü bunun üzerine yükleyin. Ayrıntılar için [Adaptör yükleme](../peft#loading-an-adapter) bölümüne bakın.

## Kantizasyona duyarlı eğitim

[BitNet](./bitnet) ve [compressed-tensors](./compressed_tensors), ağırlıklar eğitilebilir bir formda kaldığı sürece, bir adaptör olmadan tam modeli eğitebilir.

- BitNet, [BitNetQuantConfig](/docs/transformers/main/tr/main_classes/quantization#transformers.BitNetQuantConfig) içinde `linear_class="autobitlinear"` ve `quantization_mode="online"` gerektirir.
- compressed-tensors, sıkıştırılmamış bir checkpoint gerektirir veya [CompressedTensorsConfig](/docs/transformers/main/tr/main_classes/quantization#transformers.CompressedTensorsConfig) içinde `dequantize=True` parametresi kullanılmalıdır. FP8 çekirdeklerini kullanan checkpoint'lerle eğitim yapılamaz.

Kantlama farkında eğitimin eğitim sonrası kantlamadan nasıl farklılaştığını görmek için [Kantlama kavramları](./concept_guide) bölümüne bakın.

