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, необязательный) — Имя конфигурации набора данных. Соответствует аргументуnameфункции load_dataset. Если указаноdatasets, этот параметр игнорируется. - dataset_train_split (
str, необязательный, по умолчанию"train") — Раздел набора данных, используемый для обучения. Если указанdatasets, этот параметр игнорируется. - dataset_test_split (
str, необязательный, по умолчанию"test") — Раздел набора данных, используемый для оценки. Если указаноdatasets, этот параметр игнорируется. - dataset_streaming (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли загружать набор данных в режиме потоковой передачи. Если значение равно True, набор данных будет загружен в режиме потоковой передачи. Если указан параметрdatasets, этот параметр будет проигнорирован. - ignore_bias_buffers (
bool, необязательный, по умолчаниюFalse) — Аргумент отладки для распределенного обучения. Исправление проблем DDP с буферами смещения/маски LM — некорректный скалярный тип, операция in-place. См. 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, будет искать файл в аргументах командной строки, указанных с этим флагом. Флаг можно указать несколько раз, а приоритет определяется порядком (последний имеет преимущество).
Возвращает
Кортеж, состоящий из
- экземпляры dataclass в том же порядке, в котором они были переданы в инициализатор.abspath
- при необходимости, дополнительное пространство имён для дополнительных (не основанных на dataclass) аргументов, добавляемых в парсер после инициализации.
- Потенциальный список оставшихся строковых аргументов. (аналогично argparse.ArgumentParser.parse_known_args)
Разобрать аргументы командной строки в экземпляры указанных типов dataclass.
Это опирается на ArgumentParser.parse_known_args из argparse. См. документацию по адресу:
docs.python.org/3/library/argparse.html#argparse.ArgumentParser.parse_args
Переопределяет значения по умолчанию парсера значениями, переданными через именованные аргументы, включая подпарсеры.
Любой аргумент, у которого обновлено значение по умолчанию, также будет помечен как необязательный, если ранее он был обязательным.
Возвращает список строк, которые не были обработаны парсером.
get_dataset
trl.get_dataset
< source >( mixture_config: DatasetMixtureConfig ) → DatasetDict
Параметры
- mixture_config (DatasetMixtureConfig) — аргументы скрипта, содержащие конфигурацию набора данных.
Возвращает
Объединённый набор данных из конфигурации смеси, с необязательным разделением на train/test, если задан 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, optional, по умолчанию"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 )
Параметры
- datasets (
list[DatasetConfig]) — Список конфигураций датасетов, которые нужно включить в смесь. - streaming (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли загружать наборы данных в режиме потоковой передачи. ЕслиTrue, наборы данных будут загружаться в режиме потоковой передачи. - test_split_size (
float, необязательный) — Размер тестовой выборки. Подробности см. в параметреtest_sizeфункцииtrain_test_split. ЕслиNone, датасет не будет разделён на обучающую и тестовую выборки.
Класс конфигурации для смеси наборов данных.
С помощью HfArgumentParser мы можем превратить этот класс в аргументы argparse, которые можно указать в командной строке.
Использование: