TRL documentation
Ödül Modelleme
Ödül Modelleme
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 girdi dizisi (istek) ve ve sırasıyla seçilen ve reddedilen diziler olsun. Bradley-Terry modeli altında (Bradley & Terry, 1952), olma olasılığı üzerine tercih edilme verilen bir ödül fonksiyonu şeklindedir , burada sigmoid fonksiyonudur.
Ödül modeli tercih edilen yanıtlara tercih edilmeyen yanıtlardan daha yüksek puanlar atamak üzere eğitilir . Kayıp, gözlemlenen tercihlerin negatif log-olasılık yoğunluğu olarak tanımlanır:
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_coefficientparametresiyle kontrol edilir. Önerilen değer1e-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ı (toolrolü mesajları) dahil olmak üzere sohbet mesajları toolssü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
< source >( 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 (
strveya 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_kwargsiçindeki anahtar kelime argümanlarıylaAutoModelForSequenceClassification.from_pretrainedkullanılarak yüklenir.args.model_init_kwargsiçindedtypebelirtilmediyse, varsayılan olarakfloat32kullanı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.
- 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
- args (RewardConfig, isteğe bağlı) —
Bu eğitimci için yapılandırma.
Noneise varsayılan yapılandırma kullanılır. - data_collator (
DataCollator, isteğe bağlı) — İşlenmiştrain_datasetveyaeval_datasetöğelerinin listesinden bir batch oluşturmak için kullanılacak işlev. Varsayılan olarakDataCollatorForPreferencekullanı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_idsverejected_idsalanlarını içerdiği sürece işlenmiş veri setlerini (tokenize edilmiş) de destekler.train_datasetbir 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_stepseğ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_datasetile aynı gereksinimleri karşılaması gerekir. - processing_class (PreTrainedTokenizerBase, opsiyonel) —
Verileri işlemek için kullanılan tokenizer.
Noneise, 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_tokenvarsayı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_metricsdeğeriTrueolarak ayarlanmış bir RewardConfig geçirildiğinde,compute_metricsişleviniz bircompute_resultboole 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. ModelinizdeAdamWörneği veargstarafı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.optimveoptim_argsiçindekiargs. ile uyumsuzdur.optimizersargü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
Noneolacağı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_configile birleştirin. Model zaten örneklenmişse veyaquantization_configayrıcaargs.model_init_kwargsiçinde ayarlanmışsa yok sayılır. - peft_config (PeftConfig, isteğe bağlı) —
Modeli sarmak için kullanılan PEFT yapılandırması.
Noneise 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ındamodules_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
< source >( 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 (
strveyabool, isteğe bağlı) —strise, önceki birTrainerörneği tarafından kaydedilen bir kontrol noktasının yerel yolu.boolise veTruedeğerine eşitse, önceki birTrainerö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.Trialveyadict[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ı.
Modeli kaydeder, böylece from_pretrained() kullanarak yeniden yükleyebilirsiniz.
Yalnızca ana süreçten kaydedecektir.
push_to_hub
< source >( 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ılanTrue) — Fonksiyonun yalnızcagit pushişlemi tamamlandığında mı değer döndürmesi gerektiğini belirtir. - token (
str, isteğe bağlı, varsayılanNone) — 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_cardile 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
< source >( 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ı) —modelargümanı RewardTrainer için bir dize olarak verildiğinde kullanılan from_pretrained için anahtar kelime argümanları.revisiondeğeri, tokenizer yüklenirken de kullanılır. - trust_remote_code (
bool, isteğe bağlı, varsayılanFalse) — 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ılanTrue) — 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.Noneise, varsayılan olarakprocessing_class.eos_tokenkullanılır. - max_length (
intveyaNone, isteğe bağlı, varsayılan1024) — Tokenize edilmiş dizinin maksimum uzunluğu. Seçilen veya reddedilen dizilerden herhangi biri bu değeri aşarsa örnekler filtrelenir.Noneise filtreleme uygulanmaz. - pad_to_multiple_of (
intveyastr, 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ılanFalse) — Aktivasyonların CPU'ya taşınıp taşınmayacağı.
Kullanımdan kaldırılan parametreler
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 olarak500yerine10değerine ayarlanır.gradient_checkpointing: Varsayılan olarakFalseyerineTruedeğerini alır.bf16:fp16ayarlanmadıysa varsayılan olarakTrue,Falseyerine.learning_rate: Varsayılan olarak5e-5yerine1e-4olarak ayarlanır.