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

class 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, 선택 사항) — Dataset 구성 이름. load_dataset 함수의 name 인수에 해당합니다. datasets가 제공되면 이 값은 무시됩니다.
  • dataset_train_split (str, 선택 사항, 기본값 "train") — 학습에 사용할 데이터셋 분할입니다. datasets가 제공되면 이 값은 무시됩니다.
  • dataset_test_split (str, 선택 사항, 기본값 "test") — 평가에 사용할 데이터셋 분할입니다. datasets가 제공되면 이 값은 무시됩니다.
  • dataset_streaming (bool, 선택 사항, 기본값 False) — 데이터셋을 스트리밍할지 여부입니다. True인 경우 데이터셋이 스트리밍 모드로 로드됩니다. datasets가 제공되면 이 설정은 무시됩니다.
  • ignore_bias_buffers (bool, 선택 사항, 기본값 False) — 분산 학습을 위한 디버그 인자입니다. LM bias/mask 버퍼와 관련된 DDP 문제(잘못된 스칼라 타입, 인플레이스 연산)를 수정합니다. 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 생성자에 전달되는 추가 키워드 인자.

dataclass 기반 구성을 사용하여 커맨드라인 인수를 파싱하도록 설계된 transformers.HfArgumentParser의 하위 클래스로, 구성 파일 로딩 및 환경 변수 관리도 지원합니다.

예:

# 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이 아닌 경우, 이 플래그로 지정된 커맨드 라인 인수를 사용하여 파일을 찾습니다. 플래그는 여러 번 지정할 수 있으며, 우선순위는 순서(마지막 것이 우선)에 따라 결정됩니다.

반환값

다음으로 구성된 튜플

  • 초기화자에 전달된 순서와 동일한 순서로 dataclass 인스턴스
  • 적용되는 경우, 초기화 후 파서에 추가된 (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 )

키워드 인수를 통해 제공된 값으로 파서의 기본 값을 재정의합니다. 서브파서도 포함됩니다.

기본값이 업데이트된 모든 인수는 이전에 필수였더라도 더 이상 필수로 표시되지 않습니다.

parser에 의해 소비되지 않은 문자열 목록을 반환합니다.

get_dataset

trl.get_dataset

< >

( mixture_config: DatasetMixtureConfig ) → DatasetDict

매개변수

반환값

DatasetDict

test_split_size가 설정된 경우, train/test 분할이 선택적으로 포함된 mixture 구성의 결합 데이터셋입니다.

configuration에 기반하여 데이터셋의 혼합을 로드합니다.

예:

>>> 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

class 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을 정의합니다. generic builders(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, 선택 사항) — 최종 혼합물에서 이 데이터셋이 차지할 목표 비율입니다. 비율은 모든 데이터셋에 걸쳐 합이 1이 되도록 정규화되며, 어떤 데이터셋도 과다 샘플링되지 않도록 혼합물 크기가 제한됩니다. 각 데이터셋의 첫 round(fraction * N) 행만 유지되며, 여기서 N은 과다 샘플링을 피하는 최대 혼합물 크기입니다. 혼합물의 모든 데이터셋에 대해 설정하거나, 아무것도 설정하지 않아야 합니다. 스트리밍 데이터셋에는 지원되지 않습니다. 설정되지 않은 경우, 전체 데이터셋이 연결됩니다.

데이터셋에 대한 구성

이 클래스는 load_dataset의 시그니처와 일치하며, 인수는 load_dataset 함수에서 직접 사용됩니다. 자세한 내용은 load_dataset 문서를 참고하세요.

DatasetMixtureConfig

class 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