TRL 文档

迭代训练器

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

迭代训练器

迭代微调是一种训练方法,可以在优化步骤之间执行自定义操作(例如,生成和过滤)。在 TRL 中,我们提供了一个易于使用的 API,只需几行代码即可迭代地微调您的模型。

用法

要快速开始,实例化一个模型和一个分词器。


model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
if tokenizer.pad_token is None:
    tokenizer.pad_token = tokenizer.eos_token

trainer = IterativeSFTTrainer(
    model,
    tokenizer
)

您可以选择向 step 函数提供字符串列表或张量列表。

使用张量列表作为输入:


inputs = {
    "input_ids": input_ids,
    "attention_mask": attention_mask
}

trainer.step(**inputs)

使用字符串列表作为输入:


inputs = {
    "texts": texts
}

trainer.step(**inputs)

对于因果语言模型,标签将自动从 input_ids 或文本创建。当使用序列到序列模型时,您将必须提供自己的标签或 text_labels。

IterativeTrainer

class trl.IterativeSFTTrainer

< >

( model: typing.Optional[transformers.modeling_utils.PreTrainedModel] = None args: typing.Optional[transformers.training_args.TrainingArguments] = None processing_class: typing.Union[transformers.tokenization_utils_base.PreTrainedTokenizerBase, transformers.image_processing_utils.BaseImageProcessor, transformers.feature_extraction_utils.FeatureExtractionMixin, transformers.processing_utils.ProcessorMixin, NoneType] = None optimizers: tuple = (None, None) data_collator: typing.Optional[transformers.data.data_collator.DataCollator] = None eval_dataset: typing.Union[datasets.arrow_dataset.Dataset, dict[str, datasets.arrow_dataset.Dataset], NoneType] = None max_length: typing.Optional[int] = None truncation_mode: typing.Optional[str] = 'keep_end' preprocess_logits_for_metrics: typing.Optional[typing.Callable[[torch.Tensor, torch.Tensor], torch.Tensor]] = None compute_metrics: typing.Optional[typing.Callable[[transformers.trainer_utils.EvalLoopOutput], dict]] = None optimize_device_cache: typing.Optional[bool] = False )

参数

  • model (PreTrainedModel) — 要优化的模型,可以是 ‘AutoModelForCausalLM’ 或 ‘AutoModelForSeq2SeqLM’。有关更多详细信息,请查看 PreTrainedModel 的文档。
  • args (transformers.TrainingArguments) — 用于训练的参数。
  • processing_class (PreTrainedTokenizerBaseBaseImageProcessorFeatureExtractionMixinProcessorMixin, 可选) — 用于处理数据的处理类。如果提供,将用于自动处理模型的输入,并将与模型一起保存,以便更容易地重新运行中断的训练或重用微调后的模型。
  • optimizers (tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR]) — 用于训练的优化器和调度器。
  • data_collator (Union[DataCollatorForLanguageModeling, DataCollatorForSeq2Seq], 可选) — 用于训练的数据整理器,并沿着数据加载器传递。
  • eval_dataset (datasets.Dataset) — 用于评估的数据集。
  • max_length (int, 默认为 None) — 输入的最大长度。
  • truncation_mode (str, 默认为 keep_end) — 要使用的截断模式,可以是 keep_endkeep_start
  • preprocess_logits_for_metrics (Callable[[torch.Tensor, torch.Tensor], torch.Tensor]) — 用于预处理 logits 以便计算指标的函数。
  • compute_metrics (Callable[[EvalPrediction], dict], 可选) — 用于计算指标的函数。必须接受 EvalPrediction 并返回从字符串到指标值的字典。
  • optimize_device_cache (bool, 可选, 默认为 False) — 优化 CUDA 缓存以获得稍微更节省内存的训练。

IterativeSFTTrainer 可用于通过需要在优化之间执行某些步骤的方法来微调模型。

create_model_card

< >

( model_name: typing.Optional[str] = None dataset_name: typing.Optional[str] = None tags: typing.Union[str, list[str], NoneType] = None )

参数

  • model_name (strNone, 可选, 默认为 None) — 模型的名称。
  • dataset_name (str or None, optional, defaults to None) — 用于训练的数据集名称。
  • tags (str, list[str] or None, optional, defaults to None) — 与模型卡关联的标签。

使用 Trainer 可用的信息创建模型卡的草稿。

step

< >

( input_ids: typing.Optional[list[torch.LongTensor]] = None attention_mask: typing.Optional[list[torch.LongTensor]] = None labels: typing.Optional[list[torch.LongTensor]] = None texts: typing.Optional[list[str]] = None texts_labels: typing.Optional[list[str]] = None ) dict[str, Any]

参数

  • input_ids (listtorch.LongTensor) — 包含 input_ids 的张量列表(如果未提供,将使用文本)
  • attention_mask (listtorch.LongTensor, , optional) — 包含 attention_mask 的张量列表
  • labels (listtorch.FloatTensor, optional) — 包含标签的张量列表(如果设置为 None,则默认为 input_ids)
  • texts (liststr, optional) — 包含文本输入的字符串列表(如果未提供,将直接使用 input_ids)
  • texts_labels (liststr, optional) — 包含文本标签的字符串列表(如果设置为 None,则默认为 text)

Returns

dict[str, Any]

训练统计信息的摘要

给定 input_ids、attention_mask 和 labels 列表,或 text 和 text_labels 列表,运行优化步骤。

< > Update 在 GitHub 上更新