TRL documentation
脚本 实用工具
脚本 实用工具
ScriptArguments
类 trl.ScriptArguments
< source >( 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
< source >( 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 配置的命令行参数,同时支持加载配置文件和管理环境变量。
# 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'),) Noneparse_args_and_config
< source >( 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
< source >( 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
使用通过关键字参数提供的值覆盖解析器的默认值,包括子解析器。
任何具有更新默认值的参数,如果之前是必需的,现在也会被标记为非必需。
返回一个字符串列表,其中包含解析器未消费的内容。
get_dataset
trl.get_dataset
< source >( mixture_config: DatasetMixtureConfig ) → DatasetDict
参数
- mixture_config (DatasetMixtureConfig) — 包含数据集配置的脚本参数。
返回值
来自混合配置的合并数据集,如果设置了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
< source >( 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
< source >( datasets: list[trl.scripts.utils.DatasetConfig] = <factory>streaming: bool = Falsetest_split_size: float | None = None )
用于数据集混合的配置类。
使用 HfArgumentParser,我们可以将该类转换为 argparse 参数,从而在命令行中指定。
用法: