TRL documentation

Моделирование вознаграждения

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

Моделирование вознаграждения

model badge

Обзор

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) предоставлены отдельно (явный промпт), они объединяются перед токенизацией.

Вычисление функции потерь

Пусть x x — входная последовательность (промпт), а y+ y^+ и y− y^- — соответственно выбранная и отклонённая последовательности. В модели Брэдли–Терри (Bradley & Terry, 1952), вероятность того, что y+ y^+ предпочтительнее y− y^- при функции вознаграждения r r равна p(y+≻y−∣x)=σ(r(x,y+)−r(x,y−)) p(y^+ ≻ y^- |x) = \sigma(r(x, y^+)−r(x, y^-)) , где σ σ — сигмоидная функция.

Модель вознаграждения rθ(x,y) r_\theta(x, y) обучается присваивать более высокие оценки предпочтительным ответам y+ y^+ по сравнению с непопулярными y− y^- . Потери затем определяются как отрицательная логарифмическая правдоподобность наблюдаемых предпочтений: 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].

Модель Брэдли—Терри неопределена, что означает: прибавление константы ко всем наградам не изменяет вероятности предпочтений. Для решения этой проблемы в работе 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

< >

( 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 для классификации последовательностей.
  • 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()

обучение

< >

( 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

Объект, содержащий количество глобальных шагов, потерю обучения и метрики.

Основная точка входа для обучения.

save_model

< >

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

Сохранит модель, чтобы вы могли загрузить её снова с помощью from_pretrained().

Сохранение будет выполняться только из основного процесса.

push_to_hub

< >

( 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

< >

( 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 to False) — 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 (int or None, необязательный, по умолчанию 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.

Устаревшие параметры

  • pad_token —

    Параметр pad_token устарел и будет удалён в версии v2.0.0. Вместо этого задайте tokenizer.pad_token напрямую и передайте его в тренера как processing_class.

Класс конфигурации для 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.
Update on GitHub