# Geri Çağrılar

## RichProgressCallback[[trl.RichProgressCallback]]

#### trl.RichProgressCallback[[trl.RichProgressCallback]]

```python
trl.RichProgressCallback()
```

[Kaynak](https://github.com/huggingface/trl/blob/main/trl/trainer/callbacks.py#L157)

Eğitim veya değerlendirme ilerlemesini Rich kullanarak görüntüleyen bir [TrainerCallback](https://huggingface.co/docs/transformers/main/en/main_classes/callback#transformers.TrainerCallback).

## LogCompletionsCallback[[trl.LogCompletionsCallback]]

#### trl.LogCompletionsCallback[[trl.LogCompletionsCallback]]

```python
trl.LogCompletionsCallback(trainer: Trainer, generation_config: transformers.generation.configuration_utils.GenerationConfig | None = None, num_prompts: int | None = None, freq: int | None = None)
```

[Kaynak](https://github.com/huggingface/trl/blob/main/trl/trainer/callbacks.py#L268)

**Parametreler:**

trainer (`Trainer`) : Callback'ın bağlanacağı `Trainer`. Değerlendirme veri seti, tamamlamaları üretmek için istemleri içeren bir `"prompt"` sütunu içermelidir.

generation_config ([GenerationConfig](https://huggingface.co/docs/transformers/main/en/main_classes/text_generation#transformers.GenerationConfig), *opsiyonel*) : Tamamlamaları üretmek için kullanılacak üretim yapılandırması.

num_prompts (`int`, *isteğe bağlı*) : Tamamlamalar üretilecek istemlerin sayısı. Verilmezse, varsayılan olarak değerlendirme veri setindeki örnek sayısına eşittir.

freq (`int`, *isteğe bağlı*) : Tamamlamaların (completions) hangi sıklıkla günlüğe kaydedileceğini belirtir. Verilmezse, eğitimcinin (trainer) `eval_steps` değeri kullanılır.

Weights & Biases ve/veya Comet'e tamamlamaları kaydeden bir [TrainerCallback](https://huggingface.co/docs/transformers/main/en/main_classes/callback#transformers.TrainerCallback).

Kullanım:
```python
>>> trainer = DPOTrainer(...)
>>> completions_callback = LogCompletionsCallback(trainer=trainer)
>>> trainer.add_callback(completions_callback)
```

## BEMACallback[[trl.BEMACallback]]

#### trl.BEMACallback[[trl.BEMACallback]]

```python
trl.BEMACallback(update_freq: int = 400, ema_power: float = 0.5, bias_power: float = 0.2, lag: int = 10, update_after: int = 0, multiplier: float = 1.0, min_ema_multiplier: float = 0.0, device: str = 'cpu')
```

[Kaynak](https://github.com/huggingface/trl/blob/main/trl/trainer/callbacks.py#L590)

**Parametreler:**

update_freq (`int`, *opsiyonel*, varsayılan `400`) : BEMA ağırlıklarını her X adımda günceller. Makalede buna  \\( \phi \\) denir.

ema_power (`float`, *opsiyonel*, varsayılan `0.5`) : EMA sönümleme katsayısı için güç. Makalede \\( \kappa \\) ile gösterilir. EMA'yı devre dışı bırakmak için bunu `0.0` olarak ayarlayın.

bias_power (`float`, *opsiyonel*, varsayılan `0.2`) : BEMA ölçekleme faktörü için güç. Makalede \\( \eta \\) ile gösterilir. Büyük bir değer (ör. `8.0`), \\( \alpha_t \\)'nin `0`'a sönümlenmesine neden olarak önyargı düzeltmesinin devre dışı bırakılmasını yaklaşık olarak sağlar; `0.0` ise her adımda \\( \alpha_t \\)'yi `1`'de sabitler (maksimum, sönümlenmemiş düzeltme).

lag (`int`, *opsiyonel*, varsayılan `10`) : Güncellemeler için sanal bir başlangıç yaşı olarak davranarak erken aşamadaki pürüzsüzlüğü kontrol eden ağırlık çürümesi zamanlamasındaki başlangıç ofseti. Makalede \\( \rho \\) ile gösterilir.

update_after (`int`, *opsiyonel*, varsayılan `0`) : BEMA ağırlıklarını güncellemeye başlamadan önceki ısınma süresi. Makalede \\( \tau \\) ile gösterilir.

multiplier (`float`, *opsiyonel*, varsayılan `1.0`) : EMA sönümleme katsayısının başlangıç değeri. Makalede \\( \gamma \\) olarak gösterilir.

min_ema_multiplier (`float`, *isteğe bağlı*, varsayılan `0.0`) : EMA sönümleme katsayısı için minimum değer.

device (`str`, *isteğe bağlı*, varsayılan `"cpu"`) : BEMA tamponları için kullanılacak cihaz, örn. `"cpu"` veya `"cuda"`. Çoğu durumda, OOM (bellek taşması) sorununu önlemek için bu cihazın eğitimde kullanılan cihazdan FARKLI OLMASI GEREKTİĞİNİ unutmayın.

[Adam Block](https://huggingface.co/abblock) ve [Cyril Zhang](https://huggingface.co/cyrilzhang) tarafından [BEMA](https://huggingface.co/papers/2508.00180) (Bias-Corrected Exponential Moving Average) uygulayan bir [TrainerCallback](https://huggingface.co/docs/transformers/main/en/main_classes/callback#transformers.TrainerCallback). MIT lisansı altında https://github.com/abblock/bema adresinden alınan kod.

BEMA, şu şekilde ölçeklenen model ağırlıklarını hesaplar:

$$ \theta_t' = \alpha_t \cdot (\theta_t - \theta_0) + \text{EMA}_t $$

burada \\( \theta_t \\) mevcut model ağırlıklarını, \\( \theta_0 \\) ilk `update_after` adımındaki model ağırlıkları anlık görüntüsünü, \\( \text{EMA}_t  \\) model ağırlıklarının üstel hareketli ortalamasını ve \\( \alpha_t \\) adım sayısı \\( t \\) ile azalan bir ölçekleme faktörünü ifade eder

$$ \alpha_t = (\rho + \gamma \cdot t)^{-\eta}. $$

EMA şu şekilde hesaplanır:

$$ \text{EMA}_t = (1 - \beta_t) \cdot \text{EMA}_{t-1} + \beta_t \cdot \theta_t $$

burada \\( \beta_t \\) adım sayısı \\( t \\) ile azalan bir sönümleme katsayısıdır

$$ \beta_t = (\rho + \gamma \cdot t)^{-\kappa}. $$

Örnek:

```python
>>> from trl import BEMACallback

>>> trainer = Trainer(..., callbacks=[BEMACallback()])
```

## WeaveCallback[[trl.WeaveCallback]]

#### trl.WeaveCallback[[trl.WeaveCallback]]

```python
trl.WeaveCallback(trainer: Trainer, project_name: str | None = None, scorers: dict[str, callable] | None = None, generation_config: transformers.generation.configuration_utils.GenerationConfig | None = None, num_prompts: int | None = None, dataset_name: str = 'eval_dataset', model_name: str | None = None)
```

[Kaynak](https://github.com/huggingface/trl/blob/main/trl/trainer/callbacks.py#L361)

**Parametreler:**

trainer (`Trainer`) : Callback'ın bağlanacağı `Trainer`. Değerlendirme veri seti, tamamlamaları üretmek için istemleri içeren bir `"prompt"` sütunu içermelidir.

project_name (`str`, *isteğe bağlı*) : Verilerin kaydedileceği Weave projesinin adı. Sağlanmazsa, mevcut weave istemcisini kullanmaya çalışır veya etkin wandb çalıştırmasının proje adına geri döner. Bunların hiçbiri kullanılamıyorsa bir hata fırlatır.

scorers (`dict[str, Callable]`, *isteğe bağlı*) : Skorlayıcı adlarını skorlayıcı fonksiyonlarına eşleyen sözlük. `None` ise izleme modunda çalışır (yalnızca tahminler). Sağlanırsa değerlendirme modunda çalışır (tahminler + skorlar + özet). Skorlayıcı fonksiyonlarının imzası şu şekilde olmalıdır: `scorer(prompt: str, completion: str) -> float | int`

generation_config ([GenerationConfig](https://huggingface.co/docs/transformers/main/en/main_classes/text_generation#transformers.GenerationConfig), *opsiyonel*) : Tamamlamaları üretmek için kullanılacak üretim yapılandırması.

num_prompts (`int`, *isteğe bağlı*) : Tamamlamalar üretilecek istemlerin sayısı. Verilmezse, varsayılan olarak değerlendirme veri setindeki örnek sayısına eşittir.

dataset_name (`str`, *isteğe bağlı*, varsayılan `"eval_dataset"`) : Weave'daki veri seti meta verileri için ad.

model_name (`str`, *isteğe bağlı*) : Weave'de model meta verileri için ad. Sağlanmazsa, model yapılandırmasından çıkarılmaya çalışılır.

W&B Weave'e izleri ve değerlendirmeleri kaydeden bir [TrainerCallback](https://huggingface.co/docs/transformers/main/en/main_classes/callback#transformers.TrainerCallback). Geri çağrı, her değerlendirme adımında izleri ve değerlendirmeleri kaydetmek için https://weave-docs.wandb.ai/guides/evaluation/evaluation_logger/ kullanır.

`scorers` parametresine dayalı olarak iki modu destekler:
- **İzleme Modu** (scorers=None olduğunda): Veri keşfi ve analizi için tahminleri kaydeder
- **Değerlendirme Modu** (puanlayıcılar sağlandığında): Puanlama ve özet metriklerle tahminleri kaydeder

Her iki mod da yapılandırılmış ve tutarlı veri günlükleme için Weave'in EvaluationLogger'ını kullanır.

Geri çağrı, eğitim adımları yerine değerlendirme aşamalarında (`on_evaluate`) veri kaydeder; bu durum onu daha verimli ve anlamsal olarak doğru kılar. weave kurulumunun eksik olmasını zarif bir şekilde ele alarak uyarılar kaydeder ve weave'e özgü işlevselliği atlar. Ayrıca yeni weave istemcileri başlatmadan önce mevcut weave istemcilerini kontrol eder.

Kullanım:
```python
# Tracing mode (just log predictions)
trainer = DPOTrainer(...)
weave_callback = WeaveTraceCallback(trainer=trainer)  # project_name optional
trainer.add_callback(weave_callback)

# Or specify a project name
weave_callback = WeaveTraceCallback(trainer=trainer, project_name="my-llm-training")
trainer.add_callback(weave_callback)

# Evaluation mode (log predictions + scores + summary)
def accuracy_scorer(prompt: str, completion: str) -> float:
    # Your scoring logic here (metadata available via eval_attributes)
    return score

weave_callback = WeaveTraceCallback(
    trainer=trainer,
    project_name="my-llm-training",  # optional and needed only if weave client is not initialized
    scorers={"accuracy": accuracy_scorer},
)
trainer.add_callback(weave_callback)
```

#### on_train_begin[[trl.WeaveCallback.on_train_begin]]

```python
on_train_begin(args, state, control, **kwargs)
```

[Kaynak](https://github.com/huggingface/trl/blob/main/trl/trainer/callbacks.py#L491)

Eğitim başladığında Weave'i başlatın.

