TRL documentation
스크립트 유틸리티
스크립트 유틸리티
ScriptArguments
class 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, 선택 사항) — 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
< 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 생성자에 전달되는 추가 키워드 인자.
dataclass 기반 구성을 사용하여 커맨드라인 인수를 파싱하도록 설계된 transformers.HfArgumentParser의 하위 클래스로, 구성 파일 로딩 및 환경 변수 관리도 지원합니다.
# 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 인스턴스
- 적용되는 경우, 초기화 후 파서에 추가된 (dataclass 기반이 아닌) 추가 인수를 위한 추가 네임스페이스
- 남은 인자 문자열의 잠재적 목록. (argparse.ArgumentParser.parse_known_args와 동일)
지정된 dataclass 유형 인스턴스로 커맨드라인 인수를 파싱합니다.
이것은 argparse의 ArgumentParser.parse_known_args에 의존합니다. 문서는 다음을 참조하세요:
docs.python.org/3/library/argparse.html#argparse.ArgumentParser.parse_args
키워드 인수를 통해 제공된 값으로 파서의 기본 값을 재정의합니다. 서브파서도 포함됩니다.
기본값이 업데이트된 모든 인수는 이전에 필수였더라도 더 이상 필수로 표시되지 않습니다.
parser에 의해 소비되지 않은 문자열 목록을 반환합니다.
get_dataset
trl.get_dataset
< source >( mixture_config: DatasetMixtureConfig ) → DatasetDict
매개변수
- mixture_config (DatasetMixtureConfig) — 데이터셋 구성을 포함하는 스크립트 인자.
반환값
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
< 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을 정의합니다. 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
< source >( datasets: list[trl.scripts.utils.DatasetConfig] = <factory>streaming: bool = Falsetest_split_size: float | None = None )
데이터셋 혼합을 위한 구성 클래스입니다.
HfArgumentParser를 사용하면 이 클래스를 커맨드 라인에서 지정할 수 있는 argparse 인수로 변환할 수 있습니다.
사용법: