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.17.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

脚本 实用工具

ScriptArguments

类 trl.ScriptArguments

< >

( dataset_name: str | None = Nonedataset_config: str | None = Nonedataset_train_split: str = 'train'dataset_test_split: str = 'test'dataset_streaming: bool = Falseignore_bias_buffers: bool = False )

参数

  • dataset_name (str,, 可选) — 要加载的数据集的路径或名称。如果提供了 datasets,此参数将被忽略。
  • dataset_config (str, 可选) — 数据集配置名称。对应 load_dataset 函数的 name 参数。 如果提供了 datasets,此参数将被忽略。
  • dataset_train_split (str,可选,默认为 "train") — 用于训练的 Dataset 拆分。如果提供了 datasets,此参数将被忽略。
  • dataset_test_split (str,可选,默认为 "test") — 用于评估的数据集划分。如果提供了 datasets,此参数将被忽略。
  • dataset_streaming (bool,可选,默认为 False) — 是否以流式方式加载数据集。如果为 True,数据集将以流式模式加载。如果提供了 datasets,此参数将被忽略。
  • ignore_bias_buffers (bool,可选,默认为 False) — 用于分布式训练的调试参数。修复 DDP 中 LM bias/mask 缓冲区的问题 - 无效的标量类型、原地操作。参见 https://github.com/huggingface/transformers/issues/22482#issuecomment-1595790992。

所有脚本共有的参数。

TrlParser

类 trl.TrlParser

< >

( dataclass_types: typing.Union[trl.scripts._hf_argparser.DataClassType, collections.abc.Iterable[trl.scripts._hf_argparser.DataClassType], NoneType] = None**kwargs )

参数

  • dataclass_types (DataClassType | Iterable[DataClassType],可选) — 用于参数解析的 dataclass 类型。
  • **kwargs — 传递给 transformers.HfArgumentParser 构造函数的其他关键字参数。

transformers.HfArgumentParser 的子类,旨在解析基于 dataclass 配置的命令行参数,同时支持加载配置文件和管理环境变量。

示例:

# config.yaml
env:
    VAR1: value1
arg1: 23
# main.py
import os
from dataclasses import dataclass
from trl import TrlParser


@dataclass
class MyArguments:
    arg1: int
    arg2: str = "alpha"


parser = TrlParser(dataclass_types=[MyArguments])
training_args = parser.parse_args_and_config()

print(training_args, os.environ.get("VAR1"))
$ python main.py --config config.yaml
(MyArguments(arg1=23, arg2='alpha'),) value1

$ python main.py --arg1 5 --arg2 beta
(MyArguments(arg1=5, arg2='beta'),) None

parse_args_and_config

< >

( args: collections.abc.Iterable[str] | None = Nonereturn_remaining_strings: bool = Falsefail_with_unknown_args: bool = Trueseparate_remaining_strings: bool = False )

将命令行参数和配置文件解析为指定 dataclass 类型的实例。

此方法封装了 transformers.HfArgumentParser.parse_args_into_dataclasses,同时还会解析通过 --config 标志指定的配置文件。该配置文件(采用 YAML 格式)提供用于替换 dataclasses 中默认值的参数值。命令行参数可以覆盖配置文件中设置的值。此外,该方法还会设置配置文件中 env 字段所指定的任何环境变量。

parse_args_into_dataclasses

< >

( args = Nonereturn_remaining_strings = Falselook_for_args_file = Trueargs_filename = Noneargs_file_flag = None ) → Tuple consisting of

参数

  • args — 要解析的字符串列表。默认值取自 sys.argv。(与 argparse.ArgumentParser 相同)
  • return_remaining_strings — 如果为 true,则同时返回剩余参数字符串列表。
  • look_for_args_file — 如果为 true,将查找与当前进程入口点脚本具有相同基本名称的“.args”文件,并将其潜在内容追加到命令行参数中。
  • args_filename — 如果不为 None,将使用此文件,而不是上一个参数中指定的“.args”文件。
  • args_file_flag — 如果不为 None,将在命令行参数中查找通过此标志指定的文件。该标志可以指定多次,优先级由顺序决定(最后一个生效)。

返回值

由以下元素组成的元组

  • 以传递给初始化器的相同顺序返回数据类实例.abspath
  • 如果适用,一个额外的命名空间,用于在初始化后向解析器添加更多(非 dataclass 支持的)参数。
  • 剩余参数字符串的潜在列表。(与 argparse.ArgumentParser.parse_known_args 相同)

将命令行参数解析为指定 dataclass 类型的实例。

这依赖于 argparse 的 ArgumentParser.parse_known_args。请参阅文档: docs.python.org/3/library/argparse.html#argparse.ArgumentParser.parse_args

set_defaults_with_config

< >

( **kwargs )

使用通过关键字参数提供的值覆盖解析器的默认值,包括子解析器。

任何具有更新默认值的参数,如果之前是必需的,现在也会被标记为非必需。

返回一个字符串列表,其中包含解析器未消费的内容。

get_dataset

trl.get_dataset

< >

( mixture_config: DatasetMixtureConfig ) → DatasetDict

参数

返回值

DatasetDict

来自混合配置的合并数据集,如果设置了test_split_size,则可选进行训练/测试划分。

根据配置加载数据集的混合。

示例:

>>> from trl import DatasetMixtureConfig, get_dataset
>>> from trl.scripts.utils import DatasetConfig

>>> mixture_config = DatasetMixtureConfig(datasets=[DatasetConfig(path="trl-lib/tldr")])
>>> get_dataset(mixture_config)
DatasetDict({
    train: Dataset({
        features: ['prompt', 'completion'],
        num_rows: 116722
    })
})

DatasetConfig

类 trl.scripts.utils.DatasetConfig

< >

( path: strname: str | None = Nonedata_dir: str | None = Nonedata_files: str | list[str] | dict[str, str] | None = Nonesplit: str = 'train'columns: list[str] | None = Nonefraction: float | None = None )

参数

  • path (str) — 数据集的路径或名称。
  • name (str, 可选) — 定义数据集配置的名称。
  • data_dir (str, 可选) — 定义数据集配置的 data_dir。如果为通用构建器(csv、text 等)或 Hub 数据集指定了该参数,且 data_files 为 None,则其行为等同于将 os.path.join(data_dir, **) 作为 data_files 传入,以引用目录中的所有文件。
  • data_files (str 或 Sequence 或 Mapping,可选) — 源数据文件的路径。
  • split (str,可选,默认为 "train") — 要加载的数据集划分。
  • columns (list[str],可选) — 要从数据集中选择的列名列表。如果为 None,则选择所有列。
  • fraction (float, 可选) — 该数据集在最终混合中的目标占比。所有数据集的占比会被归一化,使其总和为一,并且混合的总大小会受到限制,以确保没有任何数据集被过度采样:每个数据集仅保留前 round(fraction * N) 行,其中 N 是避免过度采样的最大混合大小。必须为混合中的所有数据集或所有数据集都不设置此参数。不支持流式数据集。如果未设置,则直接拼接完整的数据集。

数据集的配置。

此类与 load_dataset 的签名一致,参数会直接用于 load_dataset 函数。有关更多详细信息,请参阅 load_dataset 文档。

DatasetMixtureConfig

类 trl.DatasetMixtureConfig

< >

( datasets: list[trl.scripts.utils.DatasetConfig] = <factory>streaming: bool = Falsetest_split_size: float | None = None )

参数

  • datasets (list[DatasetConfig]) — 要包含在混合中的数据集配置列表。
  • streaming (bool,可选,默认为 False) — 是否以流式方式加载数据集。如果为 True,数据集将以流式模式加载。
  • test_split_size (float, 可选) — 测试集的大小。有关更多详细信息,请参阅 train_test_split 函数中的 test_size 参数。如果为 None,则数据集不会被拆分为训练集和测试集。

用于数据集混合的配置类。

使用 HfArgumentParser,我们可以将该类转换为 argparse 参数,从而在命令行中指定。

用法:

使用 CLI 时,您可以在 YAML 配置文件中添加以下部分:

datasets:
- path: ...
    name: ...
    data_dir: ...
    data_files: ...
    split: ...
    columns: ...
    fraction: ...
- path: ...
    name: ...
    data_dir: ...
    data_files: ...
    split: ...
    columns: ...
streaming: ...
test_split_size: ...
Update on GitHub