TRL 文档
迭代训练器
并获得增强的文档体验
开始使用
迭代训练器
迭代微调是一种训练方法,可以在优化步骤之间执行自定义操作(例如,生成和过滤)。在 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
< source >( 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 (
PreTrainedTokenizerBase
或BaseImageProcessor
或FeatureExtractionMixin
或ProcessorMixin
, 可选) — 用于处理数据的处理类。如果提供,将用于自动处理模型的输入,并将与模型一起保存,以便更容易地重新运行中断的训练或重用微调后的模型。 - 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_end
或keep_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
< source >( model_name: typing.Optional[str] = None dataset_name: typing.Optional[str] = None tags: typing.Union[str, list[str], NoneType] = None )
使用 Trainer
可用的信息创建模型卡的草稿。
step
< source >( 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 (list
torch.LongTensor
) — 包含 input_ids 的张量列表(如果未提供,将使用文本) - attention_mask (list
torch.LongTensor
, , optional) — 包含 attention_mask 的张量列表 - labels (list
torch.FloatTensor
, optional) — 包含标签的张量列表(如果设置为 None,则默认为 input_ids) - texts (list
str
, optional) — 包含文本输入的字符串列表(如果未提供,将直接使用 input_ids) - texts_labels (list
str
, optional) — 包含文本标签的字符串列表(如果设置为 None,则默认为 text)
Returns
dict[str, Any]
训练统计信息的摘要
给定 input_ids、attention_mask 和 labels 列表,或 text 和 text_labels 列表,运行优化步骤。