TRL documentation
Моделирование вознаграждения
Моделирование вознаграждения
Обзор
TRL поддерживает Outcome-supervised Reward Modeling (ORM) Trainer для обучения моделей вознаграждения.
Метод постобучения был предложен Younes Belkada.
Быстрый старт
В этом примере показано, как обучить модель вознаграждения с помощью RewardTrainer из TRL. Мы обучаем модель Qwen 3 0.6B на наборе данных UltraFeedback dataset — крупномасштабном, детализированном и разнообразном наборе предпочтений.
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()Ожидаемый тип и формат набора данных
RewardTrainer поддерживает тип данных preference (как с неявным, так и с явным промптом). RewardTrainer совместим с форматами данных standard и conversational. При использовании набора данных в диалоговом формате тренер автоматически применяет шаблон чата к данным.
# 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."}]}Если ваш набор данных не представлен в одном из этих форматов, вы можете предварительно обработать его, чтобы преобразовать в ожидаемый формат. Вот пример с набором данных lmarena-ai/arena-human-preference-55k:
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, ..."},
],
}Более подробный обзор метода обучения
Модели вознаграждения (RMs) обычно обучаются с учителем на наборах данных, содержащих пары предпочтительных и нежелательных ответов. Цель состоит в том, чтобы обучить функцию, которая присваивает более высокие оценки предпочтительным ответам, позволяя модели ранжировать выходные данные на основе предпочтений.
В этом разделе подробно описано, как на практике работает моделирование вознаграждения, с охватом ключевых шагов: предобработка и вычисление функции потерь.
Предобработка и токенизация
В процессе обучения каждый пример должен содержать поля chosen и rejected. Дополнительные сведения об ожидаемых форматах приведены в разделе Dataset formats - Preference. Класс RewardTrainer токенизирует каждый вход с помощью токенизатора модели. Если промпты и завершения (chosen и rejected) предоставлены отдельно (явный промпт), они объединяются перед токенизацией.
Вычисление функции потерь
Пусть — входная последовательность (промпт), а и — соответственно выбранная и отклонённая последовательности. В модели Брэдли–Терри (Bradley & Terry, 1952), вероятность того, что предпочтительнее при функции вознаграждения равна , где — сигмоидная функция.
Модель вознаграждения обучается присваивать более высокие оценки предпочтительным ответам по сравнению с непопулярными . Потери затем определяются как отрицательная логарифмическая правдоподобность наблюдаемых предпочтений:
Модель Брэдли—Терри неопределена, что означает: прибавление константы ко всем наградам не изменяет вероятности предпочтений. Для решения этой проблемы в работе Helping or Herding? Reward Model Ensembles Mitigate but do not Eliminate Reward Hacking предлагается добавить дополнительный член потерь, который поощряет центрирование наград вокруг нуля. Это управляется параметром
center_rewards_coefficientв RewardConfig. Рекомендуемое значение —1e-2.
Записываемые метрики
Во время обучения и оценки мы фиксируем следующие метрики:
global_step: общее количество шагов оптимизатора, выполненных на данный момент.epoch: текущий номер эпохи, основанный на итерации по набору данных.num_tokens: общее количество обработанных на данный момент токенов.loss: средняя величина потерь за последний интервал логирования.accuracy: Доля правильных предсказаний (то есть модель присвоила более высокий балл выбранному ответу, чем отклонённому), усреднённая за последний интервал логирования.min_reward: минимальная оценка вознаграждения, присвоенная моделью. Это значение усредняется за интервал логирования.mean_reward: средняя оценка вознаграждения, присвоенная моделью за последний интервал логирования.max_reward: максимальная оценка вознаграждения, присвоенная моделью. Это значение усредняется за интервал логирования.margin: средняя величина разницы (разность между наградами для выбранного и отклонённого вариантов) за последний интервал логирования.learning_rate: текущая скорость обучения, которая может динамически изменяться при использовании планировщика.grad_norm: L2-норма градиентов, вычисленная до обрезания градиентов.
Настройка
Инициализация модели
Вы можете напрямую передать аргументы kwargs метода from_pretrained() в RewardConfig. Например, если вы хотите загрузить модель с другой точностью, аналогично
model = AutoModelForSequenceClassification.from_pretrained("Qwen/Qwen3-0.6B", dtype=torch.bfloat16)это можно сделать, передав аргумент model_init_kwargs={"dtype": torch.bfloat16} в RewardConfig.
from trl import RewardConfig
training_args = RewardConfig(
model_init_kwargs={"dtype": torch.bfloat16},
)Обратите внимание, что поддерживаются все именованные аргументы from_pretrained(), за исключением num_labels, который автоматически устанавливается в 1.
Обучение адаптеров с PEFT
Мы поддерживаем тесную интеграцию с библиотекой 🤗 PEFT, что позволяет любому пользователю удобно обучать адаптеры и делиться ими на Hub, а не обучать всю модель целиком.
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()Вы также можете продолжить обучение вашей модели PeftModel. Для этого сначала загрузите PeftModel вне RewardTrainer и передайте её непосредственно в треньер без аргумента peft_config.
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()При обучении адаптеров обычно используют более высокую скорость обучения (≈1e‑3), так как обучаются только новые параметры.
RewardConfig(learning_rate=1e-3, ...)
Вызов инструментов с использованием модели вознаграждения
RewardTrainer полностью поддерживает дообучение моделей с возможностями tool calling. В этом случае каждый пример в наборе данных должен включать:
- Сообщения диалога, включая вызовы инструментов (
tool_calls) и ответы инструментов (сообщения с рольюtool) - Список доступных инструментов в столбце
tools, как правило, предоставляется в виде схем JSON
С подробностями о структуре ожидаемого набора данных см. раздел Dataset Format — Tool Calling.
RewardTrainer
класс 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 )
Параметры
- model (
strили PreTrainedModel или PeftModel) — Модель для обучения. Может быть одним из следующих:- Строка, являющаяся model id предобученной модели, размещённой в репозитории моделей на huggingface.co, или путь к каталогу, содержащему веса модели, сохранённые с помощью save_pretrained, например
'./my_model_directory/'. Модель загружается с помощьюAutoModelForSequenceClassification.from_pretrainedс использованием именованных аргументов изargs.model_init_kwargs. Еслиdtypeне указан вargs.model_init_kwargs, по умолчанию используетсяfloat32. Это отличается от from_pretrained, где (начиная с Transformers v5) тип данных выводится из конфигурации модели. - Объект PreTrainedModel для классификации последовательностей.
- Объект PeftModel для классификации последовательностей.
- Строка, являющаяся model id предобученной модели, размещённой в репозитории моделей на huggingface.co, или путь к каталогу, содержащему веса модели, сохранённые с помощью save_pretrained, например
- args (RewardConfig, необязательный) —
Конфигурация для этого тренера. Если
None, используется конфигурация по умолчанию. - data_collator (
DataCollator, необязательный) — Функция, используемая для формирования батча из списка элементов обработанногоtrain_datasetилиeval_dataset. По умолчанию используетсяDataCollatorForPreference. - train_dataset (Dataset или IterableDataset) —
Набор данных для обучения. Этот trainer поддерживает preference тип (как неявный, так и явный промпт). Формат образцов может быть следующим:
- Standard: каждая выборка содержит обычный текст.
- Диалоговый: каждая выборка содержит структурированные сообщения (например, роль и содержимое).
Тренер также поддерживает обработанные (токенизированные) наборы данных, если они содержат поля
chosen_idsиrejected_ids.Если
train_datasetявляется IterableDataset (например, потоковым набором данных), тоmax_stepsнеобходимо задать в аргументах обучения, поскольку его длину невозможно определить, а общее количество шагов обучения требуется для ограничения цикла обучения и настройки планировщика скорости обучения. - eval_dataset (Dataset, IterableDataset, DatasetDict, IterableDatasetDict или
dict[str, Dataset | IterableDataset]) — Набор данных для оценки. Он должен соответствовать тем же требованиям, что иtrain_dataset. - processing_class (PreTrainedTokenizerBase, необязательный) —
Токенизатор, используемый для обработки данных. Если
None, токенизатор загружается по имени модели с помощью from_pretrained. Токен отступов,processing_class.pad_token, должен быть задан. Если в классе обработки не задан токен отступов, по умолчанию будет использованprocessing_class.eos_token. - compute_metrics (
Callable[[EvalPrediction], dict], необязательный) — Функция, используемая для вычисления метрик при оценке. Должна принимать EvalPrediction и возвращать словарь, сопоставляющий строки со значениями метрик. При передаче RewardConfig с параметромbatch_eval_metrics, установленным вTrue, ваша функцияcompute_metricsдолжна принимать булевый аргументcompute_result. Это срабатывает после последней пачки оценки, чтобы сигнализировать, что функции необходимо вычислить и вернуть глобальную сводную статистику, а не накапливать статистику на уровне пачки. - callbacks (список TrainerCallback, необязательный) —
Список callback'ов для настройки цикла обучения. Они будут добавлены к списку callback'ов по умолчанию, описанных здесь.
Если вы хотите удалить один из используемых по умолчанию колбэков, воспользуйтесь методом remove_callback.
- optimizers (
tuple[torch.optim.Optimizer | None, torch.optim.lr_scheduler.LambdaLR | None], необязательный, по умолчанию(None, None)) — Кортеж, содержащий оптимизатор и планировщик, которые будут использоваться. По умолчанию будет создан экземплярAdamWдля вашей модели и планировщик, заданный функцией get_linear_schedule_with_warmup и управляемый параметрамиargs. - optimizer_cls_and_kwargs (
tuple[Type[torch.optim.Optimizer], Dict[str, Any]], необязательный) — Кортеж, содержащий класс оптимизатора и именованные аргументы для его использования. Переопределяетoptimиoptim_argsвargs. Несовместим с аргументомoptimizers.В отличие от
optimizers, этот аргумент позволяет избежать необходимости размещать параметры модели на соответствующих устройствах до инициализации Trainer. - preprocess_logits_for_metrics (
Callable[[torch.Tensor, torch.Tensor], torch.Tensor], необязательный) — Функция, которая предобрабатывает logits непосредственно перед их кэшированием на каждом шаге оценки. Она должна принимать два тензора — logits и labels — и возвращать обработанные logits в нужном виде. Изменения, внесённые этой функцией, будут отражены в предсказаниях, полученных вcompute_metrics.Обратите внимание, что метки (второй параметр) будут
None, если в наборе данных их нет. - quantization_config (BitsAndBytesConfig, optional) —
Конфигурация квантования, используемая при загрузке модели по идентификатору модели. Используйте в сочетании с
peft_configдля обучения QLoRA. Игнорируется, если модель уже создана, или еслиquantization_configтакже задан вargs.model_init_kwargs. - peft_config (PeftConfig, необязательный) —
конфигурация PEFT, используемая для обёртки модели. Если
None, модель не оборачивается. Обратите внимание, что если загруженная модель является каузальной LM, настоятельно рекомендуется установитьmodules_to_save=["score"]в конфигурации PEFT, чтобы обеспечить корректное обучение reward-головы.
Trainer для моделей вознаграждения с надзором по результатам (ORM).
Этот класс является обёрткой над классом Trainer и наследует все его атрибуты и методы.
Пример:
>>> 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()обучение
< 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
Параметры
- resume_from_checkpoint (
strилиbool, необязательный) — Если передано значение типаstr, это локальный путь к сохранённой контрольной точке, созданной предыдущим экземпляромTrainer. Если передано значение типаboolи оно равноTrue, загружается последняя контрольная точка из args.output_dir, сохранённая предыдущим экземпляромTrainer. Если параметр указан, обучение возобновляется из состояний модели/оптимизатора/планировщика, загруженных из этой контрольной точки. - trial (
optuna.Trialилиdict[str, Any], необязательный) — Запуск испытания или словарь гиперпараметров для поиска гиперпараметров. - ignore_keys_for_eval (
list[str], необязательный) — Список ключей в выводе вашей модели (если он представляет собой словарь), которые следует игнорировать при сборе предсказаний для оценки во время обучения.
Возвращает
~trainer_utils.TrainOutput
Объект, содержащий количество глобальных шагов, потерю обучения и метрики.
Основная точка входа для обучения.
Сохранит модель, чтобы вы могли загрузить её снова с помощью from_pretrained().
Сохранение будет выполняться только из основного процесса.
push_to_hub
< source >( commit_message: str | None = 'End of training'blocking: bool = Truetoken: str | None = Nonerevision: str | None = Noneprivate: bool | None = None**kwargs )
Параметры
- commit_message (
str, необязательный, по умолчанию"End of training") — Сообщение для коммита при отправке. - blocking (
bool, необязательный, по умолчаниюTrue) — Определяет, должна ли функция возвращаться только после завершенияgit push. - token (
str, необязательный, по умолчаниюNone) — Токен с правом записи для перезаписи исходных аргументов Trainer. - revision (
str, необязательный) — Git-ревизия, от которой выполняется коммит. По умолчанию используется head ветки “main”. - private (
bool, необязательный) — Определяет, следует ли сделать репозиторий приватным при его создании. По умолчанию используется значениеargs.hub_private_repo. Не имеет эффекта, если репозиторий уже существует. - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в~Trainer.create_model_card.
Загрузите self.model и self.processing_class в модельный хаб 🤗 в репозиторий self.args.hub_model_id.
RewardConfig
класс 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 = Noneactivation_checkpointing: bool | None = Noneactivation_checkpointing_kwargs: dict[str, typing.Any] | str | 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 )
Параметры, управляющие моделью
- model_init_kwargs (
dict[str, Any], необязательный) — Параметры-ключи для from_pretrained, используемые, когда аргументmodelв RewardTrainer передан в виде строки. Значениеrevisionтакже используется при загрузке токенизатора. - trust_remote_code (
bool, optional, defaults toFalse) — Whether to allow loading models and tokenizers that ship custom Python code from the Hub. Forwarded to from_pretrained and from_pretrained. - chat_template_path (
str, необязательный) — Если указано, задаёт шаблон чата для модели. Это может быть путь к токенизатору (локальная директория или модель на Hugging Face Hub) либо прямой путь к файлу шаблона Jinja. При использовании файла Jinja необходимо убедиться, что все специальные токены, упомянутые в шаблоне, добавлены в токенизатор, а слой эмбеддингов модели изменён в соответствии с этим. - disable_dropout (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли отключить dropout в модели.
Параметры, управляющие предобработкой данных
- dataset_num_proc (
int, необязательный) — Количество процессов, используемых для обработки набора данных. - eos_token (
str, необязательный) — Токен, используемый для обозначения конца хода или последовательности. ЕслиNone, по умолчанию используетсяprocessing_class.eos_token. - max_length (
intorNone, необязательный, по умолчанию1024) — Максимальная длина токенизированной последовательности. Примеры отфильтровываются, если выбранная или отклоненная последовательность превышает это значение. ЕслиNone, фильтрация не применяется. - pad_to_multiple_of (
intилиstr, необязательный, по умолчанию"auto") — Если задано, последовательности будут дополнены до кратного этого значения."auto"дополняет до кратного 128 на Neuron (AWS Trainium), который компилируется один раз для каждой формы входных данных, и не выполняет дополнения в других случаях.
Параметры, управляющие обучением
- center_rewards_coefficient (
float, необязательный) — Коэффициент, стимулирующий модель вознаграждения выдавать вознаграждения со средним значением, равным нулю (предложено в этой статье, уравнение 2). Рекомендуемое значение:0.01. - activation_offloading (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли выгружать активации на CPU.
Устаревшие параметры
Класс конфигурации для RewardTrainer.
Этот класс содержит только параметры, специфичные для обучения Reward. Полный список аргументов обучения см. в документации TrainingArguments. Обратите внимание, что значения по умолчанию в этом классе могут отличаться от значений в TrainingArguments.
С помощью HfArgumentParser мы можем превратить этот класс в аргументы argparse, которые можно указать в командной строке.
Эти параметры имеют значения по умолчанию, отличные от TrainingArguments:
logging_steps: по умолчанию10, а не500.gradient_checkpointing: по умолчаниюTrue, а неFalse.bf16: по умолчаниюTrue, если не заданfp16, а неFalse.learning_rate: по умолчанию1e-4, а не5e-5.