TRL documentation

Ödül Modelleme

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.18.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ödül Modelleme

model badge

Genel Bakış

TRL, ödül modelleri eğitmek için Sonuç-İzlemeli Ödül Modelleme (ORM) Eğiticisini destekler.

Bu eğitim sonrası yöntemi Younes Belkada tarafından katkı sağlanmıştır.

Hızlı başlangıç

Bu örnek, TRL'deki RewardTrainer kullanarak bir ödül modelinin nasıl eğitileceğini göstermektedir. UltraFeedback dataset olan büyük ölçekli, ince taneli ve çeşitli bir tercih veri setinde Qwen 3 0.6B modeli eğitilir.

from trl import RewardTrainer
from datasets import load_dataset

trainer = RewardTrainer(
    model="Qwen/Qwen3-0.6B",
    train_dataset=load_dataset("trl-lib/ultrafeedback_binarized", split="train"),
)
trainer.train()

Beklenen veri seti türü ve biçimi

RewardTrainer, preference veri seti türünü (hem dolaylı hem de açık prompt) destekler. RewardTrainer, hem standard hem de conversational veri seti biçimleriyle uyumludur. Konuşma tabanlı bir veri seti sağlandığında, eğitimci veri setine sohbet şablonunu otomatik olarak uygular.

# Standard preference (implicit prompt)
{"chosen": "The sky is blue.",
 "rejected": "The sky is green."}

# Conversational preference (implicit prompt)
{"chosen": [{"role": "user", "content": "What color is the sky?"},
            {"role": "assistant", "content": "It is blue."}],
 "rejected": [{"role": "user", "content": "What color is the sky?"},
              {"role": "assistant", "content": "It is green."}]}

# Standard preference (explicit prompt)
{"prompt": "The sky is",
 "chosen": " blue.",
 "rejected": " green."}

# Conversational preference (explicit prompt)
{"prompt": [{"role": "user", "content": "What color is the sky?"}],
 "chosen": [{"role": "assistant", "content": "It is blue."}],
 "rejected": [{"role": "assistant", "content": "It is green."}]}

Veri setiniz bu formatlardan birinde değilse, beklenen formata dönüştürmek için ön işleme yapabilirsiniz. İşte lmarena-ai/arena-human-preference-55k veri setiyle bir örnek:

from datasets import load_dataset
import json

dataset = load_dataset("lmarena-ai/arena-human-preference-55k")

# Filter out ties
dataset = dataset.filter(lambda example: example["winner_tie"] == 0)

# Create 'chosen' and 'rejected' fields based on the winner column
def response_a_b_to_chosen_rejected(example):
    if example["winner_model_a"] == 1:
        example["chosen"] = example["response_a"]
        example["rejected"] = example["response_b"]
    else:
        example["chosen"] = example["response_b"]
        example["rejected"] = example["response_a"]
    return example

dataset = dataset.map(response_a_b_to_chosen_rejected)

# Convert to conversational format
def make_conversation(example):
    prompt = json.loads(example["prompt"])[0]  # '["What color is the sky?"]' -> "What color is the sky?"
    chosen = json.loads(example["chosen"])[0]
    rejected = json.loads(example["rejected"])[0]
    return {
        "chosen": [{"role": "user", "content": prompt}, {"role": "assistant", "content": chosen}],
        "rejected": [{"role": "user", "content": prompt}, {"role": "assistant", "content": rejected}],
    }


dataset = dataset.map(make_conversation)

# Keep only necessary columns
dataset = dataset.select_columns(["chosen", "rejected"])

print(next(iter(dataset["train"])))
{
    "chosen": [
        {"role": "user", "content": "Is it morally right to try to have a certain percentage of females on managerial positions?"},
        {"role": "assistant", "content": "The question of whether it is morally right to aim for a certain percentage of females..."},
    ],
    "rejected": [
        {"role": "user", "content": "Is it morally right to try to have a certain percentage of females on managerial positions?"},
        {"role": "assistant", "content": "As an AI, I don't have personal beliefs or opinions. However, ..."},
    ],
}

Eğitim yönteminin derinlemesine incelenmesi

Ödül Modelleri (RMs), genellikle tercih edilen ve tercih edilmeyen yanıtların çiftlerinden oluşan veri kümeleri üzerinde denetimli öğrenme kullanılarak eğitilir. Amaç, tercih edilen yanıtlara daha yüksek puanlar atayan bir işlevi öğrenmektir; bu sayede model, çıktıları tercihler temelinde sıralayabilir.

Bu bölüm, ödül modellemenin pratikte nasıl çalıştığını, ana adımları kapsayacak şekilde açıklar: ön işleme ve kayıp hesaplama.

Önişleme ve belirteçleştirme

Eğitim sırasında, her örneğin chosen ve rejected alanlarını içermesi beklenir. Beklenen formatlar hakkında daha fazla ayrıntı için Dataset formats - Preference bölümüne bakın. RewardTrainer, her girdiyi modelin tokenizer'ı kullanarak işler. İstemler ve tamamlamalar (chosen ve rejected) ayrı ayrı sağlanırsa (açık istem durumu), tokenizasyon öncesinde birleştirilir.

Kaybın hesaplanması

Olsun x x girdi dizisi (istek) ve y+ y^+ ve y− y^- sırasıyla seçilen ve reddedilen diziler olsun. Bradley-Terry modeli altında (Bradley & Terry, 1952), olma olasılığı y+ y^+ üzerine tercih edilme y− y^- verilen bir ödül fonksiyonu r r şeklindedir p(y+≻y−∣x)=σ(r(x,y+)−r(x,y−)) p(y^+ ≻ y^- |x) = \sigma(r(x, y^+)−r(x, y^-)) , burada σ σ sigmoid fonksiyonudur.

Ödül modeli rθ(x,y) r_\theta(x, y) tercih edilen yanıtlara y+ y^+ tercih edilmeyen yanıtlardan daha yüksek puanlar atamak üzere eğitilir y− y^- . Kayıp, gözlemlenen tercihlerin negatif log-olasılık yoğunluğu olarak tanımlanır: L(θ)=−E(x,y+,y−)∼D[log⁡σ(rθ(x,y+)−rθ(x,y−))]. \mathcal{L}(\theta) = - \mathbb{E}_{(x,y^+,y^-) \sim \mathcal{D}} \left[ \log \sigma(r_\theta(x, y^+) - r_\theta(x, y^-)) \right].

Bradley-Terry modeli belirsizdir; bu, tüm ödüllere bir sabit eklemenin tercih olasılıklarını değiştirmediği anlamına gelir. Bu sorunu ele almak için Helping or Herding? Reward Model Ensembles Mitigate but do not Eliminate Reward Hacking, ödüllerin sıfırın etrafında merkezlenmesini teşvik eden bir yardımcı kayıp terimi eklenmesini önerir. Bu, RewardConfig içindeki center_rewards_coefficient parametresiyle kontrol edilir. Önerilen değer 1e-2'dir.

Kaydedilen metrikler

Eğitim ve değerlendirme sırasında aşağıdaki metrikleri kaydederiz:

  • global_step: Şu ana kadar atılan toplam optimizör adımı sayısı.
  • epoch: Veri seti yinelemesine dayalı olarak geçerli epoch numarası.
  • num_tokens: Şu ana kadar işlenen toplam token sayısı.
  • loss: Son kayıt aralığındaki ortalama kayıp.
  • accuracy: Doğru tahminlerin oranı (yani modelin seçilen yanıtı reddedilen yanıtla karşılaştırıldığında daha yüksek bir puan vermesi) son kayıt aralığı üzerinden ortalama alınmıştır.
  • min_reward: Modelin atadığı en düşük ödül puanı. Bu değer, kayıt aralığı üzerinde ortalanır.
  • mean_reward: Modelin son kayıt aralığı boyunca atadığı ortalama ödül puanı.
  • max_reward: Modelin atadığı en yüksek ödül puanı. Bu değer, kayıt aralığı üzerinde ortalanır.
  • margin: Son kayıt aralığındaki ortalama marj (seçilen ve reddedilen ödüller arasındaki fark).
  • learning_rate: Bir zamanlayıcı kullanılıyorsa dinamik olarak değişebilen mevcut öğrenme oranı.
  • grad_norm: Gradyan kesme işleminden önce hesaplanan gradyanların L2 normu.

Özelleştirme

Model başlatma

from_pretrained() yönteminin kwargs'larını doğrudan RewardConfig'e iletebilirsiniz. Örneğin, bir modeli farklı bir hassasiyette yüklemek istiyorsanız, buna benzer şekilde

model = AutoModelForSequenceClassification.from_pretrained("Qwen/Qwen3-0.6B", dtype=torch.bfloat16)

Bunu, RewardConfig sınıfına model_init_kwargs={"dtype": torch.bfloat16} argümanını geçirerek yapabilirsiniz.

from trl import RewardConfig

training_args = RewardConfig(
    model_init_kwargs={"dtype": torch.bfloat16},
)

from_pretrained() işlevinin num_labels hariç tüm anahtar kelime argümanlarının desteklendiğini, num_labels'in ise otomatik olarak 1 olarak ayarlandığını unutmayın.

PEFT ile adaptörler eğitin

🤗 PEFT kütüphanesiyle sıkı entegrasyon destekliyoruz; bu sayede kullanıcılar, tüm modeli eğitmek yerine adaptörleri kolayca eğitebilir ve Hub üzerinde paylaşabilir.

from datasets import load_dataset
from trl import RewardTrainer
from peft import LoraConfig

dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")

trainer = RewardTrainer(
    "Qwen/Qwen3-4B",
    train_dataset=dataset,
    peft_config=LoraConfig(modules_to_save=["score"])  # important to include the score head when base model is not a sequence classification model
)

trainer.train()

Ayrıca PeftModel eğitiminize devam edebilirsiniz. Bunun için önce PeftModel nesnesini RewardTrainer dışında yükleyin ve peft_config argümanını iletmeden doğrudan trainer'a iletin.

from datasets import load_dataset
from trl import RewardTrainer
from peft import AutoPeftModelForCausalLM

model = AutoPeftModelForCausalLM.from_pretrained("trl-lib/Qwen3-4B-Reward-LoRA", is_trainable=True)
dataset = load_dataset("trl-lib/Capybara", split="train")

trainer = RewardTrainer(
    model=model,
    train_dataset=dataset,
)

trainer.train()

Adaptörleri eğitirken, yalnızca yeni parametrelerin öğrenildiği için genellikle daha yüksek bir öğrenme oranı (≈1e‑3) kullanılır.

RewardConfig(learning_rate=1e-3, ...)

Ödül Modellemesi ile Araç Çağrısı

RewardTrainer, tool calling yeteneklerine sahip modellerin ince ayarını tamamen destekler. Bu durumda, veri setindeki her örnek şunları içermelidir:

  • Araç çağrıları (tool_calls) ve araç yanıtları (tool rolü mesajları) dahil olmak üzere sohbet mesajları
  • tools sütunundaki kullanılabilir araçların listesi, genellikle JSON şemaları olarak sağlanır

Beklenen veri seti yapısına ilişkin ayrıntılar için Veri Seti Biçimi — Araç Çağrısı bölümüne bakın.

RewardTrainer

sınıf trl.RewardTrainer

< >

( model: str | PreTrainedModel | PeftModelargs: trl.trainer.reward_config.RewardConfig | None = Nonedata_collator: collections.abc.Callable[[list[typing.Any]], dict[str, typing.Any]] | None = Nonetrain_dataset: datasets.arrow_dataset.Dataset | datasets.iterable_dataset.IterableDataset | None = Noneeval_dataset: datasets.arrow_dataset.Dataset | datasets.iterable_dataset.IterableDataset | datasets.dataset_dict.DatasetDict | datasets.dataset_dict.IterableDatasetDict | dict[str, datasets.arrow_dataset.Dataset | datasets.iterable_dataset.IterableDataset] | None = Noneprocessing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | None = Nonecompute_metrics: collections.abc.Callable[[transformers.trainer_utils.EvalPrediction], dict] | None = Nonecallbacks: list[transformers.trainer_callback.TrainerCallback] | None = Noneoptimizers: tuple[typing.Optional[torch.optim.Optimizer], typing.Optional[torch.optim.lr_scheduler.LambdaLR]] = (None, None)optimizer_cls_and_kwargs: tuple[type[torch.optim.Optimizer], dict[str, typing.Any]] | None = Nonepreprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = Nonequantization_config: BitsAndBytesConfig | None = Nonepeft_config: PeftConfig | None = None )

Parametreler

  • model (str veya PreTrainedModel veya PeftModel) — Eğitilecek model. Şunlardan biri olabilir:
    • Bir dize, huggingface.co üzerindeki bir model deposunda barındırılan ön eğitilmiş bir modelin model kimliği veya save_pretrained kullanılarak kaydedilmiş model ağırlıklarını içeren bir dizin yolu, örneğin './my_model_directory/'. Model, args.model_init_kwargs içindeki anahtar kelime argümanlarıyla AutoModelForSequenceClassification.from_pretrained kullanılarak yüklenir. args.model_init_kwargs içinde dtype belirtilmediyse, varsayılan olarak float32 kullanılır. Bu, (Transformers v5'ten itibaren) dtype'ın model yapılandırmasından çıkarıldığı from_pretrained işlevinden farklıdır.
    • Bir sıralama sınıflandırma PreTrainedModel nesnesi.
    • Sınıflandırma görevi için bir PeftModel nesnesi.
  • args (RewardConfig, isteğe bağlı) — Bu eğitimci için yapılandırma. None ise varsayılan yapılandırma kullanılır.
  • data_collator (DataCollator, isteğe bağlı) — İşlenmiş train_dataset veya eval_dataset öğelerinin listesinden bir batch oluşturmak için kullanılacak işlev. Varsayılan olarak DataCollatorForPreference kullanılır.
  • train_dataset (Dataset veya IterableDataset) — Eğitim için kullanılacak veri seti. Bu trainer tercih türünü (hem dolaylı hem de açık istem) destekler. Örneklerin biçimi şu şekillerden biri olabilir:
    • Standart: Her örnek düz metin içerir.
    • Sohbet: Her örnek yapılandırılmış mesajlar içerir (ör. rol ve içerik).

    Eğitmen, chosen_ids ve rejected_ids alanlarını içerdiği sürece işlenmiş veri setlerini (tokenize edilmiş) de destekler.

    train_dataset bir IterableDataset (ör. bir akış veri seti) olduğunda, uzunluğu çıkarılamadığı ve eğitim döngüsünü sınırlamak ile öğrenme oranı zamanlayıcısını yapılandırmak için toplam eğitim adım sayısının gerekli olması nedeniyle, max_steps eğitim argümanlarında ayarlanmalıdır.

  • eval_dataset (Dataset, IterableDataset, DatasetDict, IterableDatasetDict veya dict[str, Dataset | IterableDataset]) — Değerlendirme için kullanılacak veri seti. train_dataset ile aynı gereksinimleri karşılaması gerekir.
  • processing_class (PreTrainedTokenizerBase, opsiyonel) — Verileri işlemek için kullanılan tokenizer. None ise, tokenizer model adıyla from_pretrained kullanılarak yüklenir. Bir dolgu belirteci, processing_class.pad_token, ayarlanmış olmalıdır. İşleme sınıfı bir dolgu belirteci ayarlamadıysa, processing_class.eos_token varsayılan olarak kullanılır.
  • compute_metrics (Callable[[EvalPrediction], dict], isteğe bağlı) — Değerlendirme sırasında metrikleri hesaplamak için kullanılacak işlev. Bir EvalPrediction almalı ve metrik değerlerini içeren bir sözlük döndürmelidir. batch_eval_metrics değeri True olarak ayarlanmış bir RewardConfig geçirildiğinde, compute_metrics işleviniz bir compute_result boole argümanı almalıdır. Bu, son değerlendirme toplusundan sonra tetiklenir ve işlevin, toplu düzeyindeki istatistikleri biriktirmek yerine küresel özet istatistikleri hesaplayıp döndürmesi gerektiğini belirtir.
  • callbacks (liste TrainerCallback, isteğe bağlı) — Eğitim döngüsünü özelleştirmek için kullanılacak geri çağrılar listesi. Bunlar, burada.

    Varsayılan olarak kullanılan geri çağrılardan birini kaldırmak istiyorsanız, remove_callback metodunu kullanın.

  • optimizers (tuple[torch.optim.Optimizer | None, torch.optim.lr_scheduler.LambdaLR | None], isteğe bağlı, varsayılan (None, None)) — Kullanılacak optimizörü ve zamanlayıcıyı içeren bir demet. Modelinizde AdamW örneği ve args tarafından kontrol edilen get_linear_schedule_with_warmup tarafından verilen bir zamanlayıcı olarak varsayılan değerlere sahip olacaktır.
  • optimizer_cls_and_kwargs (tuple[Type[torch.optim.Optimizer], Dict[str, Any]], isteğe bağlı) — Kullanılacak optimizator sınıfını ve anahtar kelime argümanlarını içeren bir tuple. optim ve optim_args içindeki args. ile uyumsuzdur. optimizers argümanı.

    optimizers'un aksine, bu argüman, Trainer'ı başlatmadan önce model parametrelerini doğru cihazlara yerleştirme ihtiyacını ortadan kaldırır.

  • preprocess_logits_for_metrics (Callable[[torch.Tensor, torch.Tensor], torch.Tensor], isteğe bağlı) — Her değerlendirme adımında logit'leri önbelleğe almadan hemen önce işleyen bir işlev. İki girdi (tensor) almalıdır: logit'ler ve etiketler; ardından istenildiği gibi işlenmiş logit'leri döndürmelidir. Bu işlev tarafından yapılan değişiklikler, compute_metrics.

    Etiketlerin (ikinci parametre) veri setinde bulunmaması durumunda None olacağını unutmayın.

  • quantization_config (BitsAndBytesConfig, isteğe bağlı) — Model bir model tanımlayıcısından yüklenirken kullanılan kuantizasyon yapılandırması. QLoRA eğitimi için peft_config ile birleştirin. Model zaten örneklenmişse veya quantization_config ayrıca args.model_init_kwargs içinde ayarlanmışsa yok sayılır.
  • peft_config (PeftConfig, isteğe bağlı) — Modeli sarmak için kullanılan PEFT yapılandırması. None ise model sarılmaz. Yüklenen model bir causal LM ise, ödül başlığının (reward head) düzgün şekilde eğitilmesini sağlamak için PEFT yapılandırmasında modules_to_save=["score"] değerini ayarlaması şiddetle önerilir.

Sonuç denetimli Ödül Modelleri (ORM) için Trainer.

Bu sınıf, Trainer sınıfının bir sarmalayıcısıdır ve tüm özelliklerini ve yöntemlerini devralır.

Örnek:

>>> from trl import RewardTrainer
>>> from datasets import load_dataset

>>> dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")

>>> trainer = RewardTrainer(
...     model="Qwen/Qwen2.5-0.5B-Instruct",
...     train_dataset=dataset,
... )
>>> trainer.train()

eğit

< >

( resume_from_checkpoint: str | bool | None = Nonetrial: optuna.Trial | dict[str, Any] | None = Noneignore_keys_for_eval: list[str] | None = None ) → ~trainer_utils.TrainOutput

Parametreler

  • resume_from_checkpoint (str veya bool, isteğe bağlı) — str ise, önceki bir Trainer örneği tarafından kaydedilen bir kontrol noktasının yerel yolu. bool ise ve True değerine eşitse, önceki bir Trainer örneği tarafından args.output_dir içinde kaydedilen son kontrol noktasını yükler. Mevcutsa, eğitim burada yüklenen model/optimizör/zamanlayıcı durumlarından devam eder.
  • trial (optuna.Trial veya dict[str, Any], isteğe bağlı) — Hiperparametre araması için deneme çalışması veya hiperparametre sözlüğü.
  • ignore_keys_for_eval (list[str], isteğe bağlı) — Eğitim sırasında değerlendirme için tahminleri toplarken göz ardı edilmesi gereken, model çıktısındaki (bir sözlükse) anahtarların listesi.

Dönüş değeri

~trainer_utils.TrainOutput

Küresel adım sayısını, eğitim kaybını ve metrikleri içeren nesne.

Ana eğitim giriş noktası.

save_model

< >

( output_dir: str | None = None_internal_call: bool = False )

Modeli kaydeder, böylece from_pretrained() kullanarak yeniden yükleyebilirsiniz.

Yalnızca ana süreçten kaydedecektir.

push_to_hub

< >

( commit_message: str | None = 'End of training'blocking: bool = Truetoken: str | None = Nonerevision: str | None = None**kwargs )

Parametreler

  • commit_message (str, isteğe bağlı, varsayılan "End of training") — İterlerken gönderilecek mesaj.
  • blocking (bool, isteğe bağlı, varsayılan True) — Fonksiyonun yalnızca git push işlemi tamamlandığında mı değer döndürmesi gerektiğini belirtir.
  • token (str, isteğe bağlı, varsayılan None) — Trainer'ın orijinal argümanlarını üzerine yazma iznine sahip jeton.
  • revision (str, isteğe bağlı) — Commit'in alınacağı git revizyonu. Varsayılan olarak “main” dalının başıdır.
  • kwargs (dict[str, Any], isteğe bağlı) — ~Trainer.create_model_card ile birlikte iletilen ek anahtar kelime argümanları.

self.model ve self.processing_class öğelerini self.args.hub_model_id deposundaki 🤗 model hub'ına yükleyin.

RewardConfig

sınıf trl.RewardConfig

< >

( output_dir: str | None = Noneper_device_train_batch_size: int = 8num_train_epochs: float = 3.0max_steps: int = -1learning_rate: float = 0.0001lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear'lr_scheduler_kwargs: dict | str | None = Nonewarmup_steps: float = 0optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused'optim_args: str | None = Noneweight_decay: float = 0.0adam_beta1: float = 0.9adam_beta2: float = 0.999adam_epsilon: float = 1e-08optim_target_modules: None | str | list[str] = Nonegradient_accumulation_steps: int = 1average_tokens_across_devices: bool = Truemax_grad_norm: float = 1.0label_smoothing_factor: float = 0.0bf16: bool | None = Nonefp16: bool = Falsebf16_full_eval: bool = Falsefp16_full_eval: bool = Falsetf32: bool | None = Nonegradient_checkpointing: bool = Truegradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonetorch_compile: bool = Falsetorch_compile_backend: str | None = Nonetorch_compile_mode: str | None = Noneuse_liger_kernel: bool = Falseliger_kernel_config: dict[str, bool] | None = Noneuse_cache: bool = Falseneftune_noise_alpha: float | None = Nonetorch_empty_cache_steps: int | None = Noneauto_find_batch_size: bool = Falselogging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps'logging_steps: float = 10logging_first_step: bool = Falselog_on_each_node: bool = Truelogging_nan_inf_filter: bool = Trueinclude_num_input_tokens_seen: str | bool = 'no'log_level: str = 'passive'log_level_replica: str = 'warning'disable_tqdm: bool | None = Nonereport_to: None | str | list[str] = 'none'run_name: str | None = Noneproject: str = 'huggingface'trackio_space_id: str | None = Nonetrackio_bucket_id: str | None = Nonetrackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = Noneeval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no'eval_steps: float | None = Noneeval_delay: float = 0per_device_eval_batch_size: int = 8prediction_loss_only: bool = Falseeval_on_start: bool = Falseeval_do_concat_batches: bool = Trueeval_use_gather_object: bool = Falseeval_accumulation_steps: int | None = Noneinclude_for_metrics: list[str] = <factory>batch_eval_metrics: bool = Falsesave_only_model: bool = Falsesave_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps'save_steps: float = 500save_on_each_node: bool = Falsesave_total_limit: int | None = Noneenable_jit_checkpoint: bool = Falsepush_to_hub: bool = Falsehub_token: str | None = Nonehub_private_repo: bool | None = Nonehub_model_id: str | None = Nonehub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save'hub_always_push: bool = Falsehub_revision: str | None = Noneload_best_model_at_end: bool = Falsemetric_for_best_model: str | None = Nonegreater_is_better: bool | None = Noneignore_data_skip: bool = Falserestore_callback_states_from_checkpoint: bool = Falsefull_determinism: bool = Falseseed: int = 42data_seed: int | None = Noneuse_cpu: bool = Falseaccelerator_config: dict | str | None = Noneparallelism_config: accelerate.parallelism_config.ParallelismConfig | None = Nonedataloader_drop_last: bool = Falsedataloader_num_workers: int = 0dataloader_pin_memory: bool = Truedataloader_persistent_workers: bool = Falsedataloader_prefetch_factor: int | None = Nonedataloader_multiprocessing_context: str | None = Nonedataloader_in_order: bool = Trueremove_unused_columns: bool = Truelabel_names: list[str] | None = Nonetrain_sampling_strategy: str = 'random'length_column_name: str = 'length'ddp_find_unused_parameters: bool | None = Noneddp_bucket_cap_mb: int | None = Noneddp_broadcast_buffers: bool | None = Noneddp_static_graph: bool | None = Noneddp_backend: str | None = Noneddp_timeout: int = 1800fsdp: str | None = Nonefsdp_config: dict[str, typing.Any] | str | None = Nonedeepspeed: dict | str | None = Nonedebug: str | list[transformers.debug_utils.DebugOption] = ''skip_memory_metrics: bool = Truedo_train: bool = Falsedo_eval: bool = Falsedo_predict: bool = Falseresume_from_checkpoint: str | None = Nonelocal_rank: int = -1model_init_kwargs: dict[str, typing.Any] | str | None = Nonetrust_remote_code: bool = Falsechat_template_path: str | None = Nonedisable_dropout: bool = Truedataset_num_proc: int | None = Noneeos_token: str | None = Nonemax_length: int | None = 1024pad_to_multiple_of: int | str | None = 'auto'center_rewards_coefficient: float | None = Noneactivation_offloading: bool = Falsepad_token: str | None = None )

Modeli kontrol eden parametreler

  • model_init_kwargs (dict[str, Any], isteğe bağlı) — model argümanı RewardTrainer için bir dize olarak verildiğinde kullanılan from_pretrained için anahtar kelime argümanları. revision değeri, tokenizer yüklenirken de kullanılır.
  • trust_remote_code (bool, isteğe bağlı, varsayılan False) — Hub'dan özel Python kodu içeren modellerin ve tokenizer'ların yüklenmesine izin verilip verilmeyeceğini belirtir. from_pretrained ve from_pretrained işlevlerine aktarılır.
  • chat_template_path (str, isteğe bağlı) — Belirtilirse, modelin sohbet şablonunu ayarlar. Bu, bir tokenizer'ın yolu (yerel dizin veya Hugging Face Hub modeli) ya da bir Jinja şablon dosyasına doğrudan yol olabilir. Jinja dosyası kullanırken, şablonda referans verilen özel token'ların tokenizer'a eklendiğinden ve modelin embedding katmanının buna göre yeniden boyutlandırıldığından emin olmalısınız.
  • disable_dropout (bool, isteğe bağlı, varsayılan True) — Modelde dropout'un devre dışı bırakılıp bırakılmayacağı.

Veri ön işleme sürecini kontrol eden parametreler

  • dataset_num_proc (int, isteğe bağlı) — Veri setini işlemek için kullanılacak süreç sayısı.
  • eos_token (str, isteğe bağlı) — Bir turun veya dizinin sonunu belirtmek için kullanılan token. None ise, varsayılan olarak processing_class.eos_token kullanılır.
  • max_length (int veya None, isteğe bağlı, varsayılan 1024) — Tokenize edilmiş dizinin maksimum uzunluğu. Seçilen veya reddedilen dizilerden herhangi biri bu değeri aşarsa örnekler filtrelenir. None ise filtreleme uygulanmaz.
  • pad_to_multiple_of (int veya str, isteğe bağlı, varsayılan "auto") — Belirlenirse, diziler bu değerin katına kadar doldurulur. "auto", Neuron (AWS Trainium) üzerinde 128'in katına kadar doldurur; bu platform her giriş şekli için bir kez derleme yapar ve başka yerlerde doldurma uygulanmaz.

Eğitimi kontrol eden parametreler

  • center_rewards_coefficient (float, isteğe bağlı) — Ödül modelinin sıfır ortalamalı ödüller üretmesini teşvik etmek için kullanılan katsayı (bu makale, Denklem 2 tarafından önerilmiştir). Önerilen değer: 0.01.
  • activation_offloading (bool, isteğe bağlı, varsayılan False) — Aktivasyonların CPU'ya taşınıp taşınmayacağı.

Kullanımdan kaldırılan parametreler

  • pad_token —

    pad_token parametresi kullanımdan kaldırılmıştır ve v2.0.0 sürümünde kaldırılacaktır. Bunun yerine tokenizer.pad_token değerini doğrudan ayarlayın ve trainer'a processing_class olarak iletin.

RewardTrainer için yapılandırma sınıfı.

Bu sınıf yalnızca Reward eğitimine özgü parametreleri içerir. Eğitim argümanlarının tam listesi için TrainingArguments belgelerine başvurun. Bu sınıftaki varsayılan değerlerin TrainingArguments içindeki değerlerden farklı olabileceğini unutmayın.

HfArgumentParser kullanarak bu sınıfı, komut satırında belirtilebilen argparse argümanlarına dönüştürebiliriz.

Bu parametrenin TrainingArguments'ten farklı varsayılan değerleri vardır:

  • logging_steps: Varsayılan olarak 500 yerine 10 değerine ayarlanır.
  • gradient_checkpointing: Varsayılan olarak False yerine True değerini alır.
  • bf16: fp16 ayarlanmadıysa varsayılan olarak True, False yerine.
  • learning_rate: Varsayılan olarak 5e-5 yerine 1e-4 olarak ayarlanır.
Update on GitHub