Datasets documentation
주요 클래스
주요 클래스
DatasetInfo
class datasets.DatasetInfo
< source >( description: str = <factory>citation: str = <factory>homepage: str = <factory>license: str = <factory>features: typing.Optional[datasets.features.features.Features] = Nonepost_processed: typing.Optional[datasets.info.PostProcessedInfo] = Nonesupervised_keys: typing.Optional[datasets.info.SupervisedKeysData] = Nonebuilder_name: typing.Optional[str] = Nonedataset_name: typing.Optional[str] = Noneconfig_name: typing.Optional[str] = Noneversion: typing.Union[str, datasets.utils.version.Version, NoneType] = Nonesplits: typing.Optional[datasets.splits.SplitDict] = Nonedownload_checksums: typing.Optional[dict] = Nonedownload_size: typing.Optional[int] = Nonepost_processing_size: typing.Optional[int] = Nonedataset_size: typing.Optional[int] = Nonesize_in_bytes: typing.Optional[int] = None )
매개변수
- description (
str) — 데이터셋에 대한 설명입니다. - citation (
str) — 데이터셋의 BibTeX 인용문입니다. - homepage (
str) — 데이터셋의 공식 홈페이지 URL입니다. - license (
str) — 데이터셋의 라이선스입니다. 라이선스 이름이거나 라이선스 조항을 포함하는 문단이 될 수 있습니다. - features (Features, 선택 사항) — 데이터셋의 열 유형을 지정하는 데 사용되는 features입니다.
- post_processed (
PostProcessedInfo, 선택 사항) — 비추천. 데이터셋의 가능한 후처리 리소스에 대한 정보입니다. 예를 들어, 인덱스에 대한 정보를 포함할 수 있습니다. - supervised_keys (
SupervisedKeysData, 선택 사항) — 데이터셋에 해당되는 경우, 지도 학습을 위한 입력 특징과 라벨을 지정합니다. (TFDS에서 이관된 레거시 항목) - builder_name (
str, 선택 사항) — 데이터셋을 생성하는 데 사용되는GeneratorBasedBuilder하위 클래스의 이름입니다. 또한 데이터셋 빌더 클래스 이름의 snake_case 버전이기도 합니다. - config_name (
str, 선택 사항) — BuilderConfig에서 파생된 구성의 이름입니다. - version (
str또는 Version, 선택 사항) — 데이터셋의 버전입니다. - splits (
dict, 선택) — 스플릿 이름과 메타데이터 간의 매핑입니다. - download_checksums (
dict, 선택 사항) — 데이터셋의 체크섬을 다운로드할 URL과 해당 메타데이터 간의 매핑입니다. - download_size (
int, 선택 사항) — 데이터셋 생성을 위해 다운로드할 파일의 크기(바이트 단위). - post_processing_size (
int, 선택 사항) — 비추천. 후처리(있다면) 후 데이터셋의 바이트 단위 크기입니다. - dataset_size (
int, 선택 사항) — 모든 split에 대한 Arrow 테이블의 바이트 단위 합계 크기입니다. - size_in_bytes (
int, 선택 사항) — 데이터셋과 관련된 모든 파일(다운로드된 파일 + Arrow 파일)의 바이트 단위 합계 크기입니다. - **config_kwargs (추가 키워드 인자) — BuilderConfig에 전달되고 DatasetBuilder에서 사용되는 키워드 인자입니다.
데이터셋에 대한 정보.
DatasetInfo는 데이터셋의 이름, 버전, 특징을 포함하여 데이터셋을 문서화합니다.
전체 목록은 생성자 인수와 속성을 참조하세요.
생성 시 모든 필드가 알려진 것은 아니며, 나중에 업데이트될 수 있습니다.
from_directory
< source >( dataset_info_dir: strstorage_options: typing.Optional[dict] = None )
dataset_info_dir의 JSON 파일에서 DatasetInfo를 생성합니다.
이 함수는 DatasetInfo의 동적으로 생성된 모든 필드(num_examples, hash, 생성 시각, …)를 업데이트합니다.
이 작업은 이전 메타데이터를 모두 덮어씁니다.
write_to_directory
< source >( dataset_info_dirpretty_print = Falsestorage_options: typing.Optional[dict] = None )
DatasetInfo와 라이선스(있는 경우)를 JSON 파일로 dataset_info_dir에 작성합니다.
데이터셋
기본 클래스 Dataset은 Apache Arrow 테이블에 기반한 Dataset을 구현합니다.
클래스 datasets.Dataset
< source >( arrow_table: Tableinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_table: typing.Optional[datasets.table.Table] = Nonefingerprint: typing.Optional[str] = None )
Arrow 테이블에 기반한 Dataset입니다.
add_column
< source >( name: strcolumn: typing.Union[list, numpy.ndarray]new_fingerprint: typing.Optional[str] = Nonefeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure, NoneType] = None )
Dataset에 열을 추가합니다.
1.7에 추가
add_item
< source >( item: dictnew_fingerprint: typing.Optional[str] = None )
Dataset에 항목을 추가합니다.
1.7에 추가
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> new_review = {'label': 0, 'text': 'this movie is the absolute worst thing I have ever seen'}
>>> ds = ds.add_item(new_review)
>>> ds[-1]
{'label': 0, 'text': 'this movie is the absolute worst thing I have ever seen'}from_file
< source >( filename: strinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_filename: typing.Optional[str] = Nonein_memory: bool = False )
filename에 있는 Arrow 테이블을 기반으로 Dataset을 초기화합니다.
from_buffer
< source >( buffer: Bufferinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_buffer: typing.Optional[pyarrow.lib.Buffer] = None )
Arrow 버퍼 기반의 Dataset을 인스턴스화합니다.
from_pandas
< source >( df: DataFramefeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonepreserve_index: typing.Optional[bool] = None )
매개변수
- df (
pandas.DataFrame) — 데이터셋을 포함하는 데이터프레임. - features (Features, 선택 사항) — Dataset의 features입니다.
- info (
DatasetInfo, 선택 사항) — 설명, 인용 문헌 등 데이터셋 정보 - split (
NamedSplit, 선택 사항) — 데이터셋 분할의 이름. - preserve_index (
bool, 선택 사항) — 결과 Dataset에 인덱스를 추가 열로 저장할지 여부입니다. 기본값인None은RangeIndex를 제외하고 인덱스를 열로 저장합니다.RangeIndex는 메타데이터로만 저장됩니다. 인덱스를 반드시 열로 저장하려면preserve_index=True를 사용하세요.
pandas.DataFrame를 pyarrow.Table로 변환하여 Dataset을 생성합니다.
결과 Arrow Table의 열 유형은 DataFrame의 pandas.Series dtype에서 추론됩니다. object가 아닌 Series의 경우, NumPy dtype이 해당 Arrow 유형으로 변환됩니다. object의 경우, 이 Series에 포함된 Python 객체를 살펴서 데이터 유형을 추측해야 합니다.
object dtype의 Series는 항상 의미 있는 Arrow 타입으로 이어질 만큼 충분한 정보를 담고 있지 않을 수 있습니다. DataFrame의 길이가 0이거나 Series에 None/nan 객체만 포함된 경우와 같이 타입을 추론할 수 없는 경우, 타입은 null로 설정됩니다. 이 동작은 명시적인 features를 구성하여 이 함수에 전달함으로써 방지할 수 있습니다.
Important: a dataset created with from_pandas() lives in memory and therefore doesn’t have an associated cache directory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. save_to_disk / load_from_disk.
from_dict
< source >( mapping: dictfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneon_mixed_types: typing.Optional[typing.Literal['use_json']] = None )
매개변수
- mapping (
Mapping) — 문자열에서 Array 또는 Python 리스트로의 매핑. - features (Features, 선택 사항) — Dataset의 features입니다.
- info (
DatasetInfo, 선택 사항) — 설명, 인용 문헌 등 데이터셋 정보 - split (
NamedSplit, 선택 사항) — 데이터셋 분할의 이름. - on_mixed_types (
Literal["use_json"], 선택 사항, 기본값은None) — “use_json”인 경우, 미리 정의된 스키마 없이 데이터를 포함하는 비정형 필드인 혼합 타입 필드에 대해 Json() 타입을 사용합니다. 이 경우 혼합 타입 필드는 Json()으로 설정됩니다.… 문자열/정수/부동소수점 숫자의 혼합 목록이나, 임의의 값 유형을 가진 사전과 같은 목록을 로드할 수 있습니다.
4.7.0에 추가됨
dict를 pyarrow.Table로 변환하여 Dataset을 생성합니다.
Important: a dataset created with from_dict() lives in memory and therefore doesn’t have an associated cache directory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. save_to_disk / load_from_disk.
예:
각 열에 하나의 리스트를 포함하는 사전에서 Dataset을 가져오기:
>>> ds = Dataset.from_dict({"text": ["hello there !", "general kenobi !"]})features를 전달하여 컬럼 유형을 설정합니다. 이미지 데이터셋의 경우:
>>> features = Features({"image": Image()})
>>> ds = Dataset.from_dict({"image": ["path/to/image.png"]}, features=features)Datasets는 컬럼형 포맷인 Arrow를 기반으로 하므로, 모든 예시가 동일한 타입과 서브타입을 가지며, 사전은 동일한 키와 값 타입을 가져야 한다고 가정합니다. 데이터셋을 로드할 때 필드의 타입이 일치하지 않으면 오류가 발생하며, 사전에서 누락된 필드는 None으로 채워져 모든 사전이 동일한 키와 값 타입을 갖도록 합니다.
이 문제를 피하고 오류 없이 혼합된 유형을 허용하려면 on_mixed_types="use_json"을 사용하거나 Json 유형으로 features=를 지정할 수 있습니다:
>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]})
Traceback (most recent call last):
...
File "pyarrow/error.pxi", line 92, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: Could not convert 'foo' with type str: tried to convert to int64
>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]}, on_mixed_types="use_json")
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]
>>> features = Features({"a": Json()})
>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]}, features=features)
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]임의의 키와 값을 가진 딕셔너리 목록에서도 누락된 필드를 None으로 채우는 것을 방지하기 위해 유용합니다:
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]})
>>> ds.features
{'a': List({'b': Value('int64'), 'c': Value('int64')})}
>>> list(ds["a"])
[[{'b': 0, 'c': None}, {'b': None, 'c': 0}]] # missing fields are filled with None
>>> features = Features({"a": List(Json())})
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, features=features)
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]] # OK
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, on_mixed_types="use_json")
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]] # OK도구 호출 데이터가 포함된 또 다른 예시:
>>> messages = [
... {"role": "user", "content": "Turn on the living room lights and play my electronic music playlist."},
... {"role": "assistant", "tool_calls": [
... {"type": "function", "function": {
... "name": "control_light",
... "arguments": {"room": "living room", "state": "on"}
... }},
... {"type": "function", "function": {
... "name": "play_music",
... "arguments": {"playlist": "electronic"} # mixed-type here since keys ["playlist"] and ["room", "state"] are different
... }}]
... },
... {"role": "tool", "name": "control_light", "content": "The lights in the living room are now on."},
... {"role": "tool", "name": "play_music", "content": "The music is now playing."},
... {"role": "assistant", "content": "Done!"}
... ]
>>> ds = Dataset.from_dict({"messages": [messages]}, on_mixed_types="use_json")
>>> ds.features
{'messages': List({'role': Value('string'), 'content': Value('string'), 'tool_calls': List(Json()), 'name': Value('string')})}
>>> ds[0]["messages"][1]["tool_calls"][0]["function"]["arguments"]
{"room": "living room", "state": "on"}from_list
< source >( mapping: listfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneon_mixed_types: typing.Optional[typing.Literal['use_json']] = None )
매개변수
- mapping (
List[dict]) — 문자열에서 행 값으로의 매핑 목록. - features (
Features, 선택 사항) — Dataset의 features입니다. - info (
DatasetInfo, optional) — 설명, 인용 정보 등 데이터셋에 대한 정보 - split (
NamedSplit, 선택 사항) — 데이터셋 분할의 이름. - on_mixed_types (
Literal["use_json"], 선택 사항, 기본값은None) — “use_json”인 경우, 미리 정의된 스키마 없이 데이터를 포함하는 비정형 필드인 혼합 타입 필드에 대해 Json() 타입을 사용합니다. 이 경우 혼합 타입 필드는 Json()으로 설정됩니다.… 문자열/정수/부동소수점 숫자의 혼합 목록이나, 임의의 값 유형을 가진 사전과 같은 목록을 로드할 수 있습니다.
4.7.0에 추가됨
dict 목록을 pyarrow.Table로 변환하여 Dataset을 생성합니다.
features에 전달된 값과 관계없이, 첫 번째 항목의 키가 데이터셋 열을 결정하는 데 사용됩니다.
Important: a dataset created with from_list() lives in memory and therefore doesn’t have an associated cache directory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. save_to_disk / load_from_disk.
예:
예제가 포함된 리스트에서 Dataset을 가져오기:
>>> ds = Dataset.from_list([{"text": "hello there !"}, {"text": "general kenobi !"}]})features를 전달하여 컬럼 유형을 설정합니다. 이미지 데이터셋의 경우:
>>> features = Features({"image": Image()})
>>> ds = Dataset.from_list([{"image": "path/to/image.png"}], features=features)Datasets는 컬럼형 포맷인 Arrow를 기반으로 하므로, 모든 예시가 동일한 타입과 서브타입을 가지며, 사전은 동일한 키와 값 타입을 가져야 한다고 가정합니다. 데이터셋을 로드할 때 필드의 타입이 일치하지 않으면 오류가 발생하며, 사전에서 누락된 필드는 None으로 채워져 모든 사전이 동일한 키와 값 타입을 갖도록 합니다.
이 문제를 피하고 오류 없이 혼합된 유형을 허용하려면 on_mixed_types="use_json"을 사용하거나 Json 유형으로 features=를 지정할 수 있습니다:
>>> ds = Dataset.from_list([{"a": 0}, {"a": "foo"}, {"a": {"subfield": "bar"}}])
Traceback (most recent call last):
...
File "pyarrow/error.pxi", line 92, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: Could not convert 'foo' with type str: tried to convert to int64
>>> ds = Dataset.from_list([{"a": 0}, {"a": "foo"}, {"a": {"subfield": "bar"}}], on_mixed_types="use_json")
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]
>>> features = Features({"a": Json()})
>>> ds = Dataset.from_list([{"a": 0}, {"a": "foo"}, {"a": {"subfield": "bar"}}], features=features)
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]임의의 키와 값을 가진 딕셔너리 목록에서도 누락된 필드를 None으로 채우는 것을 방지하기 위해 유용합니다:
>>> ds = Dataset.from_list([{"a": [{"b": 0}, {"c": 0}]}])
>>> ds.features
{'a': List({'b': Value('int64'), 'c': Value('int64')})}
>>> list(ds["a"])
[[{'b': 0, 'c': None}, {'b': None, 'c': 0}]] # missing fields are filled with None
>>> features = Features({"a": List(Json())})
>>> ds = Dataset.from_list([{"a": [{"b": 0}, {"c": 0}]}], features=features)
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]] # OK
>>> ds = Dataset.from_list([{"a": [{"b": 0}, {"c": 0}]}], on_mixed_types="use_json")
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]] # OK도구 호출 데이터가 포함된 또 다른 예시:
>>> messages = [
... {"role": "user", "content": "Turn on the living room lights and play my electronic music playlist."},
... {"role": "assistant", "tool_calls": [
... {"type": "function", "function": {
... "name": "control_light",
... "arguments": {"room": "living room", "state": "on"}
... }},
... {"type": "function", "function": {
... "name": "play_music",
... "arguments": {"playlist": "electronic"} # mixed-type here since keys ["playlist"] and ["room", "state"] are different
... }}]
... },
... {"role": "tool", "name": "control_light", "content": "The lights in the living room are now on."},
... {"role": "tool", "name": "play_music", "content": "The music is now playing."},
... {"role": "assistant", "content": "Done!"}
... ]
>>> ds = Dataset.from_list([{"messages": messages}], on_mixed_types="use_json")
>>> ds.features
{'messages': List({'role': Value('string'), 'content': Value('string'), 'tool_calls': List(Json()), 'name': Value('string')})}
>>> ds[0]["messages"][1]["tool_calls"][0]["function"]["arguments"]
{"room": "living room", "state": "on"}from_generator
< source >( generator: typing.Callablefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsegen_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonesplit: NamedSplit = NamedSplit('train')fingerprint: typing.Optional[str] = None**kwargs )
매개변수
- generator ( —
Callable): 예시를yields하는 생성기 함수. - features (Features, 선택 사항) — Dataset의 features입니다.
- cache_dir (
str, 선택 사항, 기본값"~/.cache/huggingface/datasets") — 데이터를 캐시할 디렉터리. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - gen_kwargs(
dict, 선택 사항) —generator콜러블에 전달할 키워드 인수입니다.gen_kwargs에 샤드 목록을 전달하고num_proc를 1보다 큰 값으로 설정하여 샤드화된 데이터셋을 정의할 수 있습니다. - num_proc (
int, 선택 사항, 기본값은None) — 데이터셋을 다운로드하고 로컬에서 생성할 때 사용할 프로세스 수입니다. 데이터셋이 여러 파일로 구성되어 있는 경우 유용합니다. 기본적으로 멀티프로세싱은 비활성화되어 있습니다.num_proc이 1보다 크면,gen_kwargs의 모든 리스트 값은 동일한 길이를 가져야 합니다. 이 값들은 생성기 호출 사이에 분할됩니다. 샤드 수는gen_kwargs와num_proc.2.7.0에 추가
- split (NamedSplit, 기본값은
Split.TRAIN) — 데이터셋에 할당할 Split 이름입니다.2.21.0에 추가됨
- fingerprint (
str, 선택 사항) — 데이터셋 ID를 생성하는 데 사용되는 Fingerprint입니다. 기본적으로fingerprint은 생성기 함수와 모든 인수를 해시하여 생성되므로, AI 모델과 같은 대형 객체를 사용하는 경우 느릴 수 있습니다.4.3.0에 추가
- **kwargs (추가 키워드 인자) —
:
GeneratorConfig에 전달할 키워드 인자입니다.
생성기에서 Dataset을 생성합니다.
generator에서 데이터를 로드하고, 데이터를 Arrow 형식으로 디스크에 캐시한 후, 디스크의 메모리 매핑된 Arrow 데이터에서 Dataset을 반환합니다.
데이터셋을 뒷받침하는 Apache Arrow 테이블.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.data
MemoryMappedTable
text: string
label: int64
----
text: [["compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .","the soundtrack alone is worth the price of admission .","rodriguez does a splendid job of racial profiling hollywood style--casting excellent latin actors of all ages--a trend long overdue .","beneath the film's obvious determination to shock at any cost lies considerable skill and determination , backed by sheer nerve .","bielinsky is a filmmaker of impressive talent .","so beautifully acted and directed , it's clear that washington most certainly has a new career ahead of him if he so chooses .","a visual spectacle full of stunning images and effects .","a gentle and engrossing character study .","it's enough to watch huppert scheming , with her small , intelligent eyes as steady as any noir villain , and to enjoy the perfectly pitched web of tension that chabrol spins .","an engrossing portrait of uncompromising artists trying to create something original against the backdrop of a corporate music industry that only seems to care about the bottom line .",...,"ultimately , jane learns her place as a girl , softens up and loses some of the intensity that made her an interesting character to begin with .","ah-nuld's action hero days might be over .","it's clear why deuces wild , which was shot two years ago , has been gathering dust on mgm's shelf .","feels like nothing quite so much as a middle-aged moviemaker's attempt to surround himself with beautiful , half-naked women .","when the precise nature of matthew's predicament finally comes into sharp focus , the revelation fails to justify the build-up .","this picture is murder by numbers , and as easy to be bored by as your abc's , despite a few whopping shootouts .","hilarious musical comedy though stymied by accents thick as mud .","if you are into splatter movies , then you will probably have a reasonably good time with the salton sea .","a dull , simple-minded and stereotypical tale of drugs , death and mind-numbing indifference on the inner-city streets .","the feature-length stretch . . . strains the show's concept ."]]
label: [[1,1,1,1,1,1,1,1,1,1,...,0,0,0,0,0,0,0,0,0,0]]데이터셋을 뒷받침하는 Apache Arrow 테이블을 포함하는 캐시 파일.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.cache_files
[{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-validation.arrow'}]데이터셋의 열 수.
데이터셋의 행 수(Dataset.len()와 동일).
데이터셋의 열 이름.
데이터셋의 형태(열 수, 행 수).
flatten
< source >( new_fingerprint: typing.Optional[str] = Nonemax_depth = 16 ) → Dataset
Flatten the table. struct 타입인 각 열은 struct 필드별로 하나의 열로 평탄화됩니다. 다른 열은 변경되지 않습니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("rajpurkar/squad", split="train")
>>> ds.features
{'id': Value('string'),
'title': Value('string'),
'context': Value('string'),
'question': Value('string'),
'answers': {'text': List(Value('string')),
'answer_start': List(Value('int32'))}}
>>> ds = ds.flatten()
>>> ds
Dataset({
features: ['id', 'title', 'context', 'question', 'answers.text', 'answers.answer_start'],
num_rows: 87599
})캐스트
< source >( features: Featuresbatch_size: typing.Optional[int] = 1000keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000num_proc: typing.Optional[int] = None ) → Dataset
매개변수
- features (Features) —
데이터셋을 변환할 새 features입니다.
features의 필드 이름은 현재 열 이름과 일치해야 합니다.
데이터의 유형도 서로 변환 가능해야 합니다.
예를 들어
str<->ClassLabel와 같이 단순하지 않은 변환의 경우 map()을 사용하여 Dataset을 업데이트해야 합니다. - batch_size (
int, 기본값1000) — cast에 전달되는 배치당 예시 수입니다.batch_size <= 0또는batch_size == None인 경우, 전체 데이터셋을 단일 배치로 cast에 전달합니다. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - load_from_cache_file (
bool, 캐싱이 활성화된 경우 기본값은True) —function의 현재 계산을 저장하는 캐시 파일을 식별할 수 있는 경우, 다시 계산하는 대신 해당 파일을 사용합니다. - cache_file_name (
str, 선택 사항, 기본값None) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 계산 결과를 저장하는 데 사용됩니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성기에서 쓰기 작업당 행 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회(lookup) 횟수가 줄고, 값이 낮을수록 map() 실행 중 임시 메모리 사용량이 줄어듭니다. - num_proc (
int, 선택 사항, 기본값None) — 멀티프로세싱에 사용할 프로세스 수입니다. 기본적으로 멀티프로세싱을 사용하지 않습니다.
반환값
캐스팅된 기능이 포함된 데이터셋의 복사본입니다.
데이터셋을 새로운 기능 집합으로 캐스팅합니다.
예:
>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds.features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds.features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}cast_column
< source >( column: strfeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure]new_fingerprint: typing.Optional[str] = None )
디코딩을 위해 컬럼을 feature로 캐스팅합니다.
예:
>>> from datasets import load_dataset, ClassLabel
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> ds = ds.cast_column('label', ClassLabel(names=['bad', 'good']))
>>> ds.features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('string')}remove_columns
< source >( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset
데이터셋에서 하나 이상의 컬럼과 해당 컬럼에 연결된 features를 제거합니다.
remove_columns을 사용하여 map()으로 컬럼을 제거할 수도 있지만, 현재 메서드는 나머지 컬럼의 데이터를 복사하지 않으므로 더 빠릅니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.remove_columns('label')
Dataset({
features: ['text'],
num_rows: 1066
})
>>> ds = ds.remove_columns(column_names=ds.column_names) # Removing all the columns returns an empty dataset with the `num_rows` property set to 0
Dataset({
features: [],
num_rows: 0
})rename_column
< source >( original_column_name: strnew_column_name: strnew_fingerprint: typing.Optional[str] = None ) → Dataset
데이터셋의 컬럼 이름을 변경하고, 원래 컬럼에 연결된 특징을 새 컬럼 이름 아래로 이동합니다.
rename_columns
< source >( column_mapping: dictnew_fingerprint: typing.Optional[str] = None ) → Dataset
데이터셋의 여러 열 이름을 변경하고, 원래 열에 연결된 기능을 새 열 이름 아래로 이동합니다.
select_columns
< source >( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset
데이터셋에서 하나 이상의 컬럼과 해당 컬럼에 연관된 features를 선택합니다.
class_encode_column
< source >( column: strinclude_nulls: bool = False )
매개변수
- column (
str) — 캐스트할 열의 이름 (column_names로 모든 열 이름 나열) - include_nulls (
bool, 기본값은False) — 클래스 라벨에 null 값을 포함할지 여부입니다.True, 인 경우, null 값은"None"클래스 라벨로 인코딩됩니다.1.14.2에 추가됨
주어진 컬럼을 ClassLabel으로 캐스팅하고 테이블을 업데이트합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("google/boolq", split="validation")
>>> ds.features
{'answer': Value('bool'),
'passage': Value('string'),
'question': Value('string')}
>>> ds = ds.class_encode_column('answer')
>>> ds.features
{'answer': ClassLabel(num_classes=2, names=['False', 'True']),
'passage': Value('string'),
'question': Value('string')}데이터셋의 행 수.
iter
< source >( batch_size: intdrop_last_batch: bool = False )
크기 batch_size의 배치들을 순회합니다.
[~datasets.Dataset.set_format]로 포맷이 설정된 경우, 선택된 포맷으로 행이 반환됩니다.
formatted_as
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
매개변수
- type (
str, 선택 사항) —[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']에서 선택한 출력 유형입니다.None은 getitem이 Python 객체를 반환함을 의미합니다(기본값). - columns (
List[str], 선택 사항) — 출력에서 포맷할 열.None은__getitem__가 모든 열을 반환함을 의미합니다(기본값). - output_all_columns (
bool, 기본값False) — 출력에서 포맷되지 않은 컬럼도 (python 객체로) 유지합니다. - **format_kwargs (추가 키워드 인자) —
np.array,torch.tensor또는tensorflow.ragged.constant와 같은 변환 함수에 전달되는 키워드 인자입니다.
with 문장에서 사용됩니다. __getitem__ 반환 형식(타입 및 열)을 설정합니다.
set_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
매개변수
- type (
str, 선택 사항) —[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']에서 선택한 출력 유형입니다.None은__getitem__가 python 객체를 반환함을 의미합니다(기본값). - columns (
List[str], 선택 사항) — 출력에서 포맷할 열.None은__getitem__가 모든 열을 반환함을 의미합니다(기본값). - output_all_columns (
bool, 기본값False) — 출력에서 포맷되지 않은 컬럼도 (python 객체로) 유지합니다. - **format_kwargs (추가 키워드 인자) —
np.array,torch.tensor또는tensorflow.ragged.constant와 같은 변환 함수에 전달되는 키워드 인자입니다.
__getitem__ 반환 형식(타입 및 열)을 설정합니다. 데이터 포맷팅은 온더플라이로 적용됩니다.
type 형식(예: “numpy”)은 __getitem__를 사용할 때 배치 포맷팅에 사용됩니다.
또한 set_transform()을 사용하여 사용자 정의 변환으로 포맷팅하는 것도 가능합니다.
set_format를 호출한 후 map()을 호출할 수 있습니다. map이 새로운 열을 추가할 수 있으므로, 포맷된 열 목록
업데이트됩니다. 이 경우, 데이터셋에 map을 적용하여 새 컬럼을 추가하면 이 컬럼은 다음과 같이 포맷됩니다:
new formatted columns = (all columns - previously unformatted columns)예:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds.set_format(type='numpy', columns=['text', 'label'])
>>> ds.format
{'type': 'numpy',
'format_kwargs': {},
'columns': ['text', 'label'],
'output_all_columns': False}set_transform
< source >( transform: typing.Optional[typing.Callable]columns: typing.Optional[list] = Noneoutput_all_columns: bool = False )
매개변수
- transform (
Callable, 선택 사항) — 사용자가 정의한 포맷 변환으로, set_format()으로 정의된 포맷을 대체합니다. 포맷 함수는 배치(dict형식)를 입력으로 받아 배치를 반환하는 콜러블입니다. 이 함수는__getitem__에서 객체를 반환하기 직전에 적용됩니다. - columns (
List[str], 선택 사항) — 출력에서 포맷할 열입니다. 지정한 경우, 변환의 입력 배치에는 해당 열만 포함됩니다. - output_all_columns (
bool, 기본값False) — 출력에 포맷되지 않은 컬럼도 포함합니다 (python 객체로). True로 설정하면, transform의 출력과 함께 다른 포맷되지 않은 컬럼도 유지됩니다.
이 변환을 사용하여 __getitem__의 반환 형식을 설정합니다. __getitem__이 호출될 때 배치에 대해 이 변환이 즉시 적용됩니다.
set_format()와 마찬가지로, reset_format()을 사용하여 초기화할 수 있습니다.
예:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
>>> def encode(batch):
... return tokenizer(batch['text'], padding=True, truncation=True, return_tensors='pt')
>>> ds.set_transform(encode)
>>> ds[0]
{'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1]),
'input_ids': tensor([ 101, 29353, 2135, 15102, 1996, 9428, 20868, 2890, 8663, 6895,
20470, 2571, 3663, 2090, 4603, 3017, 3008, 1998, 2037, 24211,
5637, 1998, 11690, 2336, 1012, 102]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0])}__getitem__ 반환 형식을 Python 객체 및 모든 컬럼으로 재설정합니다.
self.set_format()와 동일합니다
예:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds.set_format(type='numpy', columns=['input_ids', 'token_type_ids', 'attention_mask', 'label'])
>>> ds.format
{'columns': ['input_ids', 'token_type_ids', 'attention_mask', 'label'],
'format_kwargs': {},
'output_all_columns': False,
'type': 'numpy'}
>>> ds.reset_format()
>>> ds.format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': None}with_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
매개변수
- type (
str, 선택 사항) —[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']에서 선택한 출력 유형입니다.None은__getitem__가 python 객체를 반환함을 의미합니다(기본값). - columns (
List[str], 선택 사항) — 출력에서 포맷할 열.None은__getitem__가 모든 열을 반환함을 의미합니다(기본값). - output_all_columns (
bool, 기본값False) — 출력에서 포맷되지 않은 컬럼도 (python 객체로) 유지합니다. - **format_kwargs (추가 키워드 인자) —
np.array,torch.tensor또는tensorflow.ragged.constant와 같은 변환 함수에 전달되는 키워드 인자입니다.
__getitem__ 반환 형식(타입 및 열)을 설정합니다. 데이터 포맷팅은 온더플라이로 적용됩니다.
type 형식(예: “numpy”)은 __getitem__를 사용할 때 배치 포맷팅에 사용됩니다.
with_transform()를 사용하여 포맷팅에 커스텀 트랜스포메이션을 사용하는 것도 가능합니다.
set_format()과 달리, with_format은 새로운 Dataset 객체를 반환합니다.
예:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds.format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': None}
>>> ds = ds.with_format("torch")
>>> ds.format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': 'torch'}
>>> ds[0]
{'text': 'compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
'label': tensor(1),
'input_ids': tensor([ 101, 18027, 16310, 16001, 1103, 9321, 178, 11604, 7235, 6617,
1742, 2165, 2820, 1206, 6588, 22572, 12937, 1811, 2153, 1105,
1147, 12890, 19587, 6463, 1105, 15026, 1482, 119, 102, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])}with_transform
< source >( transform: typing.Optional[typing.Callable]columns: typing.Optional[list] = Noneoutput_all_columns: bool = False )
매개변수
- transform (
Callable,optional) — 사용자가 정의한 포맷 변환으로, set_format()으로 정의된 포맷을 대체합니다. 포맷 함수는 배치(dict형태)를 입력으로 받아 배치를 반환하는 콜러블입니다. 이 함수는__getitem__에서 객체를 반환하기 직전에 적용됩니다. - columns (
List[str],optional) — 출력에서 포맷할 열입니다. 지정한 경우, transform의 입력 배치에는 해당 열만 포함됩니다. - output_all_columns (
bool, 기본값False) — 출력에 포맷되지 않은 컬럼도 포함합니다 (python 객체로).True로 설정하면, 변환 결과와 함께 다른 포맷되지 않은 컬럼도 유지됩니다.
이 변환을 사용하여 __getitem__의 반환 형식을 설정합니다. __getitem__이 호출될 때 배치에 대해 이 변환이 즉시 적용됩니다.
set_format()와 마찬가지로, reset_format()을 사용하여 초기화할 수 있습니다.
set_transform()과 달리, with_transform은 새로운 Dataset 객체를 반환합니다.
예:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> def encode(example):
... return tokenizer(example["text"], padding=True, truncation=True, return_tensors='pt')
>>> ds = ds.with_transform(encode)
>>> ds[0]
{'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1]),
'input_ids': tensor([ 101, 18027, 16310, 16001, 1103, 9321, 178, 11604, 7235, 6617,
1742, 2165, 2820, 1206, 6588, 22572, 12937, 1811, 2153, 1105,
1147, 12890, 19587, 6463, 1105, 15026, 1482, 119, 102]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0])}열(문자열 이름) 또는 행(정수 인덱스, 인덱스 또는 불리언의 반복 가능 객체)을 인덱싱하는 데 사용할 수 있습니다.
현재 사용 중인 캐시 파일이 있는 경우를 제외하고, 데이터셋 캐시 디렉터리의 모든 캐시 파일을 정리합니다.
이 명령을 실행할 때 다른 프로세스가 다른 캐시 파일을 사용 중이지 않은지 주의하세요.
map
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000features: typing.Optional[datasets.features.features.Features] = Nonedisable_nullable: bool = Falsefn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonesuffix_template: str = '_{rank:05d}_of_{num_proc:05d}'new_fingerprint: typing.Optional[str] = Nonedesc: typing.Optional[str] = Nonetry_original_type: typing.Optional[bool] = Trueon_mixed_types: typing.Optional[typing.Literal['use_json']] = 'use_json' )
매개변수
- function (
Callable) — 다음 중 하나의 시그니처를 가진 함수:batched=False이고with_indices=False이며with_rank=False인 경우function(example: Dict[str, Any]) -> Dict[str, Any]function(example: Dict[str, Any], *extra_args) -> Dict[str, Any]batched=False이고with_indices=True및/또는with_rank=True인 경우 (각각 추가 인자 하나씩)batched=True이고with_indices=False이고with_rank=False인 경우function(batch: Dict[str, List]) -> Dict[str, List]function(batch: Dict[str, List], *extra_args) -> Dict[str, List]batched=True이고with_indices=True이고/또는with_rank=True인 경우 (각각 추가 인자 하나씩)
고급 사용의 경우, 이 함수는
pyarrow.Table를 반환할 수도 있습니다. 함수가 비동기(asynchronous)인 경우,map는 사용자의 함수를 병렬로 실행합니다. 또한 함수가 아무것도 반환하지 않는 경우(None),map는 사용자의 함수를 실행하고 데이터셋을 변경하지 않은 상태로 반환합니다. 함수가 제공되지 않으면, 항등 함수(identity function)인lambda x: x를 기본값으로 사용합니다. - with_indices (
bool, 기본값False) —function에 예시 인덱스를 제공합니다. 이 경우function의 시그니처는def function(example, idx[, rank]): ...여야 합니다. - with_rank (
bool, 기본값False) —function에 프로세스 랭크를 전달합니다. 이 경우function의 시그니처는def function(example[, idx], rank): ...여야 합니다. - input_columns (
Optional[Union[str, List[str]]], 기본값None) —function에 위치 인수로 전달할 열입니다.None인 경우, 모든 포맷된 열에 대한dict매핑이 하나의 인수로 전달됩니다. - batched (
bool, 기본값False) —function에 예시 배치(batch)를 제공합니다. - batch_size (
int, 선택 사항, 기본값1000) —batched=True인 경우function에 배치별로 제공되는 예시 수입니다.batch_size <= 0또는batch_size == None인 경우, 전체 데이터셋을 단일 배치로function에 제공합니다. - drop_last_batch (
bool, 기본값False) — batch_size보다 작은 마지막 배치에 대해 함수로 처리하는 대신 버릴지 여부입니다. - remove_columns (
Optional[Union[str, List[str]]], 기본값None) — 매핑을 수행하는 동안 선택된 컬럼을 제거합니다. 컬럼은function의 출력으로 예시를 업데이트하기 전에 제거되므로,function이remove_columns에 포함된 이름의 컬럼을 추가하는 경우 해당 컬럼은 유지됩니다. - keep_in_memory (
bool, 기본값False) — 데이터셋을 캐시 파일에 쓰는 대신 메모리에 유지합니다. - load_from_cache_file (
Optional[bool], 캐싱이 활성화된 경우 기본값은True) —function의 현재 계산 결과를 저장하는 캐시 파일을 식별할 수 있는 경우, 다시 계산하는 대신 해당 파일을 사용합니다. - cache_file_name (
str, 선택 사항, 기본값None) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 계산 결과를 저장하는 데 사용됩니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성기에서 쓰기 작업당 행 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회 횟수가 줄고, 값이 낮을수록map실행 중 임시 메모리 사용량이 줄어듭니다. - features (
Optional[datasets.Features], 기본값None) — 자동 생성되는 대신 특정 Features를 사용하여 캐시 파일을 저장합니다. - disable_nullable (
bool, 기본값False) — 테이블에서 null 값을 허용하지 않습니다. - fn_kwargs (
Dict, 선택 사항, 기본값None) —function에 전달할 키워드 인자입니다. - num_proc (
int, 선택 사항, 기본값은None) — 멀티프로세싱에 사용할 프로세스 수입니다.None또는0인 경우, 멀티프로세싱을 사용하지 않고 작업이 메인 프로세스에서 실행됩니다.- If greater than
1, one or multiple worker processes are used to process data in parallel. Note: The function passed tomap()must be picklable for multiprocessing to work correctly (i.e., prefer functions defined at the top level of a module, not inside another function or class). suffixtemplate (str): Ifcache_file_nameis specified, then this suffix will be added at the end of the base name of each. Defaults to `”{rank:05d}of{num_proc:05d}”. For example, ifcache_file_nameis "processed.arrow", then forrank=1andnum_proc=4, the resulting file would be“processed_00001_of_00004.arrow”` for the default suffix.
- new_fingerprint (
str, 선택 사항, 기본값None) — 변환 후 데이터셋의 새로운 지문입니다.None인 경우, 이전 지문의 해시와 변환 인수를 사용하여 새로운 지문을 계산합니다. - desc (
str, 선택 사항, 기본값None) — 예제를 매핑하는 동안 진행률 바와 함께 표시할 의미 있는 설명입니다. - try_original_type (
Optional[bool], 기본값True) — 원래 열의 타입을 유지하려고 시도합니다(예: int32 -> int32). 항상 새로운 타입을 추론하려면 False로 설정하세요. - on_mixed_types (
Literal["use_json"], 선택 사항, 기본값은None) — “use_json”인 경우, 미리 정의된 스키마 없이 데이터를 포함하는 비정형 필드인 혼합 타입 필드에 대해 Json() 타입을 사용합니다. 이 경우 혼합 타입 필드는 Json()으로 설정됩니다.… 문자열/정수/부동소수점 숫자의 혼합 목록이나, 임의의 값 유형을 가진 사전과 같은 목록을 로드할 수 있습니다.
4.7.0에 추가됨
map 메서드를 사용하여 테이블의 모든 예시(개별 또는 배치 단위)에 함수를 적용하고 테이블을 업데이트합니다. 함수가 이미 존재하는 컬럼을 반환하면 해당 컬럼을 덮어씁니다.
batched 매개변수를 사용하여 함수가 배치 처리되어야 하는지 여부를 지정할 수 있습니다:
False인 경우, 이 함수는 1개의 예시를 입력으로 받아 1개의 예시를 반환해야 합니다. 예시는 사전(dictionary)이며, 예를 들어{"text": "Hello there !"}과 같습니다.True이고batch_size가 1인 경우, 이 함수는 1개의 예시로 구성된 배치로 입력을 받아 1개 이상의 예시로 구성된 배치를 반환할 수 있습니다. 배치는 사전(dictionary)이며, 예를 들어 1개의 예시로 구성된 배치는{"text": ["Hello there !"]}입니다.True이고batch_size가n > 1인 경우, 이 함수는n개의 예시로 구성된 배치(batch)를 입력으로 받아n개의 예시로 구성된 배치 또는 임의의 개수의 예시로 구성된 배치를 반환할 수 있습니다. 마지막 배치에는n개보다 적은 예시가 포함될 수 있습니다. 배치는 사전(dictionary)이며, 예를 들어n개의 예시로 구성된 배치는{"text": ["Hello there !"] * n}입니다.
함수가 비동기(asynchronous)인 경우, map은 최대 1,000개의 동시 호출을 허용하면서 함수를 병렬로 실행합니다.
동시에 실행될 수 있는 작업의 최대 수를 설정하려면 함수에서 asyncio.Semaphore를 사용하는 것이 권장됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> def add_prefix(example):
... example["text"] = "Review: " + example["text"]
... return example
>>> ds = ds.map(add_prefix)
>>> ds[0:3]["text"]
['Review: compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
'Review: the soundtrack alone is worth the price of admission .',
'Review: rodriguez does a splendid job of racial profiling hollywood style--casting excellent latin actors of all ages--a trend long overdue .']
# process a batch of examples
>>> ds = ds.map(lambda example: tokenizer(example["text"]), batched=True)
# set number of processors
>>> ds = ds.map(add_prefix, num_proc=4)필터
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonesuffix_template: str = '_{rank:05d}_of_{num_proc:05d}'new_fingerprint: typing.Optional[str] = Nonedesc: typing.Optional[str] = None )
매개변수
- function (
Callable) — 다음 중 하나의 시그니처를 가진 Callable입니다:function(example: Dict[str, Any]) -> boolifbatched=Falseandwith_indices=Falseandwith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> boolbatched=False이고with_indices=True및/또는with_rank=True인 경우 (각각 추가 인자 하나씩)batched=True이고with_indices=False이고with_rank=False인 경우function(batch: Dict[str, List]) -> List[bool]batched=True이고with_indices=True및/또는with_rank=True인 경우 (각각 하나의 추가 인자)function(batch: Dict[str, List], *extra_args) -> List[bool]
함수가 비동기(asynchronous)인 경우,
filter는 해당 함수를 병렬로 실행합니다. 함수가 제공되지 않으면 항상True를 반환하는 함수, 즉lambda x: True가 기본값으로 사용됩니다. - with_indices (
bool, 기본값False) —function에 예시 인덱스를 제공합니다. 이 경우function의 시그니처는def function(example, idx[, rank]): ...여야 합니다. - with_rank (
bool, 기본값False) —function에 프로세스 랭크를 전달합니다. 이 경우function의 시그니처는def function(example[, idx], rank): ...여야 합니다. - input_columns (
str또는List[str], 선택 사항) —function에 위치 인수로 전달할 열입니다.None인 경우, 모든 포맷된 열에 대한dict매핑이 하나의 인수로 전달됩니다. - batched (
bool, 기본값False) —function에 예시 배치(batch)를 제공합니다. - batch_size (
int, 선택 사항, 기본값1000) —batched = True인 경우function에 배치별로 전달할 예시 수입니다.batched = False인 경우function에 배치별로 하나의 예시가 전달됩니다.batch_size <= 0또는batch_size == None인 경우 전체 데이터셋을 단일 배치로function에 제공합니다. - keep_in_memory (
bool, 기본값False) — 데이터셋을 캐시 파일에 쓰는 대신 메모리에 유지합니다. - load_from_cache_file (
Optional[bool], 캐싱이 활성화된 경우 기본값은True) —function의 현재 계산 결과를 저장하는 캐시 파일을 식별할 수 있는 경우, 다시 계산하는 대신 해당 파일을 사용합니다. - cache_file_name (
str, 선택 사항) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 계산 결과를 저장하는 데 사용됩니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성기에서 쓰기 작업당 행 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회 횟수가 줄고, 값이 낮을수록map실행 중 임시 메모리 사용량이 줄어듭니다. - fn_kwargs (
dict, 선택 사항) —function에 전달할 키워드 인자. - num_proc (
int, 선택 사항, 기본값은None) — 멀티프로세싱에 사용할 프로세스 수입니다. None 또는 0이면 멀티프로세싱을 사용하지 않고 메인 프로세스에서 작업을 실행합니다. 1보다 크면 하나 이상의 워커 프로세스를 사용하여 데이터를 병렬로 처리합니다. 참고: 멀티프로세싱이 올바르게 작동하려면 map()에 전달되는 함수는 picklable이어야 합니다(즉, 다른 함수나 클래스 내부가 아닌 모듈의 최상위 수준에서 정의된 함수를 사용하는 것이 좋습니다).None또는0인 경우, 멀티프로세싱을 사용하지 않고 작업이 메인 프로세스에서 실행됩니다.1보다 크면, 데이터를 병렬로 처리하기 위해 하나 이상의 워커 프로세스가 사용됩니다. 참고:map()에 전달되는 함수는 멀티프로세싱이 올바르게 작동하려면 picklable이어야 합니다 (즉, 다른 함수나 클래스 내부가 아닌 모듈의 최상위 수준에서 정의된 함수를 사용하는 것이 좋습니다).
- suffix_template (
str) —cache_file_name이 지정된 경우, 각 파일의 기본 이름 끝에 이 접미사가 추가됩니다. 예를 들어,cache_file_name이"processed.arrow"이고rank = 1,num_proc = 4인 경우, 기본 접미사(_{rank:05d}_of_{num_proc:05d})를 사용할 때 생성되는 파일은"processed_00001_of_00004.arrow"가 됩니다. - new_fingerprint (
str, 선택 사항) — 변환 후 데이터셋의 새로운 지문입니다.None인 경우, 이전 지문의 해시와 변환 인수를 사용하여 새로운 지문을 계산합니다. - desc (
str, 선택 사항, 기본값None) — 예제를 필터링하는 동안 진행률 바와 함께 표시할 의미 있는 설명입니다.
… 테이블의 모든 요소에 필터 함수를 배치별로 적용하고, 필터 함수에 따라 예제가 포함된 경우에만 유지되도록 테이블을 업데이트합니다.
함수가 비동기(asynchronous)인 경우, filter는 최대 1,000개의 동시 호출(구성 가능)로 함수를 병렬로 실행합니다.
동시에 실행될 수 있는 작업의 최대 수를 설정하려면 함수에서 asyncio.Semaphore를 사용하는 것이 권장됩니다.
선택
< source >( indices: Iterablekeep_in_memory: bool = Falseindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000new_fingerprint: typing.Optional[str] = None )
매개변수
- indices (
range,list,iterable,ndarray또는Series) — 인덱싱을 위한 정수 인덱스의 범위, 리스트 또는 1차원 배열입니다. 인덱스가 연속된 범위에 해당하면 Arrow 테이블은 단순히 슬라이싱됩니다. 그러나 연속되지 않은 인덱스 리스트를 전달하면 인덱스 매핑이 생성되는데, 이는 훨씬 비효율적이지만 요청된 행으로 구성된 Arrow 테이블을 다시 생성하는 것보다는 여전히 빠릅니다. - keep_in_memory (
bool, 기본값False) — 인덱스 매핑을 캐시 파일에 쓰는 대신 메모리에 유지합니다. - indices_cache_file_name (
str, 선택 사항, 기본값None) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 인덱스 매핑을 저장하는 데 사용됩니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성기에서 쓰기 작업당 행 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회 횟수가 줄고, 값이 낮을수록map실행 중 임시 메모리 사용량이 줄어듭니다. - new_fingerprint (
str, 선택 사항, 기본값None) — 변환 후 데이터셋의 새로운 지문입니다.None인 경우, 이전 지문의 해시와 변환 인수를 사용하여 새로운 지문을 계산합니다.
인덱스의 목록/배열에 따라 선택된 행을 포함하는 새로운 데이터셋을 생성합니다.
sort
< source >( column_names: typing.Union[str, collections.abc.Sequence[str]]reverse: typing.Union[bool, collections.abc.Sequence[bool]] = Falsenull_placement: str = 'at_end'keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000new_fingerprint: typing.Optional[str] = None )
매개변수
- column_names (
Union[str, Sequence[str]]) — 정렬할 열 이름입니다. - reverse (
Union[bool, Sequence[bool]], 기본값False) —True인 경우, 오름차순 대신 내림차순으로 정렬합니다. 단일 bool 값을 제공하는 경우, 해당 값은 모든 열 이름의 정렬에 적용됩니다. 그렇지 않으면 column_names와 동일한 길이와 순서를 가진 bool 목록을 제공해야 합니다. - null_placement (
str, 기본값은at_end) — 를None값을 앞에 배치하려면at_start또는first또는 끝에 배치하려면at_end또는last1.14.2에 추가됨
- keep_in_memory (
bool, 기본값False) — 정렬된 인덱스를 캐시 파일에 쓰는 대신 메모리에 유지합니다. - load_from_cache_file (
Optional[bool], 캐싱이 활성화된 경우 기본값은True) — 정렬된 인덱스를 저장하는 캐시 파일을 식별할 수 있는 경우, 다시 계산하는 대신 해당 파일을 사용합니다. - indices_cache_file_name (
str, 선택 사항, 기본값None) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 정렬된 인덱스를 저장하는 데 사용됩니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성자(write operation)의 한 번에 기록할 행 수입니다. 값이 높을수록 캐시 파일 크기가 작아지고, 값이 낮을수록 임시 메모리 사용량이 줄어듭니다. - new_fingerprint (
str, 선택 사항, 기본값None) — 변환 후 데이터셋의 새로운 지문입니다.None인 경우, 이전 지문의 해시와 변환 인수를 사용하여 새로운 지문을 계산합니다.
하나 또는 여러 열에 따라 정렬된 새로운 데이터셋을 생성합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset('cornell-movie-review-data/rotten_tomatoes', split='validation')
>>> ds['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> sorted_ds = ds.sort('label')
>>> sorted_ds['label'][:10]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> another_sorted_ds = ds.sort(['label', 'text'], reverse=[True, False])
>>> another_sorted_ds['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]shuffle
< source >( seed: typing.Optional[int] = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000new_fingerprint: typing.Optional[str] = None )
매개변수
- seed (
int, 선택 사항) —generator=None인 경우 기본 BitGenerator를 초기화하는 데 사용할 시드입니다.None인 경우, OS에서 새로운 예측 불가능한 엔트로피를 가져옵니다.int또는array_like[ints]가 전달되면, SeedSequence에 전달되어 초기 BitGenerator 상태를 유도합니다. - generator (
numpy.random.Generator, 선택 사항) — 데이터셋 행의 순열을 계산하는 데 사용할 Numpy random Generator입니다.generator=None(기본값)인 경우,np.random.default_rng(NumPy의 기본 BitGenerator(PCG64))를 사용합니다. - keep_in_memory (
bool, 기본값False) — 캐시 파일에 쓰는 대신 셔플된 인덱스를 메모리에 유지합니다. - load_from_cache_file (
Optional[bool], 캐싱이 활성화된 경우 기본값은True) — 셔플된 인덱스를 저장하는 캐시 파일을 식별할 수 있는 경우, 다시 계산하는 대신 해당 파일을 사용합니다. - indices_cache_file_name (
str, 선택 사항) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 섞인 인덱스를 저장하는 데 사용됩니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성기에서 쓰기 작업당 행 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회 횟수가 줄고, 값이 낮을수록map실행 중 임시 메모리 사용량이 줄어듭니다. - new_fingerprint (
str, 선택 사항, 기본값None) — 변환 후 데이터셋의 새로운 지문입니다.None인 경우, 이전 지문의 해시와 변환 인수를 사용하여 새로운 지문을 계산합니다.
행이 섞인 새로운 Dataset을 생성합니다.
현재 shuffling은 numpy 랜덤 생성기를 사용합니다. NumPy BitGenerator를 제공하거나, NumPy의 기본 랜덤 생성기(PCG64)를 초기화할 시드를 지정할 수 있습니다.
Shuffling은 인덱스 목록 [0:len(my_dataset)]을 섞어 인덱스 매핑을 생성합니다.
하지만 Dataset에 인덱스 매핑이 있는 순간 속도가 10배까지 느려질 수 있습니다.
이유는 인덱스 매핑을 사용해 읽을 행 인덱스를 가져오는 추가 단계가 발생하고, 무엇보다 더 이상 연속된 데이터 청크를 읽지 않기 때문입니다.
속도를 회복하려면 인덱스 매핑을 제거하는 Dataset.flatten_indices()를 사용해 디스크에 전체 데이터셋을 다시 작성해야 합니다.
데이터셋의 크기에 따라 상당한 시간이 소요될 수 있습니다:
my_dataset[0] # fast
my_dataset = my_dataset.shuffle(seed=42)
my_dataset[0] # up to 10x slower
my_dataset = my_dataset.flatten_indices() # rewrite the shuffled dataset on disk as contiguous chunks of data
my_dataset[0] # fast again이 경우 IterableDataset으로 전환하고, 그 빠른 근사 셔플링 방법인 IterableDataset.shuffle()을 활용하는 것을 권장합니다.
shards의 순서만 섞고 데이터셋에 shuffle 버퍼를 추가할 뿐이므로, 데이터셋의 속도가 최적 상태로 유지됩니다:
my_iterable_dataset = my_dataset.to_iterable_dataset(num_shards=128)
for example in enumerate(my_iterable_dataset): # fast
pass
shuffled_iterable_dataset = my_iterable_dataset.shuffle(seed=42, buffer_size=100)
for example in enumerate(shuffled_iterable_dataset): # as fast as before
pass첫 n개 요소를 건너뛰는 새로운 Dataset을 생성합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> list(ds.take(3))
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'}]
>>> ds = ds.skip(1)
>>> list(ds.take(3))
[{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'},
{'label': 1,
'text': 'if you sometimes like to go to the movies to have fun , wasabi is a good place to start .'}]첫 번째 n개 요소만 포함된 새로운 Dataset을 생성합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> small_ds = ds.take(2)
>>> list(small_ds)
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'}]train_test_split
< source >( test_size: typing.Union[float, int, NoneType] = Nonetrain_size: typing.Union[float, int, NoneType] = Noneshuffle: bool = Truestratify_by_column: typing.Optional[str] = Noneseed: typing.Optional[int] = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonetrain_indices_cache_file_name: typing.Optional[str] = Nonetest_indices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000train_new_fingerprint: typing.Optional[str] = Nonetest_new_fingerprint: typing.Optional[str] = None )
매개변수
- test_size (
Union[float, int, None], 선택 사항) — 테스트 분할의 크기float인 경우,0.0과1.0사이여야 하며 데이터셋 중 테스트 분할에 포함할 비율을 나타냅니다.int인 경우, 테스트 샘플의 절대 개수를 나타냅니다.None인 경우, 값은 train size의 보수로 설정됩니다.train_size도None인 경우,0.25로 설정됩니다. - train_size (
Union[float, int, None], 선택) — train split의 크기float인 경우,0.0과1.0사이여야 하며 train split에 포함할 데이터셋의 비율을 나타냅니다.int인 경우, train 샘플의 절대 개수를 나타냅니다.None인 경우, 값은 test 크기의 보수로 자동 설정됩니다. - shuffle (
bool, 선택 사항, 기본값True) — 데이터를 분할하기 전에 섞을지 여부. - stratify_by_column (
str, 선택 사항, 기본값None) — 데이터의 층화 분할을 수행하는 데 사용할 레이블의 열 이름입니다. - seed (
int, 선택 사항) —generator=None인 경우 기본 BitGenerator를 초기화하는 데 사용할 시드입니다.None인 경우, OS에서 새로운 예측 불가능한 엔트로피를 가져옵니다.int또는array_like[ints]가 전달되면, SeedSequence에 전달되어 초기 BitGenerator 상태를 유도합니다. - generator (
numpy.random.Generator, 선택 사항) — 데이터셋 행의 순열을 계산하는 데 사용할 Numpy random Generator입니다.generator=None(기본값)인 경우,np.random.default_rng(NumPy의 기본 BitGenerator(PCG64))를 사용합니다. - keep_in_memory (
bool, 기본값False) — 캐시 파일에 쓰는 대신 분할 인덱스를 메모리에 유지합니다. - load_from_cache_file (
Optional[bool], 캐싱이 활성화된 경우 기본값은True) — 스플릿 인덱스를 저장하는 캐시 파일을 식별할 수 있는 경우, 다시 계산하는 대신 해당 파일을 사용합니다. - train_cache_file_name (
str, 선택 사항) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 학습 분할 인덱스를 저장하는 데 사용됩니다. - test_cache_file_name (
str, 선택 사항) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 테스트 분할 인덱스를 저장하는 데 사용됩니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성기에서 쓰기 작업당 행 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회 횟수가 줄고, 값이 낮을수록map실행 중 임시 메모리 사용량이 줄어듭니다. - train_new_fingerprint (
str, 선택 사항, 기본값None) — 변환 후 학습 세트의 새로운 지문입니다.None인 경우, 이전 지문의 해시와 변환 인수를 사용하여 새로운 지문을 계산합니다. - test_new_fingerprint (
str, 선택 사항, 기본값None) — 변환 후 테스트 세트의 새로운 지문입니다.None인 경우, 이전 지문의 해시와 변환 인수를 사용하여 새로운 지문을 계산합니다
두 개의 무작위 train 및 test 부분집합(train과 test Dataset 스플릿)을 포함하는 사전(datasets.DatasetDict)을 반환합니다.
스플릿은 test_size, train_size 및 shuffle에 따라 데이터셋에서 생성됩니다.
이 메서드는 scikit-learn의 train_test_split와 유사합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.train_test_split(test_size=0.2, shuffle=True)
DatasetDict({
train: Dataset({
features: ['text', 'label'],
num_rows: 852
})
test: Dataset({
features: ['text', 'label'],
num_rows: 214
})
})
# set a seed
>>> ds = ds.train_test_split(test_size=0.2, seed=42)
# stratified split
>>> ds = load_dataset("stanfordnlp/imdb",split="train")
Dataset({
features: ['text', 'label'],
num_rows: 25000
})
>>> ds = ds.train_test_split(test_size=0.2, stratify_by_column="label")
DatasetDict({
train: Dataset({
features: ['text', 'label'],
num_rows: 20000
})
test: Dataset({
features: ['text', 'label'],
num_rows: 5000
})
})shard
< source >( num_shards: intindex: intcontiguous: bool = Truekeep_in_memory: bool = Falseindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000 )
매개변수
- num_shards (
int) — 데이터셋을 몇 개의 샤드로 분할할지 지정합니다. - index (
int) — 선택하고 반환할 샤드입니다. - contiguous — (
bool, 기본값True): shards에 사용할 인덱스 블록을 연속적으로 선택할지 여부. - keep_in_memory (
bool, 기본값False) — 데이터셋을 캐시 파일에 쓰는 대신 메모리에 유지합니다. - indices_cache_file_name (
str, 선택 사항) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 각 샤드의 인덱스를 저장하는 데 사용됩니다. - writer_batch_size (
int, 기본값1000) — 이것은 인덱스 매핑에만 관련됩니다. 캐시 파일 작성자에서 쓰기 작업당 인덱스 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회가 적게 발생하고, 값이 낮을수록map실행 중 임시 메모리 사용량이 줄어듭니다.
데이터셋을 num_shards개의 조각으로 나누고 index번째 샤드를 반환합니다.
이것은 결정적으로 샤딩됩니다. dataset.shard(n, i)는 데이터셋을 연속된 청크로 나누므로, 처리 후 쉽게 다시 연결할 수 있습니다. len(dataset) % n == l인 경우, 처음 l개의 데이터셋은 길이가 (len(dataset) // n) + 1이고, 나머지 데이터셋은 길이가 (len(dataset) // n)입니다. datasets.concatenate_datasets([dset.shard(n, i) for i in range(n)])는 원래와 동일한 순서를 가진 데이터셋을 반환합니다.
참고: len(dataset)의 요소 수보다 n이 작거나 같아야 합니다.
반면, dataset.shard(n, i, contiguous=False)는 인덱스가 n = i인 데이터셋의 모든 요소를 포함합니다.
shuffle와 같은 무작위화 연산자를 사용하기 전에 반드시 샤딩을 수행해야 합니다.
샤딩 연산자는 데이터셋 파이프라인의 초기 단계에서 사용하는 것이 가장 좋습니다.
num_times회 반복되는 기본 데이터셋을 포함하는 새로운 Dataset을 생성합니다.
itertools.repeat과 마찬가지로, 한 번만 반복하면 전체 데이터셋을 반환합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> ds = ds.take(2).repeat(2)
>>> list(ds)
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'},
{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'}]to_tf_dataset
< source >( batch_size: typing.Optional[int] = Nonecolumns: typing.Union[str, list[str], NoneType] = Noneshuffle: bool = Falsecollate_fn: typing.Optional[typing.Callable] = Nonedrop_remainder: bool = Falsecollate_fn_args: typing.Optional[dict[str, typing.Any]] = Nonelabel_cols: typing.Union[str, list[str], NoneType] = Noneprefetch: bool = Truenum_workers: int = 0num_test_batches: int = 20 )
매개변수
- batch_size (
int, 선택 사항) — 데이터셋에서 로드할 배치의 크기입니다. 기본값은None이며, 이는 데이터셋이 배치되지 않음을 의미합니다. 반환된 데이터셋은 나중에tf_dataset.batch(batch_size)를 사용하여 배치할 수 있습니다. - columns (
List[str]또는str, 선택 사항) —tf.data.Dataset에 로드할 Dataset 컬럼입니다.collate_fn에 의해 생성되고 원래 dataset에 존재하지 않는 컬럼 이름도 사용할 수 있습니다. - shuffle(
bool, 기본값은False) — 데이터셋을 로드할 때 순서를 섞습니다. 학습에는True, 검증/평가에는False를 권장합니다. - drop_remainder(
bool, 기본값은False) — 로딩 시 마지막 불완전한 배치(dropped)를 제거합니다. 데이터셋이 생성하는 모든 배치의 배치 차원 길이가 동일하도록 보장합니다. - collate_fn(
Callable, 선택 사항) — 샘플 목록을 배치로 collate하는 함수 또는 callable 객체(예:DataCollator). - collate_fn_args (
Dict, 선택 사항) —collate_fn에 전달할 키워드 인수를 포함하는 선택적dict입니다. - label_cols (
List[str]또는str, 기본값None) — 레이블로 로드할 Dataset 컬럼입니다. 많은 모델은 Keras에 위임하지 않고 내부적으로 손실을 계산하므로, 이 경우columns입력에 레이블이 포함되어 있다면 여기에서 레이블을 전달하는 것은 선택 사항입니다. - prefetch (
bool, 기본값True) — dataloader를 별도의 스레드에서 실행하고 학습을 위한 작은 배치 버퍼를 유지할지 여부입니다. 모델이 학습하는 동안 백그라운드에서 데이터를 로드할 수 있어 성능을 향상시킵니다. - num_workers (
int, 기본값0) — 데이터셋 로딩에 사용할 워커 수. - num_test_batches (
int, 기본값20) — 데이터셋의 출력 시그니처를 추론하는 데 사용할 배치 수입니다. 이 값이 클수록 시그니처가 더 정확해지지만, 데이터셋 생성에 더 오랜 시간이 걸립니다.
Create a tf.data.Dataset from the underlying Dataset. This tf.data.Dataset will load and collate batches from
the Dataset, and is suitable for passing to methods like model.fit() or model.predict(). The dataset will yield dicts for both inputs and labels unless the dict would contain only a single key, in which case a raw tf.Tensor is yielded instead.
push_to_hub
< source >( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonesplit: typing.Optional[str] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[int] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )
매개변수
- repo_id (
str) — 다음 형식으로 push할 저장소의 ID입니다:<user>/<dataset_name>또는<org>/<dataset_name>. 또한<dataset_name>, 도 허용되며, 이 경우 로그인한 사용자의 namespace가 기본값으로 사용됩니다.또한 버킷 내부의 위치일 수도 있습니다. 예:
buckets/<user_or_org>/<bucket_name>/... - config_name (
str, 기본값 “default”) — 데이터셋의 구성 이름(또는 부분 집합)입니다. 기본값은 “default”입니다. - set_default (
bool, 선택 사항) — 이 구성을 기본 구성으로 설정할지 여부입니다. 그렇지 않으면 기본 구성은 “default”로 지정된 구성입니다. - split (
str, 선택 사항) — 해당 데이터셋에 할당될 split의 이름입니다. 기본값은self.split입니다. - data_dir (
str, 선택 사항) — 업로드된 데이터 파일을 포함할 디렉터리 이름. 기본값은config_name이 “default”와 다르면 해당 값, 아니면 “data”입니다.2.17.0에 추가
- commit_message (
str, 선택 사항) — push할 때 사용할 커밋 메시지입니다. 기본값은"Upload dataset"입니다. - commit_description (
str, 선택 사항) — 생성될 커밋에 대한 설명입니다. PR이 생성되는 경우 PR에 대한 설명이기도 합니다(create_prTrue인 경우).2.16.0에 추가
- private (
bool, 선택 사항) — 리포지토리를 비공개로 만들지 여부를 지정합니다.None(기본값)인 경우, 조직의 기본 설정이 비공개가 아닌 한 리포지토리는 공개됩니다. 이미 리포지토리가 존재하면 이 값은 무시됩니다. - token (
str, 선택) — Hugging Face Hub에 대한 선택적 인증 토큰입니다. 토큰이 전달되지 않으면hf auth login으로 로그인할 때 로컬에 저장된 토큰을 기본값으로 사용합니다. 토큰이 전달되지 않고 사용자가 로그인되지 않은 경우 오류가 발생합니다. - revision (
str, 선택 사항) — 업로드한 파일을 푸시할 브랜치입니다. 기본값은"main"브랜치입니다.2.15.0에 추가
- create_pr (
bool, 선택 사항, 기본값은False) — 업로드된 파일로 PR을 생성할지, 아니면 직접 커밋할지 여부.2.15.0에 추가
- max_shard_size (
int또는str, 선택 사항, 기본값"500MB") — hub에 업로드할 dataset shard의 최대 크기입니다. 문자열로 표현하는 경우 숫자 뒤에 단위(예:"5MB")가 따라와야 합니다. - num_shards (
int, 선택 사항) — 쓰기 위한 샤드 수. 기본적으로 샤드 수는max_shard_size.2.8.0에 추가
- embed_external_files (
bool, 기본값은True) — shards에 파일 바이트를 임베드할지 여부입니다. 구체적으로, push를 수행하기 전에 다음 유형의 필드에 대해 다음 작업을 수행합니다: - num_proc (
int, 선택 사항, 기본값은None) — 데이터셋을 준비하고 업로드할 때 사용할 프로세스 수입니다. 데이터셋에 샘플이나 임베드할 미디어 파일이 많을 때 유용합니다. HF로의 빠른 업로드를 위한 Rust 클라이언트인 hf_xet과 함께 작동하도록 “spawn” 컨텍스트를 사용합니다. 기본적으로 멀티프로세싱이 비활성화되어 있습니다.4.0.0에 추가
Parquet 데이터셋으로 Hub에 데이터셋을 업로드합니다. 데이터셋은 HTTP 요청을 통해 업로드되며, git 또는 git-lfs가 설치되어 있지 않아도 됩니다.
생성된 Parquet 파일은 기본적으로 자체 포함(self-contained)됩니다. 데이터셋에 Image, Audio 또는 Video 데이터가 포함된 경우, Parquet 파일에는 이미지 또는 오디오 파일의 바이트가 저장됩니다.
embed_external_files를 False로 설정하여 이 기능을 비활성화할 수 있습니다.
예:
>>> dataset.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset.push_to_hub("<organization>/<dataset_id>", num_shards=1024)데이터셋에 여러 스플릿(예: train/validation/test)이 있는 경우:
>>> train_dataset.push_to_hub("<organization>/<dataset_id>", split="train")
>>> val_dataset.push_to_hub("<organization>/<dataset_id>", split="validation")
>>> # later
>>> dataset = load_dataset("<organization>/<dataset_id>")
>>> train_dataset = dataset["train"]
>>> val_dataset = dataset["validation"]데이터셋에 새로운 구성(또는 부분 집합)을 추가하려면(예: 데이터셋에 여러 작업/버전/언어가 있는 경우):
>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")save_to_disk
< source >( dataset_path: typing.Union[str, bytes, os.PathLike]max_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None )
매개변수
- dataset_path (
path-like) — 데이터셋이 저장될 데이터셋 디렉터리의 경로(예:dataset/train) 또는 원격 URI(예:s3://my-bucket/dataset/train) - max_shard_size (
int또는str, 선택 사항, 기본값"500MB") — 파일시스템에 저장할 데이터셋 샤드의 최대 크기입니다. 문자열로 표현할 경우, 숫자 뒤에 단위(예:"50MB")가 따라와야 합니다. - num_shards (
int, 선택 사항) — 쓰기 위한 샤드 수. 기본적으로 샤드 수는max_shard_size및num_proc.2.8.0에 추가
- num_proc (
int, 선택 사항) — 데이터셋을 로컬에 다운로드하고 생성할 때 사용할 프로세스 수입니다. 기본적으로 멀티프로세싱이 비활성화되어 있습니다.2.8.0에 추가
- storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍입니다.2.8.0에 추가
데이터셋을 데이터셋 디렉터리에 저장하거나, fsspec.spec.AbstractFileSystem의 어떤 구현을 사용하여 파일 시스템에 저장합니다.
Image(), Audio() 및 Video() 데이터는 모두 arrow 파일에 저장됩니다. 경로나 URL을 저장하려면 Value(“string”) 타입을 사용하세요.
load_from_disk
< source >( dataset_path: typing.Union[str, bytes, os.PathLike]keep_in_memory: typing.Optional[bool] = Nonestorage_options: typing.Optional[dict] = None ) → Dataset or DatasetDict
매개변수
- dataset_path (
path-like) — 데이터셋이 로드될 데이터셋 디렉터리의 경로(예:"dataset/train") 또는 원격 URI(예:"s3//my-bucket/dataset/train") - keep_in_memory (
bool, 기본값None) — 데이터셋을 메모리에 복사할지 여부입니다.None인 경우,datasets.config.IN_MEMORY_MAX_SIZE를 0이 아닌 값으로 설정하여 명시적으로 활성화하지 않는 한 데이터셋은 메모리에 복사되지 않습니다. 자세한 내용은 성능 개선 섹션을 참고하세요. - storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍입니다.2.8.0에 추가
반환값
dataset_path가 데이터셋 디렉터리의 경로인 경우, 요청한 데이터셋입니다.dataset_path가 데이터셋 딕토리의 경로인 경우, 각 스플릿을 가진datasets.DatasetDict입니다.
이전에는 save_to_disk를 사용하여 저장된 데이터셋을 데이터셋 디렉터리 또는 fsspec.spec.AbstractFileSystem의 어떤 구현을 사용하여 파일시스템에서 로드합니다.
flatten_indices
< source >( keep_in_memory: bool = Falsecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000features: typing.Optional[datasets.features.features.Features] = Nonedisable_nullable: bool = Falsenum_proc: typing.Optional[int] = Nonenew_fingerprint: typing.Optional[str] = None )
매개변수
- keep_in_memory (
bool, 기본값False) — 데이터셋을 캐시 파일에 쓰는 대신 메모리에 유지합니다. - cache_file_name (
str, 선택 사항, 기본값None) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 계산 결과를 저장하는 데 사용됩니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성기에서 쓰기 작업당 행 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회 횟수가 줄고, 값이 낮을수록map실행 중 임시 메모리 사용량이 줄어듭니다. - features (
Optional[datasets.Features], 기본값None) — 자동 생성되는 캐시 파일 대신 특정 Features를 사용하여 캐시 파일을 저장합니다. - disable_nullable (
bool, 기본값False) — 테이블에 null 값을 허용합니다. - num_proc (
int, 선택 사항, 기본값None) — 캐시를 생성할 때 사용할 최대 프로세스 수입니다. 이미 캐시된 샤드는 순차적으로 로드됩니다. - new_fingerprint (
str, 선택 사항, 기본값None) — 변환 후 데이터셋의 새로운 지문입니다.None인 경우, 이전 지문의 해시와 변환 인수를 사용하여 새로운 지문을 계산합니다.
인덱스 매핑을 평탄화하여 새로운 Dataset을 생성하고 캐시합니다.
to_csv
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_csv_kwargs ) → int
매개변수
- path_or_buf (
PathLike또는FileOrBuffer) — 파일 경로(예:file.csv), 원격 URI(예:hf://datasets/username/my_dataset_name/data.csv), 또는 지정된 형식으로 데이터셋이 저장될 BinaryIO입니다. - batch_size (
int, 선택 사항) — 메모리에 로드하고 한 번에 작성할 배치의 크기입니다. 기본값은datasets.config.DEFAULT_MAX_BATCH_SIZE입니다. - num_proc (
int, 선택 사항) — 멀티프로세싱에 사용할 프로세스 수입니다. 기본적으로 멀티프로세싱을 사용하지 않습니다. 이 경우batch_size의 기본값은datasets.config.DEFAULT_MAX_BATCH_SIZE이지만, 충분한 컴퓨팅 자원이 있다면 기본값의 5배 또는 10배로 설정할 수 있습니다. - storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍입니다.2.19.0에 추가
- **to_csv_kwargs (추가 키워드 인수) —
pandas의
pandas.DataFrame.to_csv.2.10.0에서 변경
이제
index는 지정되지 않으면 기본적으로False입니다.인덱스를 작성하려면
index=True를 전달하고,index_label을 전달하여 인덱스 열 이름을 설정하세요.
반환값
int
쓰인 문자 또는 바이트 수.
데이터셋을 csv로 내보냅니다
to_pandas
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
pandas.DataFrame로 데이터셋을 반환합니다. 대규모 데이터셋의 경우 생성기도 반환할 수 있습니다.
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Python dict으로 데이터셋을 반환합니다. 대규모 데이터셋의 경우 생성자(generator)를 반환할 수도 있습니다.
to_json
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_json_kwargs ) → int
매개변수
- path_or_buf (
PathLike또는FileOrBuffer) — 파일 경로(예:file.json), 원격 URI(예:hf://datasets/username/my_dataset_name/data.json), 또는 지정된 형식으로 데이터셋이 저장될 BinaryIO입니다. - batch_size (
int, 선택 사항) — 메모리에 로드하고 한 번에 작성할 배치의 크기입니다. 기본값은datasets.config.DEFAULT_MAX_BATCH_SIZE입니다. - num_proc (
int, 선택 사항) — 멀티프로세싱에 사용할 프로세스 수입니다. 기본적으로 멀티프로세싱을 사용하지 않습니다. 이 경우batch_size의 기본값은datasets.config.DEFAULT_MAX_BATCH_SIZE이지만, 충분한 컴퓨팅 자원이 있다면 기본값의 5배 또는 10배로 설정할 수 있습니다. - storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍입니다.2.19.0에 추가
- **to_json_kwargs (추가 키워드 인수) —
pandas의
pandas.DataFrame.to_json. 기본 인수는lines=True입니다. `orient`가 "split" 또는 "table"인 경우 `index`의 기본값은 `False`입니다. 인덱스를 기록하려면 `index=True`를 전달하세요.2.11.0에서 변경
orient이"split"또는"table"인 경우,index파라미터의 기본값은False입니다.인덱스를 작성하려면
index=True를 전달하세요.
반환값
int
쓰인 문자 또는 바이트 수.
데이터셋을 JSON Lines 또는 JSON으로 내보냅니다.
기본 출력 형식은 JSON Lines입니다.
JSON으로 내보내려면 lines=False 인자와 원하는 orient를 전달하세요.
to_parquet
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**parquet_writer_kwargs ) → int
매개변수
- path_or_buf (
PathLike또는FileOrBuffer) — 파일 경로(예:file.parquet), 원격 URI(예:hf://datasets/username/my_dataset_name/data.parquet), 또는 지정된 형식으로 데이터셋이 저장될 BinaryIO입니다. - batch_size (
int, 선택 사항) — 메모리에 로드하고 한 번에 작성할 배치의 크기입니다. 기본값은datasets.config.MAX_ROW_GROUP_SIZE로 정의된 “100MB”의 최대 압축 해제 바이트 크기를 가진 row group을 목표로 합니다. - storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍입니다.2.19.0에 추가
- **parquet_writer_kwargs (추가 키워드 인자) —
PyArrow의
pyarrow.parquet.ParquetWriter에 전달할 매개변수.
반환값
int
쓰인 문자 또는 바이트 수.
데이터셋을 parquet로 내보냅니다
to_sql
< source >( name: strcon: typing.Union[str, ForwardRef('sqlalchemy.engine.Connection'), ForwardRef('sqlalchemy.engine.Engine'), ForwardRef('sqlite3.Connection')]batch_size: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = None**sql_writer_kwargs ) → int
매개변수
- name (
str) — SQL 테이블 이름. - con (
str또는sqlite3.Connection또는sqlalchemy.engine.Connection또는sqlalchemy.engine.Connection) — 데이터베이스에 쓰기 위해 사용되는 URI 문자열 또는 SQLite3/SQLAlchemy 연결 객체입니다. - batch_size (
int, 선택 사항) — 메모리에 로드하고 한 번에 작성할 배치의 크기입니다. 기본값은datasets.config.DEFAULT_MAX_BATCH_SIZE입니다. - num_proc (
int, 선택 사항) — 멀티프로세싱에 사용할 프로세스 수입니다. 기본적으로 멀티프로세싱을 사용하지 않습니다. 이 경우batch_size의 기본값은datasets.config.DEFAULT_MAX_BATCH_SIZE이지만, 충분한 컴퓨팅 자원이 있다면 기본값의 5배 또는 10배로 설정할 수 있습니다. - **sql_writer_kwargs (추가 키워드 인수) —
pandas의
pandas.DataFrame.to_sql.2.11.0에서 변경
이제
index는 지정되지 않으면 기본적으로False입니다.인덱스를 작성하려면
index=True를 전달하고,index_label을 전달하여 인덱스 열 이름을 설정하세요.
반환값
int
기록된 레코드 수입니다.
데이터셋을 SQL 데이터베이스로 내보냅니다.
to_iterable_dataset
< source >( num_shards: typing.Optional[int] = 1 )
매개변수
- num_shards (
int, 기본값1) — iterable dataset을 인스턴스화할 때 정의할 shard의 수입니다. 이는 특히 큰 dataset에서 데이터를 올바르게 shuffle할 수 있도록 하는 데 유용하며, PyTorch DataLoader를 사용하여 빠른 병렬 로딩을 하거나 분산 환경에서 사용하는 경우에도 유용합니다. Shard는 datasets.Dataset.shard()를 사용하여 정의됩니다. 이는 디스크에 아무것도 작성하지 않고 단순히 데이터를 슬라이스합니다.
맵 스타일 datasets.Dataset에서 datasets.IterableDataset를 가져옵니다. 이는 datasets.load_dataset()로 스트리밍 모드에서 데이터셋을 로드하는 것과 동일하지만, 데이터가 로컬 파일에서 스트리밍되므로 훨씬 빠릅니다.
map-style dataset과 달리 iterable dataset은 지연 평가(lazy) 방식이며, 반복(iteration)만 가능합니다(예: for 루프 사용). 학습 루프에서 순차적으로 읽히기 때문에 iterable dataset은 map-style dataset보다 훨씬 빠릅니다. 필터링이나 처리와 같은 iterable dataset에 적용되는 모든 변환은 dataset의 반복을 시작할 때 실시간으로 수행됩니다.
그럼에도 불구하고 datasets.IterableDataset.shuffle()를 사용하여 반복 가능한 데이터셋을 섞을 수 있습니다. 이는 여러 샤드가 있고 버퍼 크기가 충분히 크도록 지정된 경우 가장 잘 작동하는 빠른 근사 셔플링입니다.
최고의 속도 성능을 얻으려면 데이터셋에 인덱스 매핑이 없는지 확인하세요.
인덱스 매핑이 있는 경우 데이터가 연속적으로 읽히지 않아 속도가 느려질 수 있습니다.
반복 가능 데이터셋으로 전환하기 전에 ds = ds.flatten_indices()를 사용하여 데이터셋을 연속된 데이터 청크로 작성하고 최적의 속도를 확보할 수 있습니다.
예:
지연 필터링 및 처리를 사용하여:
>>> ids = ds.to_iterable_dataset()
>>> ids = ids.filter(filter_fn).map(process_fn) # will filter and process on-the-fly when you start iterating over the iterable dataset
>>> for example in ids:
... pass효율적인 셔플링을 가능하게 하는 샤딩:
>>> ids = ds.to_iterable_dataset(num_shards=64) # the dataset is split into 64 shards to be iterated over
>>> ids = ids.shuffle(buffer_size=10_000) # will shuffle the shards order and use a shuffle buffer for fast approximate shuffling when you start iterating
>>> for example in ids:
... passPyTorch DataLoader를 사용하는 경우:
>>> import torch
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.filter(filter_fn).map(process_fn)
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4) # will assign 64 / 4 = 16 shards to each worker to load, filter and process when you start iterating
>>> for example in ids:
... passPyTorch DataLoader와 shuffling을 사용하여:
>>> import torch
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.shuffle(buffer_size=10_000) # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4) # will assign 64 / 4 = 16 shards from the shuffled list of shards to each worker when you start iterating
>>> for example in ids:
... passPyTorch DataLoader와 shuffling을 사용하는 PyTorch DDP와 같은 분산 설정에서
>>> from datasets.distributed import split_dataset_by_node
>>> ids = ds.to_iterable_dataset(num_shards=512)
>>> ids = ids.shuffle(buffer_size=10_000, seed=42) # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> ids = split_dataset_by_node(ds, world_size=8, rank=0) # will keep only 512 / 8 = 64 shards from the shuffled lists of shards when you start iterating
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4) # will assign 64 / 4 = 16 shards from this node's list of shards to each worker when you start iterating
>>> for example in ids:
... pass와 여러 epoch:
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.shuffle(buffer_size=10_000, seed=42) # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> for epoch in range(n_epochs):
... ids.set_epoch(epoch) # will use effective_seed = seed + epoch to shuffle the shards and for the shuffle buffer when you start iterating
... for example in ids:
... passadd_faiss_index
< source >( column: strindex_name: typing.Optional[str] = Nonedevice: typing.Optional[int] = Nonestring_factory: typing.Optional[str] = Nonemetric_type: typing.Optional[int] = Nonecustom_index: typing.Optional[ForwardRef('faiss.Index')] = Nonebatch_size: int = 1000train_size: typing.Optional[int] = Nonefaiss_verbose: bool = Falsedtype = <class 'numpy.float32'> )
매개변수
- column (
str) — 인덱스에 추가할 벡터의 열입니다. - index_name (
str, 선택 사항) — 인덱스의index_name/식별자입니다. 이것은 get_nearest_examples() 또는 search()를 호출할 때 사용되는index_name입니다. 기본값은column에 해당합니다. - device (
Union[int, List[int]], 선택 사항) — 양의 정수인 경우, 사용할 GPU의 인덱스입니다. 음의 정수인 경우, 모든 GPU를 사용합니다. 양의 정수 목록이 전달되면 해당 GPU에서만 실행됩니다. 기본적으로 CPU를 사용합니다. - string_factory (
str, 선택 사항) — Faiss의 인덱스 팩토리에 전달되어 인덱스를 생성합니다. 기본 인덱스 클래스는IndexFlat입니다. - metric_type (
int, 선택 사항) — 메트릭의 유형입니다. 예:faiss.METRIC_INNER_PRODUCT또는faiss.METRIC_L2. - custom_index (
faiss.Index, 선택 사항) — 필요에 맞게 이미 인스턴스화하고 구성한 사용자 지정 Faiss 인덱스입니다. - batch_size (
int) — 벡터를 추가할 때 사용할 배치 크기FaissIndex. 기본값은1000.2.4.0에 추가
- train_size (
int, 선택 사항) — 인덱스에 학습 단계가 필요한 경우, 인덱스 학습에 사용할 벡터의 수를 지정합니다. - faiss_verbose (
bool, 기본값False) — Faiss 인덱스의 상세 로그 출력을 활성화합니다. - dtype (
data-type) — 인덱싱되는 numpy 배열의 dtype입니다. 기본값은np.float32입니다.
Faiss를 사용하여 빠른 검색을 위한 dense 인덱스를 추가합니다.
기본적으로 지정된 컬럼의 벡터를 기준으로 인덱싱이 수행됩니다.
GPU에서 실행하려면 device를 지정할 수 있습니다(device는 GPU 인덱스여야 합니다).
Faiss에 대한 자세한 정보는 다음에서 확인할 수 있습니다:
- 문자열 팩토리에 대해
예:
>>> ds = datasets.load_dataset('community-datasets/crime_and_punish', split='train')
>>> ds_with_embeddings = ds.map(lambda example: {'embeddings': embed(example['line']}))
>>> ds_with_embeddings.add_faiss_index(column='embeddings')
>>> # query
>>> scores, retrieved_examples = ds_with_embeddings.get_nearest_examples('embeddings', embed('my new query'), k=10)
>>> # save index
>>> ds_with_embeddings.save_faiss_index('embeddings', 'my_index.faiss')
>>> ds = datasets.load_dataset('community-datasets/crime_and_punish', split='train')
>>> # load index
>>> ds.load_faiss_index('embeddings', 'my_index.faiss')
>>> # query
>>> scores, retrieved_examples = ds.get_nearest_examples('embeddings', embed('my new query'), k=10)add_faiss_index_from_external_arrays
< source >( external_arrays: arrayindex_name: strdevice: typing.Optional[int] = Nonestring_factory: typing.Optional[str] = Nonemetric_type: typing.Optional[int] = Nonecustom_index: typing.Optional[ForwardRef('faiss.Index')] = Nonebatch_size: int = 1000train_size: typing.Optional[int] = Nonefaiss_verbose: bool = Falsedtype = <class 'numpy.float32'> )
매개변수
- external_arrays (
np.array) — 인덱스에 라이브러리 외부의 배열을 사용하려면external_arrays를 설정할 수 있습니다. 이 경우 주어진column의 배열 대신external_arrays를 사용하여 Faiss 인덱스를 생성합니다. - index_name (
str) — 인덱스의index_name/식별자입니다. 이것은 get_nearest_examples() 또는 search()를 호출할 때 사용되는index_name입니다. - device (선택 사항
Union[int, List[int]], optional) — 양의 정수인 경우, 사용할 GPU의 인덱스입니다. 음의 정수인 경우, 모든 GPU를 사용합니다. 양의 정수 목록이 전달되면 해당 GPU에서만 실행됩니다. 기본적으로 CPU를 사용합니다. - string_factory (
str, 선택 사항) — Faiss의 인덱스 팩토리에 전달되어 인덱스를 생성합니다. 기본 인덱스 클래스는IndexFlat입니다. - metric_type (
int, 선택 사항) — 메트릭의 유형입니다. 예:faiss.faiss.METRIC_INNER_PRODUCT또는faiss.METRIC_L2. - custom_index (
faiss.Index, 선택 사항) — 필요에 맞게 이미 인스턴스화하고 구성한 사용자 지정 Faiss 인덱스입니다. - batch_size (
int, 선택 사항) — FaissIndex에 벡터를 추가할 때 사용할 배치 크기. 기본값은 1000입니다.2.4.0에 추가
- train_size (
int, 선택 사항) — 인덱스에 학습 단계가 필요한 경우, 인덱스 학습에 사용할 벡터의 수를 지정합니다. - faiss_verbose (
bool, 기본값 False) — Faiss 인덱스의 상세 로그 출력을 활성화합니다. - dtype (
numpy.dtype) — 인덱싱되는 numpy 배열의 dtype입니다. 기본값은 np.float32입니다.
Faiss를 사용하여 빠른 검색을 위한 dense 인덱스를 추가합니다.
인덱스는 external_arrays의 벡터를 사용하여 생성됩니다.
GPU에서 실행하려면 device를 지정할 수 있습니다(device는 GPU 인덱스여야 합니다).
Faiss에 대한 자세한 정보는 다음에서 확인할 수 있습니다:
- 문자열 팩토리에 대해
save_faiss_index
< source >( index_name: strfile: typing.Union[str, pathlib.PurePath]storage_options: typing.Optional[dict] = None )
FaissIndex를 디스크에 저장합니다.
load_faiss_index
< source >( index_name: strfile: typing.Union[str, pathlib.PurePath]device: typing.Union[int, list[int], NoneType] = Nonestorage_options: typing.Optional[dict] = None )
매개변수
- index_name (
str) — 인덱스의 index_name/식별자입니다. 이는.get_nearest또는.search를 호출할 때 사용되는 index_name입니다. - file (
str) — 디스크 또는 원격 URI(예:"s3://my-bucket/index.faiss")에 있는 직렬화된 faiss 인덱스의 경로. - device (선택 사항,
Union[int, List[int]]) — 양의 정수인 경우 사용할 GPU의 인덱스입니다. 음의 정수인 경우 모든 GPU를 사용합니다. 양의 정수 목록을 전달하면 해당 GPU에서만 실행됩니다. 기본적으로 CPU를 사용합니다. - storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍입니다.2.11.0에 추가
Load a FaissIndex from disk.
추가 구성을 수행하려면 .get_index(index_name).faiss_index를 통해 faiss 인덱스 객체에 접근하여 필요에 맞게 조정할 수 있습니다.
add_elasticsearch_index
< source >( column: strindex_name: typing.Optional[str] = Nonehost: typing.Optional[str] = Noneport: typing.Optional[int] = Nonees_client: typing.Optional[ForwardRef('elasticsearch.Elasticsearch')] = Nonees_index_name: typing.Optional[str] = Nonees_index_config: typing.Optional[dict] = None )
매개변수
- column (
str) — 인덱스에 추가할 문서의 열입니다. - index_name (
str, 선택 사항) — 인덱스의index_name/식별자입니다. 이것은 get_nearest_examples() 또는 search()를 호출할 때 사용되는 인덱스 이름입니다. 기본값은column에 해당합니다. - host (
str, 선택 사항, 기본값localhost) — ElasticSearch가 실행 중인 호스트입니다. - port (
str, 선택 사항, 기본값9200) — ElasticSearch가 실행 중인 포트입니다. - es_client (
elasticsearch.Elasticsearch, 선택 사항) —None인 경우 인덱스를 생성하는 데 사용되는 elasticsearch 클라이언트입니다. - es_index_name (
str, 선택 사항) — 인덱스를 생성하는 데 사용되는 elasticsearch 인덱스 이름입니다. - es_index_config (
dict, 선택 사항) — elasticsearch 인덱스의 구성입니다. 기본 구성은 다음과 같습니다:
ElasticSearch를 사용하여 빠른 검색을 위한 텍스트 인덱스를 추가합니다. 이 작업은 원위치(in-place)로 수행됩니다.
예:
>>> es_client = elasticsearch.Elasticsearch()
>>> ds = datasets.load_dataset('community-datasets/crime_and_punish', split='train')
>>> ds.add_elasticsearch_index(column='line', es_client=es_client, es_index_name="my_es_index")
>>> scores, retrieved_examples = ds.get_nearest_examples('line', 'my new query', k=10)load_elasticsearch_index
< source >( index_name: stres_index_name: strhost: typing.Optional[str] = Noneport: typing.Optional[int] = Nonees_client: typing.Optional[ForwardRef('Elasticsearch')] = Nonees_index_config: typing.Optional[dict] = None )
매개변수
- index_name (
str) — 인덱스의index_name/식별자입니다.get_nearest또는search를 호출할 때 사용되는 인덱스 이름입니다. - es_index_name (
str) — 로드할 elasticsearch 인덱스의 이름입니다. - host (
str, 선택 사항, 기본값localhost) — ElasticSearch가 실행 중인 호스트입니다. - port (
str, 선택 사항, 기본값9200) — ElasticSearch가 실행 중인 포트입니다. - es_client (
elasticsearch.Elasticsearch, 선택 사항) —None인 경우 인덱스를 생성하는 데 사용되는 elasticsearch 클라이언트입니다. - es_index_config (
dict, 선택 사항) — elasticsearch 인덱스의 구성입니다. 기본 구성은 다음과 같습니다:
ElasticSearch를 사용하여 기존 텍스트 인덱스를 로드하여 빠른 검색을 수행합니다.
연결된 모든 인덱스의 colindex_nameumns/식별자를 나열합니다.
연결된 모든 인덱스의 index_name/식별자를 나열합니다.
지정된 열을 가진 인덱스를 삭제합니다.
검색
< source >( index_name: strquery: typing.Union[str, <built-in function array>]k: int = 10**kwargs ) → (scores, indices)
매개변수
- index_name (
str) — 인덱스의 이름/식별자입니다. - query (
Union[str, np.ndarray]) —index_name이 텍스트 인덱스인 경우 문자열로,index_name이 벡터 인덱스인 경우 numpy 배열로 제공되는 쿼리입니다. - k (
int) — 검색할 예시의 수.
반환값
(scores, indices)
다음과 같은 (scores, indices)의 튜플입니다:
- scores (
List[List[float]): 검색된 예제에 대한 FAISS(기본값은IndexFlatL2) 또는 ElasticSearch의 검색 점수 - indices (
List[List[int]]): 검색된 예시의 인덱스
dataset에서 쿼리에 가장 가까운 예시 인덱스를 찾습니다.
search_batch
< source >( index_name: strqueries: typing.Union[list[str], <built-in function array>]k: int = 10**kwargs ) → (total_scores, total_indices)
매개변수
- index_name (
str) — 인덱스의index_name/식별자. - queries (
Union[List[str], np.ndarray]) —index_name이 텍스트 인덱스인 경우 문자열 목록으로,index_name이 벡터 인덱스인 경우 numpy 배열로 제공되는 쿼리입니다. - k (
int) — 쿼리당 검색할 예시의 수.
반환값
(total_scores, total_indices)
다음과 같은 (total_scores, total_indices)의 튜플입니다:
- total_scores (
List[List[float]): 쿼리별로 검색된 예시들의 FAISS(기본값은IndexFlatL2) 또는 ElasticSearch 검색 점수 - total_indices (
List[List[int]]): 쿼리별 검색된 예시의 인덱스
dataset에서 쿼리에 가장 가까운 예시 인덱스를 찾습니다.
get_nearest_examples
< source >( index_name: strquery: typing.Union[str, <built-in function array>]k: int = 10**kwargs ) → (scores, examples)
매개변수
- index_name (
str) — 인덱스의 index_name/식별자입니다. - query (
Union[str, np.ndarray]) —index_name이 텍스트 인덱스인 경우 문자열로,index_name이 벡터 인덱스인 경우 numpy 배열로 제공되는 쿼리입니다. - k (
int) — 검색할 예시의 수.
반환값
(scores, examples)
다음과 같은 (scores, examples) 튜플입니다:
- scores (
List[float]): 검색된 예제에 대한 FAISS(기본적으로IndexFlatL2) 또는 ElasticSearch의 검색 점수 - examples (
dict): 검색된 예시
데이터셋에서 쿼리에 가장 가까운 예시를 찾습니다.
get_nearest_examples_batch
< source >( index_name: strqueries: typing.Union[list[str], <built-in function array>]k: int = 10**kwargs ) → (total_scores, total_examples)
매개변수
- index_name (
str) — 인덱스의index_name/식별자. - queries (
Union[List[str], np.ndarray]) —index_name이 텍스트 인덱스인 경우 문자열 목록으로,index_name이 벡터 인덱스인 경우 numpy 배열로 제공되는 쿼리입니다. - k (
int) — 쿼리당 검색할 예시의 수.
반환값
(total_scores, total_examples)
다음과 같은 (total_scores, total_examples) 튜플입니다:
- total_scores (
List[List[float]): 쿼리별로 검색된 예시들의 FAISS(기본값은IndexFlatL2) 또는 ElasticSearch 검색 점수 - total_examples (
List[dict]): 쿼리별로 검색된 예시
데이터셋에서 쿼리에 가장 가까운 예시를 찾습니다.
데이터셋의 모든 메타데이터를 포함하는 DatasetInfo 객체.
명명된 데이터셋 분할에 해당하는 NamedSplit 객체.
from_csv
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsenum_proc: typing.Optional[int] = None**kwargs )
매개변수
- path_or_paths (
path-like또는path-like목록) — CSV 파일의 경로입니다. - split (NamedSplit, 선택 사항) — 데이터셋에 할당할 분할 이름.
- features (Features, 선택 사항) — Dataset의 features입니다.
- cache_dir (
str, 선택 사항, 기본값"~/.cache/huggingface/datasets") — 데이터를 캐시할 디렉터리. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - num_proc (
int, 선택 사항, 기본값은None) — 데이터셋을 로컬로 다운로드하고 생성할 때 사용할 프로세스 수입니다. 데이터셋이 여러 파일로 구성되어 있는 경우 유용합니다. 기본적으로 멀티프로세싱은 비활성화되어 있습니다.2.8.0에 추가
- **kwargs (추가 키워드 인자) —
pandas.read_csv에 전달할 키워드 인자입니다.
CSV 파일에서 Dataset을 생성합니다.
CSV 파일을 읽고 데이터를 Arrow 형식으로 디스크에 캐시한 후, 디스크에 있는 메모리 매핑된 Arrow 데이터에서 Dataset을 반환합니다.
from_json
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsefield: typing.Optional[str] = Nonenum_proc: typing.Optional[int] = None**kwargs )
매개변수
- path_or_paths (
path-like또는path-like목록) — JSON 또는 JSON Lines 파일의 경로입니다. - split (NamedSplit, 선택 사항) — 데이터셋에 할당할 분할 이름.
- features (Features, 선택 사항) — Dataset의 features입니다.
- cache_dir (
str, 선택 사항, 기본값"~/.cache/huggingface/datasets") — 데이터를 캐시할 디렉터리. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - field (
str, 선택 사항) — 데이터셋이 포함된 JSON 파일의 필드 이름입니다. - num_proc (
int, 선택 사항 기본값은None) — 데이터셋을 로컬로 다운로드하고 생성할 때 사용할 프로세스 수입니다. 데이터셋이 여러 파일로 구성되어 있는 경우 유용합니다. 기본적으로 멀티프로세싱은 비활성화되어 있습니다.2.8.0에 추가
- **kwargs (추가 키워드 인자) —
JsonConfig에 전달할 키워드 인자입니다.
JSON 또는 JSON Lines 파일에서 Dataset을 생성합니다.
JSON 파일을 읽고 데이터를 Arrow 형식으로 디스크에 캐시한 후, 디스크의 메모리 매핑된 Arrow 데이터에서 Dataset을 반환합니다.
from_parquet
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsecolumns: typing.Optional[list[str]] = Nonenum_proc: typing.Optional[int] = Nonefilters: typing.Union[pyarrow._compute.Expression, list[tuple], list[list[tuple]], NoneType] = Nonefragment_scan_options: typing.Optional[pyarrow._dataset_parquet.ParquetFragmentScanOptions] = Noneon_bad_files: typing.Literal['error', 'warn', 'skip'] = 'error'**kwargs )
매개변수
- path_or_paths (
path-like또는path-like목록) — Parquet 파일의 경로입니다. - split (
NamedSplit, 선택 사항) — 데이터셋에 할당할 분할 이름. - features (
Features, 선택 사항) — Dataset의 features입니다. - cache_dir (
str, 선택 사항, 기본값"~/.cache/huggingface/datasets") — 데이터를 캐시할 디렉터리. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - columns (
List[str], 선택 사항) —None이 아닌 경우, 파일에서 이 컬럼만 읽습니다. 컬럼 이름은 중첩 필드의 접두사일 수 있습니다. 예를 들어 ‘a’를 지정하면 ‘a.b’, ‘a.c’, ‘a.d.e’가 선택됩니다. - num_proc (
int, 선택 사항, 기본값은None) — 데이터셋을 로컬로 다운로드하고 생성할 때 사용할 프로세스 수입니다. 데이터셋이 여러 파일로 구성되어 있는 경우 유용합니다. 기본적으로 멀티프로세싱은 비활성화되어 있습니다.2.8.0에 추가
- filters (
Union[pyarrow.dataset.Expression, list[tuple], list[list[tuple]]], 선택 사항) — 필터와 일치하는 행만 반환합니다. 가능하면 데이터 소스에서 발견되는 파티션 정보나 내부 메타데이터(예: Parquet 통계)를 활용하기 위해 조건을 아래로 전달(push down)합니다. 그렇지 않으면 RecordBatches를 반환하기 전에 로드된 RecordBatches를 필터링합니다. - fragment_scan_options (
pyarrow.dataset.ParquetFragmentScanOptions, 선택 사항) — Parquet 조각에 대한 스캔 전용 옵션입니다. 버퍼링 및 캐싱을 구성하는 데 특히 유용합니다.4.2.0에 추가
- on_bad_files (
Literal["error", "warn", "skip"], 선택 사항, 기본값은 “error”입니다) — 잘못된 파일(읽을 수 없는 파일)을 만나면 수행할 작업을 지정합니다. 허용되는 값은 다음과 같습니다:- ‘error’, 잘못된 파일이 발견되면 예외를 발생시킵니다.
- ‘warn’은 잘못된 파일이 발견되면 경고를 표시하고 해당 파일을 건너뜁니다.
- ‘skip’, 발견 시 경고나 예외를 발생시키지 않고 잘못된 파일을 건너뜁니다.
4.2.0에 추가
- **kwargs (추가 키워드 인자) —
ParquetConfig에 전달할 키워드 인자입니다.
Parquet 파일에서 Dataset을 생성합니다.
Parquet 파일을 읽고, 데이터를 Arrow 형식으로 디스크에 캐시한 후, 디스크의 메모리 매핑된 Arrow 데이터에서 Dataset을 반환합니다.
from_text
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsenum_proc: typing.Optional[int] = Nonekeep_linebreaks: bool = Falsesample_by: typing.Literal['line', 'paragraph', 'document'] = 'line'**kwargs )
매개변수
- path_or_paths (
path-like또는path-like목록) — 텍스트 파일의 경로입니다. - split (
NamedSplit, 선택 사항) — 데이터셋에 할당할 분할 이름. - features (
Features, 선택 사항) — Dataset의 features입니다. - cache_dir (
str, 선택 사항, 기본값"~/.cache/huggingface/datasets") — 데이터를 캐시할 디렉터리. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - num_proc (
int, 선택 사항, 기본값은None) — 데이터셋을 로컬로 다운로드하고 생성할 때 사용할 프로세스 수입니다. 데이터셋이 여러 파일로 구성되어 있는 경우 유용합니다. 기본적으로 멀티프로세싱은 비활성화되어 있습니다.2.8.0에 추가
- keep_linebreaks — (
bool, 기본값 False): 줄바꿈을 유지할지 여부. - sample_by (
Literal["line", "paragraph", "document"], 기본값 “line”) — 데이터를 줄, 단락 또는 문서 단위로 로드할지 여부입니다. 기본적으로 데이터셋의 한 행 = 한 줄입니다. - **kwargs (추가 키워드 인자) —
TextConfig에 전달할 키워드 인자입니다.
텍스트 파일에서 Dataset을 생성합니다.
텍스트 파일을 읽고 데이터를 Arrow 형식으로 디스크에 캐시한 후, 디스크의 메모리 매핑된 Arrow 데이터에서 Dataset을 반환합니다.
from_sql
< source >( sql: typing.Union[str, ForwardRef('sqlalchemy.sql.Selectable')]con: typing.Union[str, ForwardRef('sqlalchemy.engine.Connection'), ForwardRef('sqlalchemy.engine.Engine'), ForwardRef('sqlite3.Connection')]features: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
매개변수
- sql (
str또는sqlalchemy.sql.Selectable) — 실행할 SQL 쿼리 또는 테이블 이름. - con (
str또는sqlite3.Connection또는sqlalchemy.engine.Connection또는sqlalchemy.engine.Connection) — 데이터베이스 연결을 인스턴스화하는 데 사용되는 URI 문자열 또는 SQLite3/SQLAlchemy 연결 객체. - features (Features, 선택 사항) — Dataset의 features입니다.
- cache_dir (
str, 선택 사항, 기본값"~/.cache/huggingface/datasets") — 데이터를 캐시할 디렉터리. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - **kwargs (추가 키워드 인자) —
SqlConfig에 전달할 키워드 인자입니다.
SQL 쿼리 또는 데이터베이스 테이블에서 Dataset을 생성합니다.
SQL 데이터베이스를 쿼리하고, 데이터를 Arrow 형식으로 디스크에 캐시한 후, 디스크의 메모리 매핑된 Arrow 데이터에서 Dataset을 반환합니다.
예:
>>> # Fetch a database table
>>> ds = Dataset.from_sql("test_data", "postgres:///db_name")
>>> # Execute a SQL query on the table
>>> ds = Dataset.from_sql("SELECT sentence FROM test_data", "postgres:///db_name")
>>> # Use a Selectable object to specify the query
>>> from sqlalchemy import select, text
>>> stmt = select([text("sentence")]).select_from(text("test_data"))
>>> ds = Dataset.from_sql(stmt, "postgres:///db_name")
con이 URI 문자열로 지정된 경우에만 반환된 데이터셋을 캐시할 수 있습니다.
align_labels_with_mapping
< source >( label2id: dictlabel_column: str )
데이터셋의 라벨 ID와 라벨 이름 매핑을 입력 label2id 매핑과 일치하도록 정렬합니다.
모델의 예측된 라벨이 데이터셋과 정렬되어 있는지 확인하려는 경우에 유용합니다.
정렬은 소문자 라벨 이름을 사용하여 수행됩니다.
예:
>>> # dataset with mapping {'entailment': 0, 'neutral': 1, 'contradiction': 2}
>>> ds = load_dataset("nyu-mll/glue", "mnli", split="train")
>>> # mapping to align with
>>> label2id = {'CONTRADICTION': 0, 'NEUTRAL': 1, 'ENTAILMENT': 2}
>>> ds_aligned = ds.align_labels_with_mapping(label2id, "label")datasets.concatenate_datasets
< source >( dsets: listinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneaxis: int = 0 )
여러 데이터셋(소스)을 하나의 데이터셋으로 연결합니다.
axis=0을 사용하면 세로로 연결하며(기본값), axis=1을 사용하면 가로로 연결합니다.
반복 가능 데이터셋에 대한 참고:
- axis=0인 경우, 결과 데이터셋의
num_shards는 각 데이터셋의num_shards합계입니다. - axis=1인 경우, 데이터가 어긋나지 않도록 결과 데이터셋은 하나(1)의 샤드로 구성됩니다.
- if the datasets were split with datasets.distributed.split_dataset_by_node(), they must all be split the same way, and the resulting dataset keeps that split.
datasets.interleave_datasets
< source >( datasets: listprobabilities: typing.Optional[list[float]] = Noneseed: typing.Optional[int] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonestopping_strategy: typing.Literal['first_exhausted', 'all_exhausted', 'all_exhausted_without_replacement'] = 'first_exhausted' ) → Dataset or IterableDataset
매개변수
- datasets (
List[Dataset]또는List[IterableDataset]) — 교차(interleave)할 데이터셋 목록. - probabilities (
List[float], 선택 사항, 기본값None) — 지정된 경우, 이 확률에 따라 소스에서 한 번에 하나씩 예시를 샘플링하여 새로운 데이터셋이 구성됩니다. - seed (
int, 선택 사항, 기본값None) — 각 예시를 위한 소스를 선택하는 데 사용되는 무작위 시드입니다. - info (DatasetInfo, 선택 사항) —
설명, 인용 정보 등 Dataset에 대한 정보입니다.
2.4.0에 추가
- split (NamedSplit, 선택 사항) —
데이터셋 스플릿의 이름.
2.4.0에 추가
- stopping_strategy (
str, 기본값은first_exhausted) — 현재 세 가지 전략이 제안되어 있습니다.first_exhausted,all_exhausted그리고all_exhausted_without_replacement. 기본적으로first_exhausted는 언더샘플링 전략으로, 하나의 데이터셋에서 샘플이 모두 소진되는 즉시 데이터셋 구성이 중단됩니다. 전략이all_exhausted, 인 경우 오버샘플링 전략을 사용하여, 모든 데이터셋의 모든 샘플이 최소 한 번씩 추가되는 즉시 데이터셋 구성이 중단됩니다. 전략이all_exhausted_without_replacement인 경우 각 데이터셋의 각 샘플이 오직 한 번만 샘플링되도록 보장합니다. 전략이all_exhausted, 인 경우 인터리브 데이터셋의 크기가 매우 커질 수 있습니다:- 확률 없이 실행하면, 결과 데이터셋에는
max_length_datasets*nb_dataset개의 샘플이 포함됩니다. - with given probabilities가 주어지면, 일부 데이터셋의 방문 확률이 매우 낮은 경우 결과 데이터셋의 샘플 수가 더 많아질 수 있습니다.
- 확률 없이 실행하면, 결과 데이터셋에는
반환값
datasets 파라미터의 입력에 따라 반환 유형이 달라집니다. 입력이 Dataset 목록이면 Dataset, IterableDataset 목록이면 IterableDataset입니다.
여러 데이터셋(소스)을 하나의 데이터셋으로 번갈아 배치합니다. 새로운 데이터셋은 소스 간에 번갈아가며 예시를 가져오는 방식으로 구성됩니다.
이 함수는 Dataset 객체의 목록 또는 IterableDataset 객체의 목록에 사용할 수 있습니다.
probabilities가None(기본값)인 경우, 각 소스에서 예시를 가져오도록 순환하며 새로운 데이터셋이 구성됩니다.probabilities가None이 아닌 경우, 제공된 확률에 따라 한 번에 무작위 소스에서 예시를 가져와서 새로운 데이터셋이 구성됩니다.
oversampling이 True인 경우를 제외하고, 생성된 데이터셋은 소스 데이터셋 중 하나가 예제를 모두 소진하면 종료됩니다. oversampling이 True인 경우, 생성된 데이터셋은 모든 데이터셋이 적어도 한 번씩 예제를 모두 소진하면 종료됩니다.
반복 가능 데이터셋에 대한 참고:
- 결과 데이터셋의
num_shards는 각 데이터셋의num_shards중 최소값으로 설정되어 좋은 병렬성을 보장합니다. 일부 데이터셋의 샤드 수가 매우 적은 경우, IterableDataset.reshard()를 사용할 수 있습니다. - 분산 환경 또는 PyTorch DataLoader 워커에서 중단 전략은 프로세스별로 적용됩니다. 따라서 샤드된 반복 가능 데이터셋에 “first_exhausted” 전략을 적용하면 전체 샘플 수가 더 적게 생성될 수 있습니다(워커당 서브데이터셋당 최대 1개의 샘플 누락).
예:
일반 데이터셋(맵 스타일)의 경우:
>>> from datasets import Dataset, interleave_datasets
>>> d1 = Dataset.from_dict({"a": [0, 1, 2]})
>>> d2 = Dataset.from_dict({"a": [10, 11, 12]})
>>> d3 = Dataset.from_dict({"a": [20, 21, 22]})
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42, stopping_strategy="all_exhausted")
>>> dataset["a"]
[10, 0, 11, 1, 2, 20, 12, 10, 0, 1, 2, 21, 0, 11, 1, 2, 0, 1, 12, 2, 10, 0, 22]
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42)
>>> dataset["a"]
[10, 0, 11, 1, 2]
>>> dataset = interleave_datasets([d1, d2, d3])
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22]
>>> dataset = interleave_datasets([d1, d2, d3], stopping_strategy="all_exhausted")
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22]
>>> d1 = Dataset.from_dict({"a": [0, 1, 2]})
>>> d2 = Dataset.from_dict({"a": [10, 11, 12, 13]})
>>> d3 = Dataset.from_dict({"a": [20, 21, 22, 23, 24]})
>>> dataset = interleave_datasets([d1, d2, d3])
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22]
>>> dataset = interleave_datasets([d1, d2, d3], stopping_strategy="all_exhausted")
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22, 0, 13, 23, 1, 10, 24]
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42)
>>> dataset["a"]
[10, 0, 11, 1, 2]
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42, stopping_strategy="all_exhausted")
>>> dataset["a"]
[10, 0, 11, 1, 2, 20, 12, 13, ..., 0, 1, 2, 0, 24]
For datasets in streaming mode (iterable):
>>> from datasets import interleave_datasets
>>> d1 = load_dataset('allenai/c4', 'es', split='train', streaming=True)
>>> d2 = load_dataset('allenai/c4', 'fr', split='train', streaming=True)
>>> dataset = interleave_datasets([d1, d2])
>>> iterator = iter(dataset)
>>> next(iterator)
{'text': 'Comprar Zapatillas para niña en chancla con goma por...'}
>>> next(iterator)
{'text': 'Le sacre de philippe ier, 23 mai 1059 - Compte Rendu...'datasets.distributed.split_dataset_by_node
< source >( dataset: ~DatasetTyperank: intworld_size: intstrategy: typing.Literal['auto', 'shards', 'examples'] = 'auto' ) → Dataset or IterableDataset
매개변수
- dataset (Dataset 또는 IterableDataset) — 노드별로 분할할 데이터셋입니다.
- rank (
int) — 현재 노드의 랭크. - world_size (
int) — 노드의 총 개수. - strategy (
str, 기본값"auto") — 반복 가능(iterable) 데이터셋을 분할하는 방법입니다."auto","shards","examples"중 하나여야 합니다. Map 스타일 데이터셋은"auto"만 지원합니다.
반환값
rank 랭크의 노드에서 사용할 데이터셋.
world_size 크기의 노드 풀에서 rank 랭크의 노드를 위해 데이터셋을 분할합니다.
map 스타일 데이터셋의 경우:
각 노드는 데이터의 청크를 할당받습니다. 예를 들어, rank 0은 데이터셋의 첫 번째 청크를 받습니다. 데이터 로딩 처리량을 최대화하기 위해, 가능하면 디스크에 연속된 데이터로 청크를 구성합니다.
반복 가능한 데이터셋의 경우:
strategy 분할은 "auto", "shards", 또는 "examples"일 수 있습니다:
"shards": 샤드는 노드에 고르게 할당됩니다"examples": 각 노드는world_size개 중 1개의 예제를 유지하고, 나머지 예제는 건너뜁니다"auto"(기본값): 데이터셋의 샤드 수가world_size의 약수인 경우(즉,dataset.num_shards % world_size == 0인 경우) 가장 최적화된"shards"를 사용합니다. 그렇지 않으면"examples"를 사용합니다.
분산 환경에서 반복 가능(iterable) 데이터셋을 섞을 경우, 모든 노드에서 동일한 섞인 샤드 목록을 사용하여 각 노드가 건너뛰어야 할 샤드를 파악할 수 있도록 IterableDataset.shuffle()에서 고정된
seed를 설정해야 합니다.
데이터셋에 변환을 적용할 때 데이터는 캐시 파일에 저장됩니다. 캐싱 메커니즘은 이미 계산된 기존 캐시 파일을 다시 로드할 수 있게 합니다.
각 변환 후 업데이트되는 데이터셋 지문으로 캐시 파일이 이름이 지정되므로 데이터셋을 다시 로드할 수 있습니다.
비활성화된 경우, 라이브러리는 데이터셋에 변환을 적용할 때 캐시된 데이터셋 파일을 다시 로드하지 않습니다. 더 정확히 말하면, 캐싱이 비활성화된 경우:
- cache 파일은 항상 다시 생성됩니다
- cache 파일은 세션이 닫힐 때 삭제되는 임시 디렉토리에 기록됩니다
- cache 파일은 데이터셋 지문 대신 무작위 해시를 사용하여 이름이 지정됩니다
- 변환된 데이터셋을 저장하려면 save_to_disk()를 사용하세요. 세션이 닫히면 삭제됩니다.
- caching은 load_dataset()에 영향을 주지 않습니다. 처음부터 데이터셋을 다시 생성하려면 load_dataset()의
download_mode매개변수를 사용해야 합니다.
데이터셋에 변환을 적용할 때 데이터는 캐시 파일에 저장됩니다. 캐싱 메커니즘은 이미 계산된 기존 캐시 파일을 다시 로드할 수 있게 합니다.
각 변환 후 업데이트되는 데이터셋 지문으로 캐시 파일이 이름이 지정되므로 데이터셋을 다시 로드할 수 있습니다.
비활성화된 경우, 라이브러리는 데이터셋에 변환을 적용할 때 캐시된 데이터셋 파일을 다시 로드하지 않습니다. 더 정확히 말하면, 캐싱이 비활성화된 경우:
- cache 파일은 항상 다시 생성됩니다
- cache 파일은 세션이 닫힐 때 삭제되는 임시 디렉토리에 기록됩니다
- cache 파일은 데이터셋 지문 대신 무작위 해시를 사용하여 이름이 지정됩니다
- 변환된 데이터셋을 저장하려면 save_to_disk()를 사용하세요. 세션이 닫히면 삭제됩니다.
- caching은 load_dataset()에 영향을 주지 않습니다. 처음부터 데이터셋을 다시 생성하려면 load_dataset()의
download_mode매개변수를 사용해야 합니다.
데이터셋에 변환을 적용할 때 데이터는 캐시 파일에 저장됩니다. 캐싱 메커니즘은 이미 계산된 기존 캐시 파일을 다시 로드할 수 있게 합니다.
각 변환 후 업데이트되는 데이터셋 지문으로 캐시 파일이 이름이 지정되므로 데이터셋을 다시 로드할 수 있습니다.
비활성화된 경우, 라이브러리는 데이터셋에 변환을 적용할 때 캐시된 데이터셋 파일을 다시 로드하지 않습니다. 더 정확히 말하면, 캐싱이 비활성화된 경우:
- cache 파일은 항상 다시 생성됩니다
- cache 파일은 세션이 닫힐 때 삭제되는 임시 디렉토리에 기록됩니다
- cache 파일은 데이터셋 지문 대신 무작위 해시를 사용하여 이름이 지정됩니다
- 변환된 데이터셋을 저장하려면 save_to_disk()를 사용하세요. 세션이 닫히면 삭제됩니다.
- caching은 load_dataset()에 영향을 주지 않습니다. 처음부터 데이터셋을 다시 생성하려면 load_dataset()의
download_mode매개변수를 사용해야 합니다.
class datasets.Column
< source >( source: typing.Union[ForwardRef('Dataset'), ForwardRef('Column')]column_name: str )
Dataset의 특정 열에 대한 반복 가능한 객체(iterable)입니다.
예:
DatasetDict
키로 분할 이름(예: ‘train’, ‘test’)을, 값으로 Dataset 객체를 가지는 딕셔너리입니다.
map 또는 filter와 같은 데이터셋 변환 메서드를 제공하여 모든 분할을 한 번에 처리할 수 있습니다.
데이터셋 변환 메서드(map, filter 등)를 가진 사전(str: datasets.Dataset의 dict)
각 split을 뒷받침하는 Apache Arrow 테이블.
각 split을 뒷받침하는 Apache Arrow 테이블을 포함하는 캐시 파일.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.cache_files
{'test': [{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-test.arrow'}],
'train': [{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-train.arrow'}],
'validation': [{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-validation.arrow'}]}데이터셋의 각 분할에 대한 열의 수.
데이터셋의 각 분할에 포함된 행의 수.
데이터셋의 각 split에 포함된 열의 이름.
데이터셋의 각 분할의 모양(행 수, 열 수).
unique
< source >( column: str ) → Dict[str, list]
각 split에 대해 컬럼의 고유 요소 목록을 반환합니다.
이것은 저수준 백엔드에서 구현되어 있어 매우 빠릅니다.
현재 사용 중인 캐시 파일이 있는 경우를 제외하고, 데이터셋 캐시 디렉터리의 모든 캐시 파일을 정리합니다. 이 명령을 실행할 때 다른 프로세스가 다른 캐시 파일을 사용 중이지 않은지 주의하세요.
map
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falsewith_split: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000features: typing.Optional[datasets.features.features.Features] = Nonedisable_nullable: bool = Falsefn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonedesc: typing.Optional[str] = Nonetry_original_type: typing.Optional[bool] = Trueon_mixed_types: typing.Optional[typing.Literal['use_json']] = None )
매개변수
- function (
callable) — 다음 중 하나의 시그니처를 가진batched=False이고with_indices=False인 경우function(example: Dict[str, Any]) -> Dict[str, Any]batched=False이고with_indices=True인 경우function(example: Dict[str, Any], indices: int) -> Dict[str, Any]batched=True이고with_indices=False인 경우function(batch: Dict[str, list]) -> Dict[str, list]function(batch: Dict[str, list], indices: list[int]) -> Dict[str, list](단,batched=True이고with_indices=True인 경우)
고급 사용의 경우, 이 함수는
pyarrow.Table를 반환할 수도 있습니다. 함수가 비동기(asynchronous)인 경우,map는 사용자의 함수를 병렬로 실행합니다. 또한 함수가 아무것도 반환하지 않는 경우(None),map는 사용자의 함수를 실행하고 데이터셋을 변경하지 않은 상태로 반환합니다. 함수가 제공되지 않으면, 항등 함수(identity function)인lambda x: x를 기본값으로 사용합니다. - with_indices (
bool, 기본값False) —function에 예시 인덱스를 제공합니다. 이 경우function의 시그니처는def function(example, idx): ...여야 합니다. - with_rank (
bool, 기본값False) —function에 프로세스 랭크를 전달합니다. 이 경우function의 시그니처는def function(example[, idx], rank): ...여야 합니다. - with_split (
bool, 기본값False) —function에 프로세스 분할을 제공합니다. 이 경우function의 시그니처는def function(example[, idx], split): ...여야 합니다. - input_columns (
[Union[str, list[str]]], 선택 사항, 기본값None) —function에 위치 인수로 전달할 열입니다.None인 경우, 모든 포맷된 열에 대한 dict 매핑이 하나의 인수로 전달됩니다. - batched (
bool, 기본값False) —function에 예시 배치(batch)를 제공합니다. - batch_size (
int, 선택 사항, 기본값1000) —batched=True인 경우function에 배치별로 제공되는 예시 수입니다.batch_size <= 0또는batch_size == None이면 전체 데이터셋을 단일 배치로function에 제공합니다. - drop_last_batch (
bool, 기본값False) — batch_size보다 작은 마지막 배치에 대해 함수로 처리하는 대신 버릴지 여부입니다. - remove_columns (
[Union[str, list[str]]], 선택 사항, 기본값None) — 매핑을 수행하는 동안 선택된 컬럼을 제거합니다. 컬럼은function의 출력으로 예시를 업데이트하기 전에 제거되므로,function이remove_columns에 포함된 이름의 컬럼을 추가하는 경우 해당 컬럼은 유지됩니다. - keep_in_memory (
bool, 기본값False) — 데이터셋을 캐시 파일에 쓰는 대신 메모리에 유지합니다. - load_from_cache_file (
Optional[bool], 캐싱이 활성화된 경우 기본값은True) —function의 현재 계산 결과를 저장하는 캐시 파일을 식별할 수 있는 경우, 다시 계산하는 대신 해당 파일을 사용합니다. - cache_file_names (
[Dict[str, str]], 선택, 기본값None) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 계산 결과를 저장하는 데 사용됩니다. 데이터셋 사전의 각 데이터셋마다cache_file_name하나를 제공해야 합니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성기에서 쓰기 작업당 행 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회가 적게 발생하고, 값이 낮을수록map실행 중 임시 메모리 사용량이 줄어듭니다. - features (
[datasets.Features], 선택 사항, 기본값None) — 자동 생성되는 캐시 파일 대신 특정 Features를 사용하여 캐시 파일을 저장합니다. - disable_nullable (
bool, 기본값False) — 테이블에서 null 값을 허용하지 않습니다. - fn_kwargs (
Dict, 선택 사항, 기본값None) —function에 전달할 키워드 인자 - num_proc (
int, 선택 사항, 기본값은None) — 멀티프로세싱에 사용할 프로세스 수입니다. None 또는 0이면 멀티프로세싱을 사용하지 않고 메인 프로세스에서 작업을 실행합니다. 1보다 크면 하나 이상의 워커 프로세스를 사용하여 데이터를 병렬로 처리합니다. 참고: 멀티프로세싱이 올바르게 작동하려면 map()에 전달되는 함수는 picklable이어야 합니다(즉, 다른 함수나 클래스 내부가 아닌 모듈의 최상위 수준에서 정의된 함수를 사용하는 것이 좋습니다).None또는0인 경우, 멀티프로세싱을 사용하지 않고 작업이 메인 프로세스에서 실행됩니다.1보다 크면, 데이터를 병렬로 처리하기 위해 하나 이상의 워커 프로세스가 사용됩니다. 참고:map()에 전달되는 함수는 멀티프로세싱이 올바르게 작동하려면 picklable이어야 합니다 (즉, 다른 함수나 클래스 내부가 아닌 모듈의 최상위 수준에서 정의된 함수를 사용하는 것이 좋습니다).
- desc (
str, 선택 사항, 기본값None) — 예제를 매핑하는 동안 진행률 바와 함께 표시할 의미 있는 설명입니다. - try_original_type (
Optional[bool], 기본값True) — 원래 열의 타입을 유지하려고 시도합니다(예: int32 -> int32). 항상 새로운 타입을 추론하려면 False로 설정하세요. - on_mixed_types (
Literal["use_json"], 선택 사항, 기본값은None) — “use_json”인 경우, 미리 정의된 스키마 없이 데이터를 포함하는 비정형 필드인 혼합 타입 필드에 대해 Json() 타입을 사용합니다. 이 경우 혼합 타입 필드는 Json()으로 설정됩니다.… 문자열/정수/부동소수점 숫자의 혼합 목록이나, 임의의 값 유형을 가진 사전과 같은 목록을 로드할 수 있습니다.
4.7.0에 추가됨
map은 테이블의 모든 예시(개별 또는 배치)에 함수를 적용하여 테이블을 업데이트합니다. 함수가 이미 존재하는 컬럼을 반환하면 해당 컬럼을 덮어씁니다. 변환은 dataset dictionary의 모든 dataset에 적용됩니다.
batched 매개변수를 사용하여 함수가 배치 처리되어야 하는지 여부를 지정할 수 있습니다:
False인 경우, 이 함수는 1개의 예시를 입력으로 받아 1개의 예시를 반환해야 합니다. 예시는 사전(dictionary)이며, 예를 들어{"text": "Hello there !"}과 같습니다.True이고batch_size가 1인 경우, 이 함수는 1개의 예시로 구성된 배치로 입력을 받아 1개 이상의 예시로 구성된 배치를 반환할 수 있습니다. 배치는 사전(dictionary)이며, 예를 들어 1개의 예시로 구성된 배치는{"text": ["Hello there !"]}입니다.True이고batch_size가n > 1인 경우, 이 함수는n개의 예시로 구성된 배치(batch)를 입력으로 받아n개의 예시로 구성된 배치 또는 임의의 개수의 예시로 구성된 배치를 반환할 수 있습니다. 마지막 배치에는n개보다 적은 예시가 포함될 수 있습니다. 배치는 사전(dictionary)이며, 예를 들어n개의 예시로 구성된 배치는{"text": ["Hello there !"] * n}입니다.
함수가 비동기(asynchronous)인 경우, map은 최대 1,000개의 동시 호출을 허용하면서 함수를 병렬로 실행합니다.
동시에 실행될 수 있는 작업의 최대 수를 설정하려면 함수에서 asyncio.Semaphore를 사용하는 것이 권장됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> def add_prefix(example):
... example["text"] = "Review: " + example["text"]
... return example
>>> ds = ds.map(add_prefix)
>>> ds["train"][0:3]["text"]
['Review: the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
'Review: the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .',
'Review: effective but too-tepid biopic']
# process a batch of examples
>>> ds = ds.map(lambda example: tokenizer(example["text"]), batched=True)
# set number of processors
>>> ds = ds.map(add_prefix, num_proc=4)필터
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonedesc: typing.Optional[str] = None )
매개변수
- function (
Callable) — 다음 중 하나의 시그니처를 가진 Callable입니다:function(example: Dict[str, Any]) -> boolifbatched=Falseandwith_indices=Falseandwith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> boolbatched=False이고with_indices=True및/또는with_rank=True인 경우 (각각 추가 인자 하나씩)batched=True이고with_indices=False이고with_rank=False인 경우function(batch: Dict[str, list]) -> list[bool]batched=True이고with_indices=True및/또는with_rank=True인 경우 (각각 추가 인자 하나씩)function(batch: Dict[str, list], *extra_args) -> list[bool]
함수가 제공되지 않으면 항상
True를 반환하는 함수lambda x: True가 기본값으로 사용됩니다. - with_indices (
bool, 기본값False) —function에 예시 인덱스를 제공합니다. 이 경우function의 시그니처는def function(example, idx[, rank]): ...여야 합니다. - with_rank (
bool, 기본값False) —function에 프로세스 랭크를 전달합니다. 이 경우function의 시그니처는def function(example[, idx], rank): ...여야 합니다. - input_columns (
[Union[str, list[str]]], 선택 사항, 기본값None) —function에 위치 인수로 전달할 열입니다.None인 경우, 모든 포맷된 열에 대한 dict 매핑이 하나의 인수로 전달됩니다. - batched (
bool, 기본값False) —function에 예시 배치(batch)를 제공합니다. - batch_size (
int, 선택 사항, 기본값1000) —batched=True인 경우function에 배치별로 제공되는 예시 수입니다.batch_size <= 0또는batch_size == None이면 전체 데이터셋을 단일 배치로function에 제공합니다. - keep_in_memory (
bool, 기본값False) — 데이터셋을 캐시 파일에 쓰는 대신 메모리에 유지합니다. - load_from_cache_file (
Optional[bool], 캐싱이 활성화된 경우 기본값은True) —function의 현재 계산 결과를 저장하는 캐시 파일을 식별할 수 있는 경우, 다시 계산하는 대신 해당 파일을 사용합니다. - cache_file_names (
[Dict[str, str]], 선택, 기본값None) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 계산 결과를 저장하는 데 사용됩니다. 데이터셋 사전의 각 데이터셋마다cache_file_name하나를 제공해야 합니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성기에서 쓰기 작업당 행 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회 횟수가 줄고, 값이 낮을수록map실행 중 임시 메모리 사용량이 줄어듭니다. - fn_kwargs (
Dict, 선택 사항, 기본값None) —function에 전달할 키워드 인자 - num_proc (
int, 선택 사항, 기본값은None) — 멀티프로세싱에 사용할 프로세스 수입니다. None 또는 0이면 멀티프로세싱을 사용하지 않고 메인 프로세스에서 작업을 실행합니다. 1보다 크면 하나 이상의 워커 프로세스를 사용하여 데이터를 병렬로 처리합니다. 참고: 멀티프로세싱이 올바르게 작동하려면 map()에 전달되는 함수는 picklable이어야 합니다(즉, 다른 함수나 클래스 내부가 아닌 모듈의 최상위 수준에서 정의된 함수를 사용하는 것이 좋습니다).None또는0인 경우, 멀티프로세싱을 사용하지 않고 작업이 메인 프로세스에서 실행됩니다.1보다 크면, 데이터를 병렬로 처리하기 위해 하나 이상의 워커 프로세스가 사용됩니다. 참고:map()에 전달되는 함수는 멀티프로세싱이 올바르게 작동하려면 picklable이어야 합니다 (즉, 다른 함수나 클래스 내부가 아닌 모듈의 최상위 수준에서 정의된 함수를 사용하는 것이 좋습니다).
- desc (
str, 선택 사항, 기본값None) — 예제를 필터링하는 동안 진행률 바와 함께 표시할 의미 있는 설명입니다.
filter 함수를 테이블의 모든 요소에 배치별로 적용하고, 필터 함수에 따라 예제가 포함되도록 테이블을 업데이트합니다. 이 변환은 dataset dictionary의 모든 dataset에 적용됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.filter(lambda x: x["label"] == 1)
DatasetDict({
train: Dataset({
features: ['text', 'label'],
num_rows: 4265
})
validation: Dataset({
features: ['text', 'label'],
num_rows: 533
})
test: Dataset({
features: ['text', 'label'],
num_rows: 533
})
})sort
< source >( column_names: typing.Union[str, collections.abc.Sequence[str]]reverse: typing.Union[bool, collections.abc.Sequence[bool]] = Falsenull_placement: str = 'at_end'keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000 )
매개변수
- column_names (
Union[str, Sequence[str]]) — 정렬할 열 이름입니다. - reverse (
Union[bool, Sequence[bool]], 기본값False) —True인 경우, 오름차순 대신 내림차순으로 정렬합니다. 단일 bool 값을 제공하는 경우, 해당 값은 모든 열 이름의 정렬에 적용됩니다. 그렇지 않으면 column_names와 동일한 길이와 순서를 가진 bool 목록을 제공해야 합니다. - null_placement (
str, 기본값at_end) —at_start또는first인 경우None값을 앞에,at_end또는last인 경우 뒤에 배치합니다 - keep_in_memory (
bool, 기본값False) — 정렬된 인덱스를 캐시 파일에 쓰는 대신 메모리에 유지합니다. - load_from_cache_file (
Optional[bool], 캐싱이 활성화된 경우 기본값은True) — 정렬된 인덱스를 저장하는 캐시 파일을 식별할 수 있는 경우, 다시 계산하는 대신 해당 파일을 사용합니다. - indices_cache_file_names (
[Dict[str, str]], 선택 사항, 기본값None) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 인덱스 매핑을 저장하는 데 사용됩니다. 데이터셋 사전의 각 데이터셋마다cache_file_name하나를 제공해야 합니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성자(write operation)의 한 번에 기록할 행 수입니다. 값이 높을수록 캐시 파일 크기가 작아지고, 값이 낮을수록 임시 메모리 사용량이 줄어듭니다.
하나 또는 여러 열에 따라 정렬된 새로운 데이터셋을 생성합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset('cornell-movie-review-data/rotten_tomatoes')
>>> ds['train']['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> sorted_ds = ds.sort('label')
>>> sorted_ds['train']['label'][:10]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> another_sorted_ds = ds.sort(['label', 'text'], reverse=[True, False])
>>> another_sorted_ds['train']['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]shuffle
< source >( seeds: typing.Union[int, dict[str, typing.Optional[int]], NoneType] = Noneseed: typing.Optional[int] = Nonegenerators: typing.Optional[dict[str, numpy.random._generator.Generator]] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000 )
매개변수
- seeds (
Dict[str, int]또는int, 선택 사항) —generator=None인 경우 기본 BitGenerator를 초기화할 시드입니다.None인 경우, OS에서 새로운 예측 불가능한 엔트로피를 가져옵니다.int또는array_like[ints]가 전달되면, SeedSequence에 전달되어 초기 BitGenerator 상태를 유도합니다. 데이터셋 사전에 데이터셋별로seed를 하나씩 제공할 수 있습니다. - seed (
int, 선택 사항) —generator=None인 경우 기본 BitGenerator를 초기화하는 시드입니다. seeds의 별칭입니다(둘 다 제공되면ValueError가 발생합니다). - generators (
Dict[str, *optional*, np.random.Generator]) — 데이터셋 행의 순열을 계산하는 데 사용할 Numpy random Generator입니다.generator=None(기본값)인 경우,np.random.default_rng(NumPy의 기본 BitGenerator(PCG64))를 사용합니다. 데이터셋 사전에 포함된 각 데이터셋마다generator하나를 제공해야 합니다. - keep_in_memory (
bool, 기본값False) — 데이터셋을 캐시 파일에 쓰는 대신 메모리에 유지합니다. - load_from_cache_file (
Optional[bool], 캐싱이 활성화된 경우 기본값은True) —function의 현재 계산 결과를 저장하는 캐시 파일을 식별할 수 있는 경우, 다시 계산하는 대신 해당 파일을 사용합니다. - indices_cache_file_names (
Dict[str, str], 선택 사항) — 캐시 파일의 경로 이름을 지정합니다. 자동으로 생성되는 캐시 파일 이름 대신 인덱스 매핑을 저장하는 데 사용됩니다. 데이터셋 사전의 각 데이터셋마다cache_file_name하나를 제공해야 합니다. - writer_batch_size (
int, 기본값1000) — 캐시 파일 작성기에서 쓰기 작업당 행 수입니다. 이 값은 처리 중 메모리 사용량과 처리 속도 사이의 좋은 균형점을 제공합니다. 값이 높을수록 처리 시 조회 횟수가 줄고, 값이 낮을수록map실행 중 임시 메모리 사용량이 줄어듭니다.
행이 섞인 새로운 Dataset을 생성합니다.
변환은 dataset dictionary의 모든 dataset에 적용됩니다.
현재 shuffling은 numpy 랜덤 생성기를 사용합니다. NumPy BitGenerator를 제공하거나, NumPy의 기본 랜덤 생성기(PCG64)를 초기화할 시드를 지정할 수 있습니다.
set_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
매개변수
- type (
str, 선택 사항) —[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']에서 선택한 출력 유형입니다.None은__getitem__가 python 객체를 반환함을 의미합니다(기본값). - columns (
list[str], 선택 사항) — 출력에서 포맷할 열.None은__getitem__가 모든 열을 반환함을 의미합니다(기본값). - output_all_columns (
bool, 기본값 False) — 출력에서 포맷되지 않은 컬럼도 (python 객체로) 유지합니다. - **format_kwargs (추가 키워드 인자) —
np.array,torch.tensor또는tensorflow.ragged.constant와 같은 변환 함수에 전달되는 키워드 인자입니다.
__getitem__ 반환 형식(타입 및 열)을 설정합니다.
이 형식은 데이터셋 사전의 모든 데이터셋에 대해 설정됩니다.
set_format 호출 후 map을 호출할 수 있습니다. map는 새로운 컬럼을 추가할 수 있으므로, 포맷된 컬럼 목록이 업데이트됩니다. 이 경우, 데이터셋에 map을 적용하여 새로운 컬럼을 추가하면 이 컬럼도 포맷됩니다:
new formatted columns = (all columns - previously unformatted columns)
예:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x["text"], truncation=True, padding=True), batched=True)
>>> ds.set_format(type="numpy", columns=['input_ids', 'token_type_ids', 'attention_mask', 'label'])
>>> ds["train"].format
{'columns': ['input_ids', 'token_type_ids', 'attention_mask', 'label'],
'format_kwargs': {},
'output_all_columns': False,
'type': 'numpy'}__getitem__의 반환 형식을 Python 객체 및 모든 열로 재설정합니다.
변환은 dataset dictionary의 모든 dataset에 적용됩니다.
self.set_format()와 동일합니다
예:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x["text"], truncation=True, padding=True), batched=True)
>>> ds.set_format(type="numpy", columns=['input_ids', 'token_type_ids', 'attention_mask', 'label'])
>>> ds["train"].format
{'columns': ['input_ids', 'token_type_ids', 'attention_mask', 'label'],
'format_kwargs': {},
'output_all_columns': False,
'type': 'numpy'}
>>> ds.reset_format()
>>> ds["train"].format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': None}formatted_as
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
매개변수
- type (
str, 선택 사항) —[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']에서 선택한 출력 유형입니다.None은__getitem__가 python 객체를 반환함을 의미합니다(기본값). - columns (
list[str], 선택 사항) — 출력에서 포맷할 열.None은__getitem__가 모든 열을 반환함을 의미합니다(기본값). - output_all_columns (
bool, 기본값 False) — 출력에서 포맷되지 않은 컬럼도 유지합니다 (python 객체로). - **format_kwargs (추가 키워드 인자) —
np.array,torch.tensor또는tensorflow.ragged.constant와 같은 변환 함수에 전달되는 키워드 인자입니다.
with 문장에서 사용됩니다. __getitem__ 반환 형식(타입 및 열)을 설정합니다.
변환은 dataset dictionary의 모든 dataset에 적용됩니다.
with_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
매개변수
- type (
str, 선택 사항) —[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars']에서 선택한 출력 유형입니다.None은__getitem__가 python 객체를 반환함을 의미합니다(기본값). - columns (
list[str], 선택 사항) — 출력에서 포맷할 열.None은__getitem__가 모든 열을 반환함을 의미합니다(기본값). - output_all_columns (
bool, 기본값False) — 출력에서 포맷되지 않은 컬럼도 (python 객체로) 유지합니다. - **format_kwargs (추가 키워드 인자) —
np.array,torch.tensor또는tensorflow.ragged.constant와 같은 변환 함수에 전달되는 키워드 인자입니다.
__getitem__ 반환 형식(타입 및 열)을 설정합니다. 데이터 포맷팅은 온더플라이로 적용됩니다.
type 형식(예: “numpy”)은 __getitem__를 사용할 때 배치 포맷팅에 사용됩니다.
해당 형식은 데이터셋 사전의 모든 데이터셋에 대해 설정됩니다.
with_transform()를 사용하여 포맷팅에 커스텀 트랜스포메이션을 사용하는 것도 가능합니다.
set_format()과 달리, with_format은 새로운 Dataset 객체를 포함하는 새로운 DatasetDict 객체를 반환합니다.
예:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds["train"].format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': None}
>>> ds = ds.with_format("torch")
>>> ds["train"].format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
'format_kwargs': {},
'output_all_columns': False,
'type': 'torch'}
>>> ds["train"][0]
{'text': 'compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
'label': tensor(1),
'input_ids': tensor([ 101, 18027, 16310, 16001, 1103, 9321, 178, 11604, 7235, 6617,
1742, 2165, 2820, 1206, 6588, 22572, 12937, 1811, 2153, 1105,
1147, 12890, 19587, 6463, 1105, 15026, 1482, 119, 102, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])}with_transform
< source >( transform: typing.Optional[typing.Callable]columns: typing.Optional[list] = Noneoutput_all_columns: bool = False )
매개변수
- transform (
Callable, 선택 사항) — 사용자가 정의한 포맷 변환으로, set_format()으로 정의된 포맷을 대체합니다. 포맷 함수는 배치(딕셔너리 형태)를 입력으로 받아 배치를 반환하는 콜러블입니다. 이 함수는__getitem__에서 객체를 반환하기 직전에 적용됩니다. - columns (
list[str], 선택 사항) — 출력에서 포맷할 열입니다. 지정한 경우, 변환의 입력 배치에는 해당 열만 포함됩니다. - output_all_columns (
bool, 기본값 False) — 출력에 포맷되지 않은 컬럼도 포함합니다 (python 객체로).True로 설정하면, 변환 결과와 함께 다른 포맷되지 않은 컬럼도 유지됩니다.
이 변환을 사용하여 __getitem__의 반환 형식을 설정합니다. __getitem__이 호출될 때 배치에 대해 이 변환이 즉시 적용됩니다.
변환은 데이터셋 사전의 모든 데이터셋에 대해 설정됩니다.
set_format()와 마찬가지로, reset_format()을 사용하여 초기화할 수 있습니다.
set_transform()과 달리, with_transform은 새로운 Dataset 객체를 포함하는 새로운 DatasetDict 객체를 반환합니다.
예:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> def encode(example):
... return tokenizer(example['text'], truncation=True, padding=True, return_tensors="pt")
>>> ds = ds.with_transform(encode)
>>> ds["train"][0]
{'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1]),
'input_ids': tensor([ 101, 1103, 2067, 1110, 17348, 1106, 1129, 1103, 6880, 1432,
112, 188, 1207, 107, 14255, 1389, 107, 1105, 1115, 1119,
112, 188, 1280, 1106, 1294, 170, 24194, 1256, 3407, 1190,
170, 11791, 5253, 188, 1732, 7200, 10947, 12606, 2895, 117,
179, 7766, 118, 172, 15554, 1181, 3498, 6961, 3263, 1137,
188, 1566, 7912, 14516, 6997, 119, 102]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0])}각 split의 Apache Arrow Table을 flatten합니다(중첩된 feature는 flatten됩니다). struct 타입인 각 열은 struct 필드별로 하나의 열로 flatten됩니다. 다른 열은 변경되지 않습니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("rajpurkar/squad")
>>> ds["train"].features
{'id': Value('string'),
'title': Value('string'),
'context': Value('string'),
'question': Value('string'),
'answers.text': List(Value('string')),
'answers.answer_start': List(Value('int32'))}
>>> ds.flatten()
DatasetDict({
train: Dataset({
features: ['id', 'title', 'context', 'question', 'answers.text', 'answers.answer_start'],
num_rows: 87599
})
validation: Dataset({
features: ['id', 'title', 'context', 'question', 'answers.text', 'answers.answer_start'],
num_rows: 10570
})
})캐스트
< source >( features: Features )
데이터셋을 새로운 기능 집합으로 캐스팅합니다. 변환은 데이터셋 사전의 모든 데이터셋에 적용됩니다.
예:
>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds["train"].features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}cast_column
< source >( column: strfeature )
디코딩을 위해 컬럼을 feature로 캐스팅합니다.
예:
>>> from datasets import load_dataset, ClassLabel
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> ds = ds.cast_column('label', ClassLabel(names=['bad', 'good']))
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('string')}remove_columns
< source >( column_names: typing.Union[str, list[str]] ) → DatasetDict
매개변수
반환값
제거할 열이 없는 dataset 객체의 복사본입니다.
dataset의 각 split에서 하나 이상의 컬럼 및 해당 컬럼과 연관된 features를 제거합니다.
변환은 데이터셋 사전의 모든 분할에 적용됩니다.
remove_columns을 사용하여 map()으로 컬럼을 제거할 수도 있지만, 현재 메서드는 나머지 컬럼의 데이터를 복사하지 않으므로 더 빠릅니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds = ds.remove_columns("label")
DatasetDict({
train: Dataset({
features: ['text'],
num_rows: 8530
})
validation: Dataset({
features: ['text'],
num_rows: 1066
})
test: Dataset({
features: ['text'],
num_rows: 1066
})
})rename_column
< source >( original_column_name: strnew_column_name: str )
데이터셋의 컬럼 이름을 변경하고, 원래 컬럼에 연결된 기능을 새 컬럼 이름 아래로 이동합니다. 변환은 데이터셋 사전의 모든 데이터셋에 적용됩니다.
remove_columns를 사용하여 map()으로 컬럼 이름을 변경할 수도 있지만, 현재 방법은 다음과 같습니다:
- 원래 특징을 새 열 이름 아래로 이동하는 작업을 처리합니다.
- 새 데이터셋으로 데이터를 복사하지 않으므로 훨씬 빠릅니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds = ds.rename_column("label", "label_new")
DatasetDict({
train: Dataset({
features: ['text', 'label_new'],
num_rows: 8530
})
validation: Dataset({
features: ['text', 'label_new'],
num_rows: 1066
})
test: Dataset({
features: ['text', 'label_new'],
num_rows: 1066
})
})rename_columns
< source >( column_mapping: dict ) → DatasetDict
dataset의 여러 열 이름을 변경하고, 원래 열에 연결된 기능을 새 열 이름 아래로 이동합니다. 변환은 dataset 사전의 모든 dataset에 적용됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.rename_columns({'text': 'text_new', 'label': 'label_new'})
DatasetDict({
train: Dataset({
features: ['text_new', 'label_new'],
num_rows: 8530
})
validation: Dataset({
features: ['text_new', 'label_new'],
num_rows: 1066
})
test: Dataset({
features: ['text_new', 'label_new'],
num_rows: 1066
})
})select_columns
< source >( column_names: typing.Union[str, list[str]] )
데이터셋의 각 split에서 하나 이상의 column을 선택하고 해당 column과 연관된 features를 지정합니다.
변환은 데이터셋 사전의 모든 분할에 적용됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.select_columns("text")
DatasetDict({
train: Dataset({
features: ['text'],
num_rows: 8530
})
validation: Dataset({
features: ['text'],
num_rows: 1066
})
test: Dataset({
features: ['text'],
num_rows: 1066
})
})class_encode_column
< source >( column: strinclude_nulls: bool = False )
주어진 컬럼을 ClassLabel으로 캐스팅하고 테이블을 업데이트합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("google/boolq")
>>> ds["train"].features
{'answer': Value('bool'),
'passage': Value('string'),
'question': Value('string')}
>>> ds = ds.class_encode_column("answer")
>>> ds["train"].features
{'answer': ClassLabel(num_classes=2, names=['False', 'True']),
'passage': Value('string'),
'question': Value('string')}push_to_hub
< source >( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[dict[str, int]] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )
매개변수
- repo_id (
str) — 다음 형식으로 push할 저장소의 ID입니다:<user>/<dataset_name>또는<org>/<dataset_name>. 또한<dataset_name>, 도 허용되며, 이 경우 로그인한 사용자의 namespace가 기본값으로 사용됩니다.또한 버킷 내부의 위치일 수도 있습니다. 예:
buckets/<user_or_org>/<bucket_name>/... - config_name (
str) — 데이터셋의 구성 이름입니다. 기본값은 “default”입니다. - set_default (
bool, 선택 사항) — 이 구성을 기본 구성으로 설정할지 여부입니다. 그렇지 않으면 기본 구성은 “default”로 지정된 구성입니다. - data_dir (
str, 선택 사항) — 업로드된 데이터 파일을 포함할 디렉터리 이름. 기본값은config_name이 “default”와 다르면 해당 값, 아니면 “data”입니다.2.17.0에 추가
- commit_message (
str, 선택 사항) — push할 때 사용할 커밋 메시지입니다. 기본값은"Upload dataset"입니다. - commit_description (
str, 선택 사항) — 생성될 커밋에 대한 설명입니다. PR이 생성되는 경우 PR에 대한 설명이기도 합니다(create_prTrue인 경우).2.16.0에 추가
- private (
bool, 선택 사항) — 리포지토리를 비공개로 만들지 여부를 지정합니다.None(기본값)인 경우, 조직의 기본 설정이 비공개가 아닌 한 리포지토리는 공개됩니다. 이미 리포지토리가 존재하면 이 값은 무시됩니다. - token (
str, 선택) — Hugging Face Hub에 대한 선택적 인증 토큰입니다. 토큰이 전달되지 않으면hf auth login으로 로그인할 때 로컬에 저장된 토큰을 기본값으로 사용합니다. 토큰이 전달되지 않고 사용자가 로그인되지 않은 경우 오류가 발생합니다. - revision (
str, 선택 사항) — 업로드한 파일을 푸시할 브랜치입니다. 기본값은"main"브랜치입니다.2.15.0에 추가
- create_pr (
bool, 선택 사항, 기본값은False) — 업로드된 파일로 PR을 생성할지, 아니면 직접 커밋할지 여부.2.15.0에 추가
- max_shard_size (
int또는str, 선택 사항, 기본값"500MB") — hub에 업로드할 데이터셋 샤드의 최대 크기입니다. 문자열로 표현할 경우 숫자 뒤에 단위(예:"500MB"또는"1GB")가 따라와야 합니다. - num_shards (
Dict[str, int], 선택 사항) — 쓰기 위한 샤드 수. 기본적으로 샤드 수는max_shard_size. 각 split에 대해 다른 num_shards를 정의하려면 딕셔너리를 사용하세요.2.8.0에 추가
- embed_external_files (
bool, 기본값은True) — shards에 파일 바이트를 임베드할지 여부입니다. 구체적으로, push를 수행하기 전에 다음 유형의 필드에 대해 다음 작업을 수행합니다: - num_proc (
int, 선택 사항, 기본값은None) — 데이터셋을 준비하고 업로드할 때 사용할 프로세스 수입니다. 데이터셋에 샘플이나 임베드할 미디어 파일이 많을 때 유용합니다. HF로의 빠른 업로드를 위한 Rust 클라이언트인 hf_xet과 함께 작동하도록 “spawn” 컨텍스트를 사용합니다. 기본적으로 멀티프로세싱이 비활성화되어 있습니다.4.0.0에 추가
DatasetDict를 Parquet 데이터셋으로 hub에 업로드합니다. DatasetDict는 HTTP 요청을 통해 업로드되며, git 또는 git-lfs가 설치되어 있지 않아도 됩니다.
각 데이터셋 분할은 독립적으로 push됩니다. push된 데이터셋은 원래의 분할 이름을 유지합니다.
생성된 Parquet 파일은 기본적으로 자체 포함(self-contained)됩니다. 데이터셋에 Image 또는 Audio 데이터가 포함된 경우, Parquet 파일에 이미지 또는 오디오 파일의 바이트가 저장됩니다.
embed_external_files를 False로 설정하여 이 기능을 비활성화할 수 있습니다.
예:
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", num_shards={"train": 1024, "test": 8})데이터셋에 새로운 구성(또는 부분 집합)을 추가하려면(예: 데이터셋에 여러 작업/버전/언어가 있는 경우):
>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")save_to_disk
< source >( dataset_dict_path: typing.Union[str, bytes, os.PathLike]max_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[dict[str, int]] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None )
매개변수
- dataset_dict_path (
path-like) — dataset dict가 저장될 dataset dict 디렉터리의 경로(예:dataset/train) 또는 원격 URI(예:s3://my-bucket/dataset/train). - max_shard_size (
int또는str, 선택 사항, 기본값"500MB") — 파일시스템에 저장할 데이터셋 샤드의 최대 크기입니다. 문자열로 표현할 경우, 숫자 뒤에 단위(예:"50MB")가 따라와야 합니다. - num_shards (
Dict[str, int], 선택 사항) — 쓰기 위한 샤드 수. 기본적으로 샤드 수는max_shard_size및num_proc. 데이터셋 사전의 각 데이터셋에 대한 샤드 수를 제공해야 합니다. 사전(split)별로 다른 num_shards를 정의하려면 사전(dictionary)을 사용하세요.2.8.0에 추가
- num_proc (
int, 선택 사항, 기본값None) — 데이터셋을 로컬로 다운로드하고 생성할 때 사용할 프로세스 수. 기본적으로 멀티프로세싱이 비활성화되어 있습니다.2.8.0에 추가
- storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍입니다.2.8.0에 추가
fsspec.spec.AbstractFileSystem를 사용하여 데이터셋 딕셔너리를 파일 시스템에 저장합니다.
Image(), Audio() 및 Video() 데이터는 모두 arrow 파일에 저장됩니다. 경로나 URL을 저장하려면 Value(“string”) 타입을 사용하세요.
load_from_disk
< source >( dataset_dict_path: typing.Union[str, bytes, os.PathLike]keep_in_memory: typing.Optional[bool] = Nonestorage_options: typing.Optional[dict] = None )
매개변수
- dataset_dict_path (
path-like) — dataset dict가 로드될 dataset dict 디렉터리의 경로(예:"dataset/train") 또는 원격 URI(예:"s3//my-bucket/dataset/train") - keep_in_memory (
bool, 기본값None) — 데이터셋을 메모리에 복사할지 여부입니다.None인 경우,datasets.config.IN_MEMORY_MAX_SIZE를 0이 아닌 값으로 설정하여 명시적으로 활성화하지 않는 한 데이터셋은 메모리에 복사되지 않습니다. 자세한 내용은 성능 개선 섹션을 참고하세요. - storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍입니다.2.8.0에 추가
fsspec.spec.AbstractFileSystem를 사용하여 파일 시스템에서 이전에 save_to_disk로 저장된 데이터셋을 로드합니다.
from_csv
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
매개변수
- path_or_paths (
dictof path-like) — CSV 파일의 경로입니다. - features (Features, 선택 사항) — Dataset의 features입니다.
- cache_dir (str, 선택 사항, 기본값
"~/.cache/huggingface/datasets") — 데이터를 캐시할 디렉터리. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - **kwargs (추가 키워드 인자) —
pandas.read_csv에 전달할 키워드 인자입니다.
CSV 파일에서 DatasetDict를 생성합니다.
from_json
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
매개변수
- path_or_paths (
path-like또는path-like목록) — JSON Lines 파일의 경로입니다. - features (Features, 선택 사항) — Dataset의 features입니다.
- cache_dir (str, 선택 사항, 기본값
"~/.cache/huggingface/datasets") — 데이터를 캐시할 디렉터리. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - **kwargs (추가 키워드 인자) —
JsonConfig에 전달할 키워드 인자입니다.
JSON Lines 파일에서 DatasetDict를 생성합니다.
from_parquet
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsecolumns: typing.Optional[list[str]] = None**kwargs )
매개변수
- path_or_paths (
dictof path-like) — CSV 파일의 경로입니다. - features (Features, 선택 사항) — Dataset의 features입니다.
- cache_dir (
str, 선택 사항, 기본값"~/.cache/huggingface/datasets") — 데이터를 캐시할 디렉터리. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - columns (
list[str], 선택 사항) —None이 아닌 경우, 파일에서 이 컬럼만 읽습니다. 컬럼 이름은 중첩 필드의 접두사일 수 있습니다. 예를 들어 ‘a’를 지정하면 ‘a.b’, ‘a.c’, ‘a.d.e’가 선택됩니다. - **kwargs (추가 키워드 인자) —
ParquetConfig에 전달할 키워드 인자입니다.
Parquet 파일에서 DatasetDict를 생성합니다.
from_text
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
매개변수
- path_or_paths (
dictof path-like) — 텍스트 파일의 경로입니다. - features (Features, 선택 사항) — Dataset의 features입니다.
- cache_dir (
str, 선택 사항, 기본값"~/.cache/huggingface/datasets") — 데이터를 캐시할 디렉터리. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - **kwargs (추가 키워드 인자) —
TextConfig에 전달할 키워드 인자입니다.
텍스트 파일에서 DatasetDict를 생성합니다.
IterableDataset
기본 클래스 IterableDataset은 Python 생성기로 뒷받침되는 반복 가능한 Dataset을 구현합니다.
class datasets.IterableDataset
< source >( ex_iterable: _BaseExamplesIterableinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneformatting: typing.Optional[datasets.iterable_dataset.FormattingConfig] = Nonedistributed: typing.Optional[datasets.iterable_dataset.DistributedConfig] = Nonetoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
iterable에 기반한 Dataset입니다.
filename의 Arrow 테이블에서 IterableDataset을(를) 생성합니다.
from_pandas
< source >( df: DataFramefeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonepreserve_index: typing.Optional[bool] = Nonenum_shards: typing.Optional[int] = 1 )
매개변수
- df (
pandas.DataFrame) — 데이터셋을 포함하는 데이터프레임. - features (Features, 선택 사항) — Dataset의 features입니다.
- info (
DatasetInfo, 선택 사항) — 설명, 인용 문헌 등 데이터셋 정보 - split (
NamedSplit, 선택 사항) — 데이터셋 분할의 이름. - preserve_index (
bool, 선택 사항) — 결과 Dataset에 인덱스를 추가 열로 저장할지 여부입니다. 기본값인None은RangeIndex를 제외하고 인덱스를 열로 저장합니다.RangeIndex는 메타데이터로만 저장됩니다. 인덱스를 반드시 열로 저장하려면preserve_index=True를 사용하세요. - num_shards (
int, 기본값1) — iterable dataset을 인스턴스화할 때 정의할 shard의 수입니다. 이는 특히 큰 dataset에서 올바르게 shuffle할 수 있도록 하는 데 유용하며, PyTorch DataLoader를 사용하여 빠른 병렬 로딩을 활성화하거나 분산 환경에서 사용하는 데에도 유용합니다.
pandas.DataFrame를 pyarrow.Table로 변환하여 IterableDataset을 생성합니다.
결과 Arrow Table의 열 유형은 DataFrame의 pandas.Series dtype에서 추론됩니다. object가 아닌 Series의 경우, NumPy dtype이 해당 Arrow 유형으로 변환됩니다. object의 경우, 이 Series에 포함된 Python 객체를 살펴서 데이터 유형을 추측해야 합니다.
object dtype의 Series는 항상 의미 있는 Arrow 타입으로 이어질 만큼 충분한 정보를 담고 있지 않을 수 있습니다. DataFrame의 길이가 0이거나 Series에 None/nan 객체만 포함된 경우와 같이 타입을 추론할 수 없는 경우, 타입은 null로 설정됩니다. 이 동작은 명시적인 features를 구성하여 이 함수에 전달함으로써 방지할 수 있습니다.
Important: a dataset created with from_pandas() lives in memory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it on disk and reload using e.g. to_parquet / from_parquet.
from_dict
< source >( mapping: dictfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonenum_shards: typing.Optional[int] = 1 )
매개변수
- mapping (
Mapping) — 문자열에서 Array 또는 Python 리스트로의 매핑. - features (Features, 선택 사항) — Dataset의 features입니다.
- info (
DatasetInfo, 선택 사항) — 설명, 인용 문헌 등 데이터셋 정보 - split (
NamedSplit, 선택 사항) — 데이터셋 분할의 이름. - num_shards (
int, 기본값1) — iterable dataset을 인스턴스화할 때 정의할 shard의 수입니다. 이는 특히 큰 dataset에서 올바르게 shuffle할 수 있도록 하는 데 유용하며, PyTorch DataLoader를 사용하여 빠른 병렬 로딩을 활성화하거나 분산 환경에서 사용하는 데에도 유용합니다.
dict을 pyarrow.Table로 변환하여 IterableDataset을 생성합니다.
Important: a dataset created with from_dict() lives in memory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. to_parquet / from_parquet.
from_list
< source >( mapping: listfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonenum_shards: typing.Optional[int] = 1 )
매개변수
- mapping (
List[dict]) — 문자열에서 행 값으로의 매핑 목록. - features (
Features, 선택 사항) — Dataset의 features입니다. - info (
DatasetInfo, optional) — 설명, 인용 정보 등 데이터셋에 대한 정보 - split (
NamedSplit, 선택 사항) — 데이터셋 분할의 이름. - num_shards (
int, 기본값1) — iterable dataset을 인스턴스화할 때 정의할 shard의 수입니다. 이는 특히 큰 dataset에서 올바르게 shuffle할 수 있도록 하는 데 유용하며, PyTorch DataLoader를 사용하여 빠른 병렬 로딩을 활성화하거나 분산 환경에서 사용하는 데에도 유용합니다.
dict 목록을 pyarrow.Table로 변환하여 IterableDataset을 생성합니다.
features에 전달된 값과 관계없이, 첫 번째 항목의 키가 데이터셋 열을 결정하는 데 사용됩니다.
Important: a dataset created with from_list() lives in memory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. from_parquet / to_parquet.
from_generator
< source >( generator: typing.Callablefeatures: typing.Optional[datasets.features.features.Features] = Nonegen_kwargs: typing.Optional[dict] = Nonesplit: NamedSplit = NamedSplit('train') )
매개변수
- generator (
Callable) — 예시를yields하는 생성기 함수. - features (
Features, 선택 사항) — Dataset의 features입니다. - gen_kwargs(
dict, 선택 사항) —generator콜러블에 전달할 키워드 인수입니다.gen_kwargs에 샤드 목록을 전달하여 샤드된 반복 가능 데이터셋을 정의할 수 있습니다. 이것은 셔플링을 개선하고 여러 워커로 데이터셋을 반복할 때 사용할 수 있습니다. - split (NamedSplit, 기본값은
Split.TRAIN) — 데이터셋에 할당할 Split 이름입니다.2.21.0에 추가됨
제너레이터에서 Iterable Dataset을 생성합니다.
예:
>>> def gen():
... yield {"text": "Good", "label": 0}
... yield {"text": "Bad", "label": 1}
...
>>> ds = IterableDataset.from_generator(gen)>>> def gen(shards):
... for shard in shards:
... with open(shard) as f:
... for line in f:
... yield {"line": line}
...
>>> shards = [f"data{i}.txt" for i in range(32)]
>>> ds = IterableDataset.from_generator(gen, gen_kwargs={"shards": shards})
>>> ds = ds.shuffle(seed=42, buffer_size=10_000) # shuffles the shards order + uses a shuffle buffer
>>> from torch.utils.data import DataLoader
>>> dataloader = DataLoader(ds.with_format("torch"), num_workers=4) # give each worker a subset of 32/4=8 shardsremove_columns
< source >( column_names: typing.Union[str, list[str]] ) → IterableDataset
데이터셋에서 하나 이상의 컬럼과 해당 컬럼에 연관된 features를 제거합니다. 제거 작업은 데이터셋을 반복할 때 예제에 대해 실시간으로 수행됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .', 'label': 1}
>>> ds = ds.remove_columns("label")
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}select_columns
< source >( column_names: typing.Union[str, list[str]] ) → IterableDataset
데이터셋에서 하나 이상의 열과 해당 열에 연관된 features를 선택합니다. 선택은 데이터셋을 반복할 때 예제에 대해 실시간으로 수행됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .', 'label': 1}
>>> ds = ds.select_columns("text")
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}cast_column
< source >( column: strfeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure] ) → IterableDataset
디코딩을 위해 컬럼을 feature로 캐스팅합니다.
예:
>>> from datasets import load_dataset, Audio
>>> ds = load_dataset("PolyAI/minds14", name="en-US", split="train", streaming=True)
>>> ds.features
{'audio': Audio(sampling_rate=8000, mono=True, decode=True, id=None),
'english_transcription': Value('string'),
'intent_class': ClassLabel(num_classes=14, names=['abroad', 'address', 'app_error', 'atm_limit', 'balance', 'business_loan', 'card_issues', 'cash_deposit', 'direct_debit', 'freeze', 'high_value_payment', 'joint_account', 'latest_transactions', 'pay_bill']),
'lang_id': ClassLabel(num_classes=14, names=['cs-CZ', 'de-DE', 'en-AU', 'en-GB', 'en-US', 'es-ES', 'fr-FR', 'it-IT', 'ko-KR', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'zh-CN']),
'path': Value('string'),
'transcription': Value('string')}
>>> ds = ds.cast_column("audio", Audio(sampling_rate=16000))
>>> ds.features
{'audio': Audio(sampling_rate=16000, mono=True, decode=True, id=None),
'english_transcription': Value('string'),
'intent_class': ClassLabel(num_classes=14, names=['abroad', 'address', 'app_error', 'atm_limit', 'balance', 'business_loan', 'card_issues', 'cash_deposit', 'direct_debit', 'freeze', 'high_value_payment', 'joint_account', 'latest_transactions', 'pay_bill']),
'lang_id': ClassLabel(num_classes=14, names=['cs-CZ', 'de-DE', 'en-AU', 'en-GB', 'en-US', 'es-ES', 'fr-FR', 'it-IT', 'ko-KR', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'zh-CN']),
'path': Value('string'),
'transcription': Value('string')}캐스트
< source >( features: Features ) → IterableDataset
데이터셋을 새로운 기능 집합으로 캐스팅합니다.
예:
>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> ds.features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds.features.copy()
>>> new_features["label"] = ClassLabel(names=["bad", "good"])
>>> new_features["text"] = Value("large_string")
>>> ds = ds.cast(new_features)
>>> ds.features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}decode
< source >( enable: bool = Truenum_threads: typing.Optional[int] = None ) → IterableDataset
매개변수
- enable (
bool, 기본값True) — features 디코딩을 활성화하거나 비활성화합니다. - num_threads (
int, 선택 사항, 기본값None) — features 디코딩을 위한 멀티스레딩을 활성화합니다. HF에서 디코딩 가능한 features를 가진 dataset을 스트리밍할 때 load_dataset()는 기본적으로 몇 개의 스레드를 사용합니다. 기본적으로num_threads는 디코딩이 필요한 feature가 하나 이상이면 32로, 그렇지 않으면 0으로 설정됩니다.
반환값
IterableDataset
캐스팅된 기능이 포함된 데이터셋의 복사본입니다.
오디오, 이미지, 비디오에 대한 데이터셋 기능 디코딩을 활성화하거나 비활성화합니다.
활성화(기본값)되면 미디어 유형이 디코딩됩니다:
- audio -> “array”, “sampling_rate”, “path” 키를 가진 dict
- image -> PIL.Image
- video -> torchcodec.decoders.VideoDecoder
멀티스레딩은 num_threads를 통해 활성화할 수 있습니다. 이 경우 각 미디어 파일은 워커 스레드에서 읽히고 디코딩되어, 연속된 예시의 네트워크 왕복 시간이 겹치게 됩니다. 이는 원격 데이터 스트리밍 속도를 높이는 데 특히 유용하며, 디코딩 가능한 기능이 있는 원격 데이터셋을 스트리밍할 때 load_dataset()은 기본적으로 이를 활성화합니다(자세한 내용은 HF_DATASETS_DECODE_NUM_THREADS 참조). 로컬 디스크에서 읽은 데이터셋은 빠른 디스크의 로컬 데이터에서 멀티스레딩이 메인 스레드에서 디코딩하는 것보다 느릴 수 있으므로 num_threads=0으로 스트리밍됩니다. 예시가 미리 디코딩되므로, 진행 중인 각 스레드는 메모리에 예시 하나를 유지할 수 있습니다. 메모리 사용량을 줄이려면 num_threads를 낮추세요.
미디어 파일의 경로나 바이트를 실제 콘텐츠 디코딩 없이 반복적으로 처리하려면 디코딩을 비활성화하는 것이 유용합니다. 디코딩을 비활성화하려면 .decode(False)를 사용할 수 있으며, 이는 모든 Audio, Image, Video 타입에 대해 decode=False로 설정하고 .cast() 또는 .cast_column()을 호출하는 것과 동일합니다.
예:
디코딩 비활성화:
>>> from datasets import load_dataset
>>> ds = load_dataset("sshh12/planet-textures", split="train", streaming=True)
>>> next(iter(ds))
{'image': <PIL.PngImagePlugin.PngImageFile image mode=RGB size=2048x1024>,
'text': 'A distant celestial object with an icy crust, displaying a light blue shade, covered with round pits and rugged terrains.'}
>>> ds = ds.decode(False)
>>> ds.features
{'image': Image(mode=None, decode=False, id=None),
'text': Value('string')}
>>> next(iter(ds))
{
'image': {
'path': 'hf://datasets/sshh12/planet-textures@69dc4cef7a5c4b2cfe387727ec8ea73d4bff7302/train/textures/0000.png',
'bytes': None
},
'text': 'A distant celestial object with an icy crust, displaying a light blue shade, covered with round pits and rugged terrains.'
}멀티스레딩으로 스트리밍 속도 향상:
>>> import os
>>> from datasets import load_dataset
>>> from tqdm import tqdm
>>> ds = load_dataset("sshh12/planet-textures", split="train", streaming=True)
>>> # already threaded by default with 32 threads, but more threads can help going even faster
>>> ds = ds.decode(num_threads=64)
>>> for _ in tqdm(ds): # 2 times faster !
... ...iter
< source >( batch_size: intdrop_last_batch: bool = False )
크기 batch_size의 배치들을 순회합니다.
map
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonefn_kwargs: typing.Optional[dict] = None )
매개변수
- function (
Callable, 선택 사항, 기본값은None) — 데이터셋을 반복할 때 예제에 즉시 적용되는 함수입니다. 다음 중 하나의 서명을 가져야 합니다:batched=False이고with_indices=False인 경우function(example: Dict[str, Any]) -> Dict[str, Any]batched=False이고with_indices=True인 경우function(example: Dict[str, Any], idx: int) -> Dict[str, Any]batched=True이고with_indices=False인 경우function(batch: Dict[str, List]) -> Dict[str, List]function(batch: Dict[str, List], indices: List[int]) -> Dict[str, List]ifbatched=Trueandwith_indices=True
고급 사용의 경우, 이 함수는
pyarrow.Table를 반환할 수도 있습니다. 함수가 비동기(asynchronous)인 경우,map는 사용자의 함수를 병렬로 실행합니다. 또한 함수가 아무것도 반환하지 않는 경우(None),map는 사용자의 함수를 실행하고 데이터셋을 변경하지 않은 상태로 반환합니다. 함수가 제공되지 않으면, 항등 함수(identity function)인lambda x: x를 기본값으로 사용합니다. - with_indices (
bool, 기본값False) —function에 예시 인덱스를 제공합니다. 이 경우function의 시그니처는def function(example, idx[, rank]): ...여야 합니다. - input_columns (
Optional[Union[str, List[str]]], 기본값None) —function에 위치 인수로 전달할 열입니다.None인 경우, 모든 포맷된 열에 대한 dict 매핑이 하나의 인수로 전달됩니다. - batched (
bool, 기본값False) —function에 예시 배치(batch)를 제공합니다. - batch_size (
int, 선택 사항, 기본값1000) —batched=True인 경우function에 배치별로 제공되는 예시 수입니다.batch_size <= 0또는batch_size == None이면 전체 데이터셋을 단일 배치로function에 제공합니다. - drop_last_batch (
bool, 기본값False) — batch_size보다 작은 마지막 배치에 대해 함수로 처리하는 대신 버릴지 여부입니다. - remove_columns (
[List[str]], 선택 사항, 기본값None) — 매핑을 수행하는 동안 선택된 컬럼을 제거합니다. 컬럼은function의 출력으로 예시를 업데이트하기 전에 제거되므로,function이remove_columns에 포함된 이름의 컬럼을 추가하는 경우 해당 컬럼은 유지됩니다. - features (
[Features], 선택 사항, 기본값None) — 결과 데이터셋의 feature 유형입니다. - fn_kwargs (
Dict, 선택 사항, 기본값None) —function에 전달할 키워드 인자입니다.
반복 가능한 데이터셋의 모든 예시에 함수를 적용(개별 또는 배치 단위)하여 예시를 업데이트합니다. 함수가 이미 존재하는 컬럼을 반환하면 해당 컬럼을 덮어씁니다. 함수는 데이터셋을 반복할 때 예시에 즉시(on-the-fly) 적용됩니다.
batched 매개변수를 사용하여 함수가 배치 처리되어야 하는지 여부를 지정할 수 있습니다:
False인 경우, 이 함수는 1개의 예시를 입력으로 받아 1개의 예시를 반환해야 합니다. 예시는 사전(dictionary)이며, 예를 들어{"text": "Hello there !"}과 같습니다.True이고batch_size가 1인 경우, 이 함수는 1개의 예시로 구성된 배치로 입력을 받아 1개 이상의 예시로 구성된 배치를 반환할 수 있습니다. 배치는 사전(dictionary)이며, 예를 들어 1개의 예시로 구성된 배치는 {“text”: [“Hello there !”"]}입니다.True이고batch_size가n> 1인 경우, 이 함수는n개의 예시로 구성된 배치(batch)를 입력으로 받아n개의 예시로 구성된 배치 또는 임의의 개수의 예시로 구성된 배치를 반환할 수 있습니다. 마지막 배치에는n개보다 적은 예시가 포함될 수 있습니다. 배치는 사전(dictionary)이며, 예를 들어n개의 예시로 구성된 배치는{"text": ["Hello there !"] * n}입니다.
함수가 비동기(asynchronous)인 경우, map은 최대 1,000개의 동시 호출을 허용하면서 함수를 병렬로 실행합니다.
동시에 실행될 수 있는 작업의 최대 수를 설정하려면 함수에서 asyncio.Semaphore를 사용하는 것이 권장됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> def add_prefix(example):
... example["text"] = "Review: " + example["text"]
... return example
>>> ds = ds.map(add_prefix)
>>> list(ds.take(3))
[{'label': 1,
'text': 'Review: the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'Review: the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'Review: effective but too-tepid biopic'}]rename_column
< source >( original_column_name: strnew_column_name: str ) → IterableDataset
데이터셋의 컬럼 이름을 변경하고, 원래 컬럼에 연결된 특징을 새 컬럼 이름 아래로 이동합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> next(iter(ds))
{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}
>>> ds = ds.rename_column("text", "movie_review")
>>> next(iter(ds))
{'label': 1,
'movie_review': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}필터
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = None )
매개변수
- function (
Callable) — 다음 중 하나의 시그니처를 가진 Callable입니다:with_indices=False, batched=False인 경우function(example: Dict[str, Any]) -> boolfunction(example: Dict[str, Any], indices: int) -> boolifwith_indices=True, batched=Falsewith_indices=False, batched=True인 경우function(example: Dict[str, List]) -> List[bool]function(example: Dict[str, List], indices: List[int]) -> List[bool]ifwith_indices=True, batched=True
함수가 비동기(asynchronous)인 경우,
filter는 해당 함수를 병렬로 실행합니다. 함수가 제공되지 않으면 항상 True를 반환하는 함수인lambda x: True가 기본값으로 사용됩니다. - with_indices (
bool, 기본값False) —function에 예시 인덱스를 제공합니다. 이 경우function의 시그니처는def function(example, idx): ...여야 합니다. - input_columns (
str또는List[str], 선택 사항) —function에 위치 인수로 전달할 열입니다.None인 경우, 모든 포맷된 열에 대한 dict 매핑이 하나의 인수로 전달됩니다. - batched (
bool, 기본값False) —function에 예시 배치(batch)를 제공합니다. - batch_size (
int, 선택 사항, 기본값1000) —batched=True인 경우function에 전달되는 배치당 예제 수입니다. - fn_kwargs (
Dict, 선택 사항, 기본값None) —function에 전달할 키워드 인자입니다.
필터 함수를 모든 요소에 적용하여 데이터셋이 필터 함수에 따라 예시를 포함하도록 합니다. 필터링은 데이터셋을 반복할 때 실시간으로 수행됩니다.
함수가 비동기(asynchronous)인 경우, filter는 최대 1,000개의 동시 호출(구성 가능)까지 함수를 병렬로 실행합니다.
동시에 실행될 수 있는 작업의 최대 수를 설정하려면 함수에서 asyncio.Semaphore를 사용하는 것이 권장됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> ds = ds.filter(lambda x: x["label"] == 0)
>>> list(ds.take(3))
[{'label': 0, 'movie_review': 'simplistic , silly and tedious .'},
{'label': 0,
'movie_review': "it's so laddish and juvenile , only teenage boys could possibly find it funny ."},
{'label': 0,
'movie_review': 'exploitative and largely devoid of the depth or sophistication that would make watching such a graphic treatment of the crimes bearable .'}]shuffle
< source >( seed = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonebuffer_size: int = 1000max_buffer_input_shards: int = 10 )
매개변수
- seed (
int, 선택 사항, 기본값None) — 데이터셋을 섞는 데 사용할 무작위 시드입니다. 셔플 버퍼에서 샘플링할 때와 데이터 샤드를 섞을 때 사용됩니다. - generator (
numpy.random.Generator, 선택 사항) — 데이터셋 행의 순열을 계산하는 데 사용할 Numpy random Generator입니다.generator=None(기본값)인 경우,np.random.default_rng(NumPy의 기본 BitGenerator(PCG64))를 사용합니다. - buffer_size (
int, 기본값1000) — 버퍼의 크기입니다. - max_buffer_input_shards (
int, 기본값10) — 버퍼에 한 번에 공급할 최대 샤드 수입니다.
이 데이터셋의 요소를 무작위로 섞습니다.
이 데이터셋은 buffer_size개의 요소로 버퍼를 채운 후, 이 버퍼에서 요소를 무작위로 샘플링하고 선택된 요소를 새로운 요소로 대체합니다. 완벽한 셔플링을 위해서는 데이터셋 전체 크기와 같거나 큰 버퍼 크기가 필요합니다.
예를 들어, 데이터셋에 10,000개의 요소가 있지만 buffer_size가 1000으로 설정되어 있다면, shuffle은 처음에 버퍼의 첫 1000개 요소 중에서만 무작위로 요소를 선택합니다. 요소가 선택되면, 버퍼 내 해당 요소의 공간은 다음(즉, 1,001번째) 요소로 대체되어 1000개 요소의 버퍼가 유지됩니다.
데이터셋이 여러 개의 샤드로 구성되어 있는 경우, 버퍼를 채우기 위해 한 번에 최대 max_buffer_input_shards개의 샤드를 사용하며, 샤드의 순서도 섞습니다. 이를 통해 셔플링의 품질이 크게 향상됩니다. 입력 샤드는 각 노드와 워커 내에서 교차(interleave)되어 배치되며, 병렬 데이터 로딩에 사용할 수 있는 샤드 수는 유지됩니다.
그러나 skip() 또는 take()를 사용하여 순서가 고정된 경우, 샤드의 순서는 변경되지 않고 버퍼를 채우기 위해 한 번에 하나의 샤드만 사용됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> list(ds.take(3))
[{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
'label': 1},
{'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .',
'label': 1},
{'text': 'effective but too-tepid biopic', 'label': 1}]
>>> shuffled_ds = ds.shuffle(seed=42)
>>> list(shuffled_ds.take(3))
[{'text': "a sports movie with action that's exciting on the field and a story you care about off it .",
'label': 1},
{'text': 'at its best , the good girl is a refreshingly adult take on adultery . . .',
'label': 1},
{'text': "sam jones became a very lucky filmmaker the day wilco got dropped from their record label , proving that one man's ruin may be another's fortune .",
'label': 1}]
>>> resharded_ds = ds.reshard() # useful to shard Parquet datasets by row group instead of by file, improving shuffling quality on dataset with one or few files.
>>> shuffled_resharded_ds = resharded_ds.shuffle(seed=42)
>>> list(shuffled_resharded_ds.take(3))
[{'text': 'this mistaken-identity picture is so film-culture referential that the final product is a ghost .',
'label': 0},
{'text': 'woody allen used to ridicule movies like hollywood ending . now he makes them .',
'label': 0},
{'text': "not only is undercover brother as funny , if not more so , than both austin powers films , but it's also one of the smarter , savvier spoofs to come along in some time .",
'label': 1}]배치
< source >( batch_size: typing.Optional[int] = Noneby_column: typing.Union[str, list[str], NoneType] = Nonedrop_last_batch: bool = False )
매개변수
- batch_size (
int, 선택 사항) — 각 배치에 포함된 샘플의 수입니다. - by_column (
Union[str, list[str], 선택 사항 — 예제를 배치로 묶는 데 사용되는 열입니다. 해당 열의 값이 동일한 연속된 예제들은 동일한 배치에 그룹화됩니다. 여러 열을 기준으로 배치하려면 열 목록도 사용할 수 있습니다. 열 기준으로 배치하는 경우, batch_size는 누적 과정에서 함께 묶거나 슬라이스할 배치의 크기를 제어하는 데만 사용됩니다.4.9.0에 추가
- drop_last_batch (
bool, 기본값False) — 마지막 불완전한 배치(dropped)를 제거할지 여부.
데이터셋에서 샘플을 배치로 그룹화합니다.
예:
첫 n개 요소를 건너뛰는 새로운 IterableDataset을 생성합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> list(ds.take(3))
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'}]
>>> ds = ds.skip(1)
>>> list(ds.take(3))
[{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'},
{'label': 1,
'text': 'if you sometimes like to go to the movies to have fun , wasabi is a good place to start .'}]첫 번째 n개 요소만 포함된 새로운 IterableDataset을 생성합니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> small_ds = ds.take(2)
>>> list(small_ds)
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'}]shard
< source >( num_shards: intindex: intcontiguous: bool = True )
데이터셋을 num_shards개의 조각으로 나누고 index번째 샤드를 반환합니다.
이것은 결정적으로 샤딩됩니다. dataset.shard(n, i)는 데이터셋을 연속된 청크로 나누므로, 처리 후 쉽게 다시 연결할 수 있습니다. dataset.num_shards % n == l인 경우, 처음 l개의 데이터셋은 각각 (dataset.num_shards // n) + 1개의 샤드를 가지며, 나머지 데이터셋은 (dataset.num_shards // n)개의 샤드를 가집니다. datasets.concatenate_datasets([dset.shard(n, i) for i in range(n)])는 원래와 동일한 순서를 가진 데이터셋을 반환합니다. 특히, dataset.shard(dataset.num_shards, i)는 1개의 샤드를 가진 데이터셋을 반환합니다.
Note: n은 데이터셋의 샤드 수 dataset.num_shards보다 작거나 같아야 합니다.
반면, dataset.shard(n, i, contiguous=False)는 인덱스가 n = i인 데이터셋의 모든 샤드를 포함합니다.
shuffle와 같은 무작위화 연산자를 사용하기 전에 반드시 샤딩을 수행해야 합니다.
샤딩 연산자는 데이터셋 파이프라인의 초기 단계에서 사용하는 것이 가장 좋습니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("fancyzhx/amazon_polarity", split="train", streaming=True)
>>> ds
IterableDataset({
features: ['label', 'title', 'content'],
num_shards: 4
})
>>> ds.shard(num_shards=2, index=0)
IterableDataset({
features: ['label', 'title', 'content'],
num_shards: 2
})가능하다면 데이터셋을 리샤드(reshard)합니다. 즉, 현재 샤드를 더 많은 샤드로 분할합니다. 이 경우 샤드 수가 증가하며, 결과 데이터셋의 num_shards >= previous_num_shards가 됩니다. 더 이상 분할할 수 있는 샤드가 없는 경우 동등한 값이 될 수 있습니다.
resharding 메커니즘은 데이터셋 파일 형식에 따라 달라집니다:
- Parquet: 파일별로가 아닌 row group별로 샤딩
- Vortex: 파일별로而不是 연속된 청크 범위(각각 약 64MB의 파일 데이터)별로 샤드를 생성
- 기타: 아직 구현되지 않았습니다(기여 환영합니다!)
shuffle와 같은 무작위화 연산자를 사용하기 전에 반드시 reshard/shard를 수행하세요.
shard 연산자는 데이터셋 파이프라인의 초기 단계에서 사용하는 것이 가장 좋습니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("fancyzhx/amazon_polarity", split="train", streaming=True)
>>> ds
IterableDataset({
features: ['label', 'title', 'content'],
num_shards: 4
})
>>> ds.reshard()
IterableDataset({
features: ['label', 'title', 'content'],
num_shards: 3600
})반복
< source >( num_times: typing.Optional[int] )
num_times번 반복하는 새로운 IterableDataset을 생성합니다.
num_times가 None인 경우에도 빈 입력은 처리를 종료합니다.
참고: repeat 호출 후 shuffle을 호출하는 효과는 buffer size에 따라 크게 달라집니다. buffer_size가 1인 경우, 셔플링 후에도 동일한 반복(iteration)에서 중복 데이터가 절대 관찰되지 않습니다: ds.repeat(n).shuffle(seed=42, buffer_size=1)은 ds.shuffle(seed=42, buffer_size=1).repeat(n)과 동일하며, 각 반복 내에서만 샤드(shard) 순서를 셔플링합니다. buffer size가 >= (데이터셋의 샘플 수 * num_times)인 경우, 반복된 데이터에 대한 완전한 셔플링이 수행되어, 동일한 반복에서 중복을 관찰할 수 있습니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> ds = ds.take(2).repeat(2)
>>> list(ds)
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'},
{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'}]to_csv
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_csv_kwargs ) → int
매개변수
- path_or_buf (
PathLike또는FileOrBuffer) — 파일 경로(예:file.csv), 원격 URI(예:hf://datasets/username/my_dataset_name/data.csv), 또는 지정된 형식으로 데이터셋이 저장될 BinaryIO입니다. - batch_size (
int, 선택 사항) — 메모리에 로드하고 한 번에 작성할 배치의 크기입니다. 기본값은datasets.config.DEFAULT_MAX_BATCH_SIZE입니다. - storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍(해당하는 경우). - **to_csv_kwargs (추가 키워드 인자) —
pandas의
pandas.DataFrame.to_csv에 전달할 매개변수입니다.index매개변수는 지정되지 않은 경우 기본값이False입니다. 인덱스를 기록하려면index=True를 전달하고index_label을 전달하여 인덱스 열 이름을 설정해야 합니다.
반환값
int
쓰인 문자 또는 바이트 수.
데이터셋을 csv로 내보냅니다.
이것은 데이터셋을 반복하며, 쓰기 전에 완전히 메모리에 로드합니다.
to_pandas
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
pandas.DataFrame로 데이터셋을 반환합니다. 대규모 데이터셋의 경우 생성기도 반환할 수 있습니다.
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Python dict으로 데이터셋을 반환합니다. 대규모 데이터셋의 경우 생성자(generator)를 반환할 수도 있습니다.
to_json
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_json_kwargs ) → int
매개변수
- path_or_buf (
PathLike또는FileOrBuffer) — 파일 경로(예:file.json), 원격 URI(예:hf://datasets/username/my_dataset_name/data.json), 또는 지정된 형식으로 데이터셋이 저장될 BinaryIO입니다. - batch_size (
int, 선택 사항) — 메모리에 로드하고 한 번에 작성할 배치의 크기입니다. 기본값은datasets.config.DEFAULT_MAX_BATCH_SIZE입니다. - storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍(해당하는 경우). - **to_json_kwargs (additional keyword arguments) —
Parameters to pass to pandas’s
pandas.DataFrame.to_json. Default arguments arelines=Trueandorient="records". The parameterindexdefaults toFalseiforientis“split”or“table”. If you would like to write the index, passindex=True`.
반환값
int
쓰인 문자 또는 바이트 수.
데이터셋을 JSON Lines 또는 JSON으로 내보냅니다.
이것은 데이터셋을 반복하며, 쓰기 전에 완전히 메모리에 로드합니다.
기본 출력 형식은 JSON Lines입니다.
JSON으로 내보내려면 lines=False 인자와 원하는 orient를 전달하세요.
to_parquet
< source >( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**parquet_writer_kwargs ) → int
매개변수
- path_or_buf (
PathLike또는FileOrBuffer) — 파일 경로(예:file.parquet), 원격 URI(예:hf://datasets/username/my_dataset_name/data.parquet), 또는 지정된 형식으로 데이터셋이 저장될 BinaryIO입니다. - batch_size (
int, 선택 사항) — 메모리에 로드하고 한 번에 작성할 배치의 크기입니다. 기본값은datasets.config.DEFAULT_MAX_BATCH_SIZE입니다. - storage_options (
dict, 선택 사항) — 파일 시스템 백엔드에 전달할 키/값 쌍입니다.2.19.0에 추가
- **parquet_writer_kwargs (추가 키워드 인자) —
PyArrow의
pyarrow.parquet.ParquetWriter에 전달할 매개변수.
반환값
int
쓰인 문자 또는 바이트 수.
데이터셋을 parquet로 내보냅니다
to_sql
< source >( name: strcon: typing.Union[str, ForwardRef('sqlalchemy.engine.Connection'), ForwardRef('sqlalchemy.engine.Engine'), ForwardRef('sqlite3.Connection')]batch_size: typing.Optional[int] = None**sql_writer_kwargs ) → int
매개변수
- name (
str) — SQL 테이블 이름. - con (
str또는sqlite3.Connection또는sqlalchemy.engine.Connection또는sqlalchemy.engine.Connection) — 데이터베이스에 쓰기 위해 사용되는 URI 문자열 또는 SQLite3/SQLAlchemy 연결 객체입니다. - batch_size (
int, 선택 사항) — 메모리에 로드하고 한 번에 작성할 배치의 크기입니다. 기본값은datasets.config.DEFAULT_MAX_BATCH_SIZE입니다. - **sql_writer_kwargs (추가 키워드 인자) —
pandas의
pandas.DataFrame.to_sql에 전달할 매개변수입니다.index매개변수는 지정되지 않은 경우 기본값이False입니다. 인덱스를 기록하려면index=True를 전달하고index_label을 전달하여 인덱스 열 이름을 설정해야 합니다.
반환값
int
기록된 레코드 수입니다.
데이터셋을 SQL 데이터베이스로 내보냅니다.
push_to_hub
< source >( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonesplit: typing.Optional[str] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[int] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )
매개변수
- repo_id (
str) — 다음 형식으로 push할 저장소의 ID입니다:<user>/<dataset_name>또는<org>/<dataset_name>. 또한<dataset_name>, 도 허용되며, 이 경우 로그인한 사용자의 namespace가 기본값으로 사용됩니다.또한 버킷 내부의 위치일 수도 있습니다. 예:
buckets/<user_or_org>/<bucket_name>/... - config_name (
str, 기본값 “default”) — 데이터셋의 구성 이름(또는 부분 집합)입니다. 기본값은 “default”입니다. - set_default (
bool, 선택 사항) — 이 구성을 기본 구성으로 설정할지 여부입니다. 그렇지 않으면 기본 구성은 “default”로 지정된 구성입니다. - split (
str, 선택 사항) — 해당 데이터셋에 할당될 split의 이름입니다. 기본값은self.split입니다. - data_dir (
str, 선택 사항) — 업로드된 데이터 파일이 포함될 디렉터리 이름입니다.config_name이 “default”와 다르면config_name값이 기본값으로 사용되고, 그렇지 않으면 “data”가 기본값으로 사용됩니다. - commit_message (
str, 선택 사항) — push할 때 사용할 커밋 메시지입니다. 기본값은"Upload dataset"입니다. - commit_description (
str, 선택 사항) — 생성될 커밋의 설명입니다. PR이 생성되는 경우(create_pr가 True인 경우) PR의 설명도 포함됩니다. - private (
bool, 선택 사항) — 리포지토리를 비공개로 만들지 여부를 지정합니다.None(기본값)인 경우, 조직의 기본 설정이 비공개가 아닌 한 리포지토리는 공개됩니다. 이미 리포지토리가 존재하면 이 값은 무시됩니다. - token (
str, 선택) — Hugging Face Hub에 대한 선택적 인증 토큰입니다. 토큰이 전달되지 않으면hf auth login으로 로그인할 때 로컬에 저장된 토큰을 기본값으로 사용합니다. 토큰이 전달되지 않고 사용자가 로그인되지 않은 경우 오류가 발생합니다. - revision (
str, 선택 사항) — 업로드된 파일을 푸시할 브랜치입니다. 기본값은"main"브랜치입니다. - create_pr (
bool, 선택 사항, 기본값False) — 업로드된 파일로 PR을 생성할지 아니면 직접 커밋할지 여부. - max_shard_size (
int또는str, 선택 사항) — 허브에 업로드할 데이터셋 샤드의 최대 크기를 선택적으로 지정합니다. 문자열로 표현할 경우 숫자 뒤에 단위(예:"5MB")가 따라야 합니다. 값을 제공하지 않으면 샤드 개수는 이 데이터셋의.num_shards값으로 기본 설정됩니다. - num_shards (
int, 선택 사항) — 쓰기 위한 샤드 수입니다.max_shard_size가 제공되고num_shards가 제공되지 않으면, 샤드 수는max_shard_size로부터 추정됩니다. 이 데이터셋의.num_shards보다 클 수 있습니다. 이 경우 각 입력 샤드의 예제는 라운드 로빈 방식으로 여러 출력 샤드에 분산하여 기록됩니다. - embed_external_files (
bool, 기본값은True) — shards에 파일 바이트를 임베드할지 여부입니다. 구체적으로, push를 수행하기 전에 다음 유형의 필드에 대해 다음 작업을 수행합니다: - num_proc (
int, 선택 사항, 기본값None) — 데이터셋을 준비하고 업로드할 때 사용할 프로세스 수입니다. 데이터셋이 많은 샘플과 변환으로 구성되어 있을 때 유용합니다. HF로의 빠른 업로드를 위한 rust 클라이언트인 hf_xet과 함께 작동하도록 “spawn” 컨텍스트를 사용합니다. 멀티프로세싱은 기본적으로 비활성화되어 있습니다.
Parquet 데이터셋으로 Hub에 데이터셋을 업로드합니다. 데이터셋은 HTTP 요청을 통해 업로드되며, git 또는 git-lfs가 설치되어 있지 않아도 됩니다.
생성된 Parquet 파일은 기본적으로 자체 포함(self-contained)됩니다. 데이터셋에 Image, Audio 또는 Video 데이터가 포함된 경우, Parquet 파일에는 이미지 또는 오디오 파일의 바이트가 저장됩니다.
embed_external_files를 False로 설정하여 이 기능을 비활성화할 수 있습니다.
예:
>>> dataset.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset.push_to_hub("<organization>/<dataset_id>", num_shards=1024)데이터셋에 여러 스플릿(예: train/validation/test)이 있는 경우:
>>> train_dataset.push_to_hub("<organization>/<dataset_id>", split="train")
>>> val_dataset.push_to_hub("<organization>/<dataset_id>", split="validation")
>>> # later
>>> dataset = load_dataset("<organization>/<dataset_id>")
>>> train_dataset = dataset["train"]
>>> val_dataset = dataset["validation"]데이터셋에 새로운 구성(또는 부분 집합)을 추가하려면(예: 데이터셋에 여러 작업/버전/언어가 있는 경우):
>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")dataset의 state_dict를 로드합니다. 반복은 상태가 저장된 시점의 다음 예제부터 다시 시작됩니다.
Resuming은 체크포인트가 저장된 위치에서 정확히 이어서 실행되지만, 다음 두 가지 경우를 제외합니다:
- shuffle buffers에서 가져온 예제는 재개 시 손실되며, 버퍼에는 새로운 데이터로 다시 채워집니다
.with_format(arrow)와 배치된.map()의 조합은 배치 하나를 건너뛸 수 있습니다.
예:
>>> from datasets import Dataset, concatenate_datasets
>>> ds = Dataset.from_dict({"a": range(6)}).to_iterable_dataset(num_shards=3)
>>> for idx, example in enumerate(ds):
... print(example)
... if idx == 2:
... state_dict = ds.state_dict()
... print("checkpoint")
... break
>>> ds.load_state_dict(state_dict)
>>> print(f"restart from checkpoint")
>>> for example in ds:
... print(example)다음과 같은 값을 반환합니다:
{'a': 0}
{'a': 1}
{'a': 2}
checkpoint
restart from checkpoint
{'a': 3}
{'a': 4}
{'a': 5}>>> from torchdata.stateful_dataloader import StatefulDataLoader
>>> ds = load_dataset("deepmind/code_contests", streaming=True, split="train")
>>> dataloader = StatefulDataLoader(ds, batch_size=32, num_workers=4)
>>> # checkpoint
>>> state_dict = dataloader.state_dict() # uses ds.state_dict() under the hood
>>> # resume from checkpoint
>>> dataloader.load_state_dict(state_dict) # uses ds.load_state_dict() under the hood데이터셋의 현재 state_dict를 가져옵니다. 마지막으로 yield한 예시 시점의 상태에 해당합니다.
Resuming은 체크포인트가 저장된 위치에서 정확히 이어서 실행되지만, 다음 두 가지 경우를 제외합니다:
- shuffle buffers에서 가져온 예제는 재개 시 손실되며, 버퍼에는 새로운 데이터로 다시 채워집니다
.with_format(arrow)와 배치된.map()의 조합은 배치 하나를 건너뛸 수 있습니다.
예:
>>> from datasets import Dataset, concatenate_datasets
>>> ds = Dataset.from_dict({"a": range(6)}).to_iterable_dataset(num_shards=3)
>>> for idx, example in enumerate(ds):
... print(example)
... if idx == 2:
... state_dict = ds.state_dict()
... print("checkpoint")
... break
>>> ds.load_state_dict(state_dict)
>>> print(f"restart from checkpoint")
>>> for example in ds:
... print(example)다음과 같은 값을 반환합니다:
{'a': 0}
{'a': 1}
{'a': 2}
checkpoint
restart from checkpoint
{'a': 3}
{'a': 4}
{'a': 5}>>> from torchdata.stateful_dataloader import StatefulDataLoader
>>> ds = load_dataset("deepmind/code_contests", streaming=True, split="train")
>>> dataloader = StatefulDataLoader(ds, batch_size=32, num_workers=4)
>>> # checkpoint
>>> state_dict = dataloader.state_dict() # uses ds.state_dict() under the hood
>>> # resume from checkpoint
>>> dataloader.load_state_dict(state_dict) # uses ds.load_state_dict() under the hood데이터셋의 모든 메타데이터를 포함하는 DatasetInfo 객체.
명명된 데이터셋 분할에 해당하는 NamedSplit 객체.
from_csv
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = False**kwargs )
매개변수
- path_or_paths (
path-like또는path-like목록) — CSV 파일의 경로입니다. - split (NamedSplit, 선택 사항) — 데이터셋에 할당할 분할 이름.
- features (Features, 선택 사항) — Dataset의 features입니다.
- keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - **kwargs (추가 키워드 인자) —
pandas.read_csv에 전달할 키워드 인자입니다.
CSV 파일에서 IterableDataset을(를) 생성합니다.
from_json
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = Falsefield: typing.Optional[str] = None**kwargs )
매개변수
- path_or_paths (
path-like또는path-like목록) — JSON 또는 JSON Lines 파일의 경로입니다. - split (NamedSplit, 선택 사항) — 데이터셋에 할당할 분할 이름.
- features (Features, 선택 사항) — Dataset의 features입니다.
- keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - field (
str, 선택 사항) — 데이터셋이 포함된 JSON 파일의 필드 이름입니다. - **kwargs (추가 키워드 인자) —
JsonConfig에 전달할 키워드 인자입니다.
JSON 또는 JSON Lines 파일에서 IterableDataset을 생성합니다.
from_parquet
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = Falsecolumns: typing.Optional[list[str]] = Nonefilters: typing.Union[pyarrow._compute.Expression, list[tuple], list[list[tuple]], NoneType] = Nonefragment_scan_options: typing.Optional[pyarrow._dataset_parquet.ParquetFragmentScanOptions] = Noneon_bad_files: typing.Literal['error', 'warn', 'skip'] = 'error'**kwargs )
매개변수
- path_or_paths (
path-like또는path-like목록) — Parquet 파일의 경로입니다. - split (
NamedSplit, 선택 사항) — 데이터셋에 할당할 분할 이름. - features (
Features, 선택 사항) — Dataset의 features입니다. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - columns (
List[str], 선택 사항) —None이 아닌 경우, 파일에서 이 컬럼만 읽습니다. 컬럼 이름은 중첩 필드의 접두사일 수 있습니다. 예를 들어 ‘a’를 지정하면 ‘a.b’, ‘a.c’, ‘a.d.e’가 선택됩니다. - filters (
Union[pyarrow.dataset.Expression, list[tuple], list[list[tuple]]], 선택 사항) — 필터와 일치하는 행만 반환합니다. 가능하면 데이터 소스에서 발견되는 파티션 정보나 내부 메타데이터(예: Parquet 통계)를 활용하기 위해 조건을 아래로 전달(push down)합니다. 그렇지 않으면 RecordBatches를 반환하기 전에 로드된 RecordBatches를 필터링합니다. - fragment_scan_options (
pyarrow.dataset.ParquetFragmentScanOptions, 선택 사항) — Parquet 조각에 대한 스캔 전용 옵션입니다. 버퍼링 및 캐싱을 구성하는 데 특히 유용합니다.4.2.0에 추가
- on_bad_files (
Literal["error", "warn", "skip"], 선택 사항, 기본값은 “error”입니다) — 잘못된 파일(읽을 수 없는 파일)을 만나면 수행할 작업을 지정합니다. 허용되는 값은 다음과 같습니다:- ‘error’, 잘못된 파일이 발견되면 예외를 발생시킵니다.
- ‘warn’은 잘못된 파일이 발견되면 경고를 표시하고 해당 파일을 건너뜁니다.
- ‘skip’, 발견 시 경고나 예외를 발생시키지 않고 잘못된 파일을 건너뜁니다.
4.2.0에 추가
- **kwargs (추가 키워드 인자) —
ParquetConfig에 전달할 키워드 인자입니다.
Parquet 파일에서 IterableDataset를 생성합니다.
from_text
< source >( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = Falsekeep_linebreaks: bool = Falsesample_by: typing.Literal['line', 'paragraph', 'document'] = 'line'**kwargs )
매개변수
- path_or_paths (
path-like또는path-like목록) — 텍스트 파일의 경로입니다. - split (
NamedSplit, 선택 사항) — 데이터셋에 할당할 분할 이름. - features (
Features, 선택 사항) — Dataset의 features입니다. - keep_in_memory (
bool, 기본값False) — 메모리에 데이터를 복사할지 여부. - keep_linebreaks — (
bool, 기본값 False): 줄바꿈을 유지할지 여부. - sample_by (
Literal["line", "paragraph", "document"], 기본값 “line”) — 데이터를 줄, 단락 또는 문서 단위로 로드할지 여부입니다. 기본적으로 데이터셋의 한 행 = 한 줄입니다. - **kwargs (추가 키워드 인자) —
TextConfig에 전달할 키워드 인자입니다.
텍스트 파일에서 IterableDataset을(를) 생성합니다.
class datasets.IterableColumn
< source >( source: typing.Union[ForwardRef('IterableDataset'), ForwardRef('IterableColumn')]column_name: str )
IterableDataset의 특정 열에 대한 반복 가능한 객체입니다.
예:
IterableDatasetDict
키로 분할 이름(예: ‘train’, ‘test’)을, 값으로 IterableDataset 객체를 가지는 딕셔너리
map
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_split: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: int = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonefn_kwargs: typing.Optional[dict] = None )
매개변수
- function (
Callable, 선택 사항, 기본값은None) — 데이터셋을 반복할 때 예제에 즉시 적용되는 함수입니다. 다음 중 하나의 서명을 가져야 합니다:batched=False이고with_indices=False인 경우function(example: Dict[str, Any]) -> Dict[str, Any]batched=False이고with_indices=True인 경우function(example: Dict[str, Any], idx: int) -> Dict[str, Any]batched=True이고with_indices=False인 경우function(batch: Dict[str, list]) -> Dict[str, list]function(batch: Dict[str, list], indices: list[int]) -> Dict[str, list](단,batched=True이고with_indices=True인 경우)
고급 사용의 경우, 이 함수는
pyarrow.Table를 반환할 수도 있습니다. 함수가 비동기(asynchronous)인 경우,map는 사용자의 함수를 병렬로 실행합니다. 또한 함수가 아무것도 반환하지 않는 경우(None),map는 사용자의 함수를 실행하고 데이터셋을 변경하지 않은 상태로 반환합니다. 함수가 제공되지 않으면, 항등 함수(identity function)인lambda x: x를 기본값으로 사용합니다. - with_indices (
bool, 기본값False) —function에 예시 인덱스를 제공합니다. 이 경우function의 시그니처는def function(example, idx[, rank]): ...여야 합니다. - input_columns (
[Union[str, list[str]]], 선택 사항, 기본값None) —function에 위치 인수로 전달할 열입니다.None인 경우, 모든 포맷된 열에 대한 dict 매핑이 하나의 인수로 전달됩니다. - batched (
bool, 기본값False) —function에 예시 배치(batch)를 제공합니다. - batch_size (
int, 선택 사항, 기본값1000) —batched=True인 경우function에 전달되는 배치당 예제 수. - drop_last_batch (
bool, 기본값False) —batch_size보다 작은 마지막 배치에 대해 함수로 처리하는 대신 버릴지 여부. - remove_columns (
[list[str]], 선택 사항, 기본값None) — 매핑을 수행하는 동안 선택된 컬럼을 제거합니다. 컬럼은function의 출력으로 예시를 업데이트하기 전에 제거되므로,function이remove_columns에 포함된 이름의 컬럼을 추가하는 경우 해당 컬럼은 유지됩니다. - fn_kwargs (
Dict, 선택 사항, 기본값None) —function에 전달할 키워드 인자
반복 가능한 데이터셋의 모든 예시(개별 또는 배치 단위)에 함수를 적용하여 예시를 업데이트합니다. 함수가 이미 존재하는 컬럼을 반환하면 해당 컬럼을 덮어씁니다. 함수는 데이터셋을 반복할 때 예시에 즉시(on-the-fly) 적용됩니다. 변환은 데이터셋 딕셔너리의 모든 데이터셋에 적용됩니다.
batched 매개변수를 사용하여 함수가 배치 처리되어야 하는지 여부를 지정할 수 있습니다:
False인 경우, 이 함수는 1개의 예시를 입력으로 받아 1개의 예시를 반환해야 합니다. 예시는 사전(dictionary)이며, 예를 들어{"text": "Hello there !"}과 같습니다.True이고batch_size가 1인 경우, 이 함수는 1개의 예시로 구성된 배치로 입력을 받아 1개 이상의 예시로 구성된 배치를 반환할 수 있습니다. 배치는 사전(dictionary)이며, 예를 들어 1개의 예시로 구성된 배치는{"text": ["Hello there !"]}입니다.True이고batch_size가n> 1인 경우, 이 함수는n개의 예시로 구성된 배치(batch)를 입력으로 받아n개의 예시로 구성된 배치 또는 임의의 개수의 예시로 구성된 배치를 반환할 수 있습니다. 마지막 배치에는n개보다 적은 예시가 포함될 수 있습니다. 배치는 사전(dictionary)이며, 예를 들어n개의 예시로 구성된 배치는{"text": ["Hello there !"] * n}입니다.
함수가 비동기(asynchronous)인 경우, map은 최대 1,000개의 동시 호출을 허용하면서 함수를 병렬로 실행합니다.
동시에 실행될 수 있는 작업의 최대 수를 설정하려면 함수에서 asyncio.Semaphore를 사용하는 것이 권장됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> def add_prefix(example):
... example["text"] = "Review: " + example["text"]
... return example
>>> ds = ds.map(add_prefix)
>>> next(iter(ds["train"]))
{'label': 1,
'text': 'Review: the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}필터
< source >( function: typing.Optional[typing.Callable] = Nonewith_indices = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = None )
매개변수
- function (
Callable) — 다음 중 하나의 시그니처를 가진 Callable입니다:with_indices=False, batched=False인 경우function(example: Dict[str, Any]) -> boolfunction(example: Dict[str, Any], indices: int) -> boolifwith_indices=True, batched=Falsewith_indices=False, batched=True인 경우function(example: Dict[str, list]) -> list[bool]function(example: Dict[str, list], indices: list[int]) -> list[bool]ifwith_indices=True, batched=True
함수가 제공되지 않으면 항상 True를 반환하는 함수가 기본값으로 사용됩니다:
lambda x: True. - with_indices (
bool, 기본값False) —function에 예시 인덱스를 제공합니다. 이 경우function의 시그니처는def function(example, idx): ...여야 합니다. - input_columns (
str또는list[str], 선택 사항) —function에 위치 인수로 전달할 열입니다.None인 경우, 모든 포맷된 열에 대한 dict 매핑이 하나의 인수로 전달됩니다. - batched (
bool, 기본값False) —function에 예시 배치(batch)를 제공합니다 - batch_size (
int, 선택 사항, 기본값1000) —batched=True인 경우function에 전달되는 배치당 예제 수. - fn_kwargs (
Dict, 선택 사항, 기본값None) —function에 전달할 키워드 인자
필터 함수를 모든 요소에 적용하여 데이터셋이 필터 함수에 따라 예시를 포함하도록 합니다. 필터링은 데이터셋을 반복할 때 실시간으로 수행됩니다. 필터링은 데이터셋 딕셔너리의 모든 데이터셋에 적용됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.filter(lambda x: x["label"] == 0)
>>> list(ds["train"].take(3))
[{'label': 0, 'text': 'Review: simplistic , silly and tedious .'},
{'label': 0,
'text': "Review: it's so laddish and juvenile , only teenage boys could possibly find it funny ."},
{'label': 0,
'text': 'Review: exploitative and largely devoid of the depth or sophistication that would make watching such a graphic treatment of the crimes bearable .'}]shuffle
< source >( seed = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonebuffer_size: int = 1000max_buffer_input_shards: int = 10 )
매개변수
- seed (
int, 선택 사항, 기본값None) — 데이터셋을 섞는 데 사용할 무작위 시드입니다. 셔플 버퍼에서 샘플링할 때와 데이터 샤드를 섞을 때 사용됩니다. - generator (
numpy.random.Generator, 선택 사항) — 데이터셋 행의 순열을 계산하는 데 사용할 Numpy random Generator입니다.generator=None(기본값)인 경우,np.random.default_rng(NumPy의 기본 BitGenerator(PCG64))를 사용합니다. - buffer_size (
int, 기본값1000) — 버퍼의 크기입니다. - max_buffer_input_shards (
int, 기본값10) — 버퍼에 한 번에 공급할 최대 샤드 수입니다.
이 데이터셋의 요소를 무작위로 섞습니다. 섞기 작업은 데이터셋 사전의 모든 데이터셋에 적용됩니다.
이 데이터셋은 버퍼에 buffer_size개의 요소를 채운 후, 이 버퍼에서 요소를 무작위로 샘플링하여 선택된 요소를 새로운 요소로 대체합니다. 완벽한 셔플링을 위해서는 데이터셋 전체 크기와 같거나 큰 버퍼 크기가 필요합니다.
예를 들어, 데이터셋에 10,000개의 요소가 있지만 buffer_size가 1000으로 설정되어 있다면, shuffle은 처음에 버퍼의 첫 1000개 요소 중에서만 무작위로 요소를 선택합니다. 요소가 선택되면, 버퍼 내 해당 요소의 공간은 다음(즉, 1,001번째) 요소로 대체되어 1000개 요소의 버퍼가 유지됩니다.
데이터셋이 여러 개의 샤드로 구성되어 있는 경우, 샤드의 순서도 shuffle합니다.
하지만 skip() 또는 take()를 사용하여 순서가 고정된 경우, 샤드의 순서는 변경되지 않습니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> list(ds["train"].take(3))
[{'label': 1,
'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
{'label': 1,
'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
{'label': 1, 'text': 'effective but too-tepid biopic'}]
>>> ds = ds.shuffle(seed=42)
>>> list(ds["train"].take(3))
[{'label': 1,
'text': "a sports movie with action that's exciting on the field and a story you care about off it ."},
{'label': 1,
'text': 'at its best , the good girl is a refreshingly adult take on adultery . . .'},
{'label': 1,
'text': "sam jones became a very lucky filmmaker the day wilco got dropped from their record label , proving that one man's ruin may be another's fortune ."}]with_format
< source >( type: typing.Optional[str] = None )
지정한 형식의 데이터셋을 반환합니다.
예:
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation", streaming=True)
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds = ds.with_format("torch")
>>> next(iter(ds))
{'text': 'compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
'label': tensor(1),
'input_ids': tensor([ 101, 18027, 16310, 16001, 1103, 9321, 178, 11604, 7235, 6617,
1742, 2165, 2820, 1206, 6588, 22572, 12937, 1811, 2153, 1105,
1147, 12890, 19587, 6463, 1105, 15026, 1482, 119, 102, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0]),
'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])}캐스트
< source >( features: Features ) → IterableDatasetDict
데이터셋을 새로운 기능 집합으로 캐스팅합니다. 타입 캐스팅은 데이터셋 사전의 모든 데이터셋에 적용됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds["train"].features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}cast_column
< source >( column: strfeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure] )
디코딩을 위해 컬럼을 feature로 캐스팅합니다. 타입 캐스팅은 dataset dictionary의 모든 dataset에 적용됩니다.
예:
>>> from datasets import load_dataset, ClassLabel
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> ds = ds.cast_column('label', ClassLabel(names=['bad', 'good']))
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('string')}remove_columns
< source >( column_names: typing.Union[str, list[str]] ) → IterableDatasetDict
매개변수
제거할 열이 없는 dataset 객체의 복사본입니다.
데이터셋에서 하나 이상의 컬럼과 해당 컬럼에 연관된 features를 제거합니다. 제거 작업은 데이터셋을 반복할 때 예제에 대해 실시간으로 수행됩니다. 제거 작업은 dataset dictionary의 모든 데이터셋에 적용됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.remove_columns("label")
>>> next(iter(ds["train"]))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}rename_column
< source >( original_column_name: strnew_column_name: str ) → IterableDatasetDict
매개변수
열 이름이 변경된 데이터셋의 복사본.
dataset의 컬럼을 이름 변경하고, 원래 컬럼에 연결된 features를 새 컬럼 이름 아래로 이동합니다. 이름 변경은 dataset dictionary의 모든 dataset에 적용됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.rename_column("text", "movie_review")
>>> next(iter(ds["train"]))
{'label': 1,
'movie_review': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}dataset의 여러 열 이름을 변경하고, 원래 열에 연결된 기능을 새 열 이름 아래로 이동합니다. 이름 변경은 dataset 사전의 모든 dataset에 적용됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.rename_columns({"text": "movie_review", "label": "rating"})
>>> next(iter(ds["train"]))
{'movie_review': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
'rating': 1}select_columns
< source >( column_names: typing.Union[str, list[str]] ) → IterableDatasetDict
매개변수
선택된 열만 포함된 dataset 객체의 복사본입니다.
데이터셋에서 하나 이상의 열과 해당 열에 연관된 features를 선택합니다. 선택은 데이터셋을 반복할 때 예제에 실시간으로 적용됩니다. 선택은 데이터셋 사전의 모든 데이터셋에 적용됩니다.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.select("text")
>>> next(iter(ds["train"]))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}push_to_hub
< source >( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[dict[str, int]] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )
매개변수
- repo_id (
str) — 다음 형식으로 push할 저장소의 ID입니다:<user>/<dataset_name>또는<org>/<dataset_name>. 또한<dataset_name>, 도 허용되며, 이 경우 로그인한 사용자의 namespace가 기본값으로 사용됩니다.또한 버킷 내부의 위치일 수도 있습니다. 예:
buckets/<user_or_org>/<bucket_name>/... - config_name (
str) — 데이터셋의 구성 이름입니다. 기본값은 “default”입니다. - set_default (
bool, 선택 사항) — 이 구성을 기본 구성으로 설정할지 여부입니다. 그렇지 않으면 기본 구성은 “default”로 지정된 구성입니다. - data_dir (
str, 선택 사항) — 업로드된 데이터 파일을 포함할 디렉터리 이름. 기본값은config_name이 “default”와 다르면 해당 값, 아니면 “data”입니다.2.17.0에 추가
- commit_message (
str, 선택 사항) — push할 때 사용할 커밋 메시지입니다. 기본값은"Upload dataset"입니다. - commit_description (
str, 선택 사항) — 생성될 커밋에 대한 설명입니다. PR이 생성되는 경우 PR에 대한 설명이기도 합니다(create_prTrue인 경우).2.16.0에 추가
- private (
bool, 선택 사항) — 리포지토리를 비공개로 만들지 여부를 지정합니다.None(기본값)인 경우, 조직의 기본 설정이 비공개가 아닌 한 리포지토리는 공개됩니다. 이미 리포지토리가 존재하면 이 값은 무시됩니다. - token (
str, 선택) — Hugging Face Hub에 대한 선택적 인증 토큰입니다. 토큰이 전달되지 않으면hf auth login으로 로그인할 때 로컬에 저장된 토큰을 기본값으로 사용합니다. 토큰이 전달되지 않고 사용자가 로그인되지 않은 경우 오류가 발생합니다. - revision (
str, 선택 사항) — 업로드된 파일을 푸시할 브랜치입니다. 기본값은"main"브랜치입니다. - create_pr (
bool, 선택 사항, 기본값False) — 업로드된 파일로 PR을 생성할지 아니면 직접 커밋할지 여부. - max_shard_size (
int또는str, 선택 사항) — 허브에 업로드할 데이터셋 샤드의 최대 크기를 선택적으로 지정합니다. 문자열로 표현할 경우, 숫자 뒤에 단위(예:"500MB"또는"1GB")가 따라야 합니다. 값을 제공하지 않으면 각 split은 데이터셋의 기본 샤드 수를 유지합니다. - num_shards (
Dict[str, int], 선택 사항) — 쓰기 위한 샤드 수. 각 split에 대해 서로 다른num_shards를 정의하려면 딕셔너리를 사용하세요.max_shard_size가 제공되고 해당 split의num_shards가 제공되지 않으면, 해당 split의 샤드 수는max_shard_size에서 추정됩니다. - embed_external_files (
bool, 기본값은True) — shards에 파일 바이트를 임베드할지 여부입니다. 구체적으로, push를 수행하기 전에 다음 유형의 필드에 대해 다음 작업을 수행합니다: - num_proc (
int, 선택 사항, 기본값은None) — 데이터셋을 준비하고 업로드할 때 사용할 프로세스 수입니다. 데이터셋에 샘플이나 임베드할 미디어 파일이 많을 때 유용합니다. HF로의 빠른 업로드를 위한 Rust 클라이언트인 hf_xet과 함께 작동하도록 “spawn” 컨텍스트를 사용합니다. 기본적으로 멀티프로세싱이 비활성화되어 있습니다.4.0.0에 추가
IterableDatasetDict를 Parquet 데이터셋으로 hub에 업로드합니다. IterableDatasetDict는 HTTP 요청을 통해 업로드되며, git 또는 git-lfs가 설치되어 있지 않아도 됩니다.
각 데이터셋 분할은 독립적으로 push됩니다. push된 데이터셋은 원래의 분할 이름을 유지합니다.
생성된 Parquet 파일은 기본적으로 자체 포함(self-contained)됩니다. 데이터셋에 Image 또는 Audio 데이터가 포함된 경우, Parquet 파일에 이미지 또는 오디오 파일의 바이트가 저장됩니다.
embed_external_files를 False로 설정하여 이 기능을 비활성화할 수 있습니다.
예:
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", num_shards={"train": 1024, "test": 8})데이터셋에 새로운 구성(또는 부분 집합)을 추가하려면(예: 데이터셋에 여러 작업/버전/언어가 있는 경우):
>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")기능
데이터셋의 내부 구조를 정의하는 특수한 사전입니다.
dict[str, FieldType] 타입의 딕셔너리로 초기화되며, 키는 원하는 열 이름이고 값은 해당 열의 타입입니다.
FieldType는 다음 중 하나일 수 있습니다:
- Value 기능은
int64또는string과 같은 단일 데이터 타입 값을 지정합니다. - ClassLabel 기능은 라벨을 연결할 수 있는 미리 정의된 클래스 집합을 지정하며, 데이터셋에서는 정수 형태로 저장됩니다.
- Python
dict는 하위 필드에서 하위 기능으로의 매핑을 포함하는 복합 기능을 지정합니다. 임의의 방식으로 중첩된 필드의 중첩된 필드를 가질 수 있습니다. - List 또는 LargeList는 동일한 feature 유형을 가진 서브-feature의 시퀀스를 포함하는 복합 feature를 지정합니다.
- 다차원 배열을 위한 Array2D, Array3D, Array4D 또는 Array5D 기능.
- 오디오 파일을 가리키는 절대 경로 또는 오디오 파일의 상대 경로(“path” 키)와 바이트 콘텐츠(“bytes” 키)를 담은 사전 형태의 Audio 기능입니다. 이 기능은 디코더를 사용해 오디오를 지연 로드합니다.
np.ndarray객체,PIL.Image.Image객체 또는 이미지 파일의 상대 경로(“path” 키)와 바이트 콘텐츠(“bytes” 키)를 가진 딕셔너리를 저장하는 Image 기능. 이 기능은 이미지 데이터를 추출합니다.- Video 기능은 비디오 파일의 절대 경로,
torchcodec.decoders.VideoDecoder객체, 또는 비디오 파일의 상대 경로(“path” 키)와 바이트 콘텐츠(“bytes” 키)를 포함하는 사전 중 하나를 저장합니다. 이 기능은 디코더를 사용하여 비디오를 지연 로드합니다. - PDF 파일을 가리키는 절대 경로,
pdfplumber.pdf.PDF객체, 또는 PDF 파일의 상대 경로(“path” 키)와 바이트 콘텐츠(“bytes” 키)를 담은 사전 형태의 Pdf 기능을 제공합니다. 이 기능은 PDF 리더를 사용하여 PDF를 지연 로드합니다. - Nifti 기능은 NIfTI 신경영상 파일의 절대 경로,
nibabel.Nifti1Image객체, 또는 NIfTI 파일의 상대 경로(“path” 키)와 바이트 콘텐츠(“bytes” 키)를 가진 딕셔너리를 저장합니다. 이 기능은 nibabel을 사용하여 NIfTI 파일을 지연 로드합니다. - 기계 번역에 특화된 Translation 또는 TranslationVariableLanguages 기능입니다.
- Json 기능은 혼합/임의의 타입을 포함하는 비정형 데이터를 저장하는 데 사용됩니다. 내부적으로
Features의 깊은 복사본을 만듭니다.
decode_batch
< source >( batch: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
커스텀 특징 디코딩을 사용하여 배치 디코딩.
decode_column
< source >( column: listcolumn_name: strtoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
사용자 정의 기능 디코딩으로 컬럼 디코딩.
decode_example
< source >( example: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
사용자 정의 기능 디코딩을 사용한 디코딩 예제
배치를 Arrow 형식으로 인코딩합니다.
encode_column
< source >( columncolumn_name: str )
Arrow 형식으로 컬럼을 인코딩합니다.
Arrow 형식으로 예시를 인코딩합니다.
특징을 평탄화합니다. 모든 딕셔너리 열이 제거되고, 해당 열에 포함된 모든 하위 필드로 대체됩니다. 새 필드는 원래 열 이름과 하위 필드 이름을 <original>.<subfield> 형식으로 연결하여 이름이 지정됩니다.
컬럼에 중첩된 사전이 포함된 경우, 하위 수준의 모든 서브필드 이름도 연결되어 새로운 컬럼을 형성합니다: <original>.<subfield>.<subsubfield> 등.
예:
>>> from datasets import load_dataset
>>> ds = load_dataset("rajpurkar/squad", split="train")
>>> ds.features.flatten()
{'answers.answer_start': List(Value('int32'), id=None),
'answers.text': List(Value('string'), id=None),
'context': Value('string'),
'id': Value('string'),
'question': Value('string'),
'title': Value('string')}Arrow Schema에서 Features를 구성합니다. Hugging Face Datasets의 features에 대한 스키마 메타데이터도 확인합니다. Null이 아닌 필드는 지원되지 않으며 nullable로 설정됩니다.
또한, pa.dictionary는 지원되지 않으며 대신 기본 유형을 사용합니다. 따라서 datasets는 DictionaryArray 객체를 실제 값으로 변환합니다.
dict에서 [Features]를 구성합니다.
시리얼라이즈 해제된 dict에서 중첩된 feature 객체를 재생성합니다. feature FieldType의 dataclass 이름을 추론하기 위해 _type 키를 사용합니다.
시리얼라이즈된 JSON 딕셔너리에서 기능을 정의하기 위한 편리한 생성자 구문을 제공합니다. 이 함수는 특히 JSON 객체로 덤프된 [DatasetInfo]를 디시리얼라이즈할 때 사용됩니다. 이는 [Features.from_arrow_schema]의 유사체로, 재귀적인 필드별 인스턴스화를 처리하지만, [Value]가 자동으로 수행하는 pyarrow 원시 dtype 매핑을 활용한다는 점을 제외하고는 pyarrow로의 매핑이 필요하지 않습니다.
Features 필드를 다른 Features의 필드 순서와 일치하도록 재배열합니다.
필드의 순서는 중요한데, 이는 기반이 되는 arrow 데이터에 영향을 미치기 때문입니다. 필드의 순서를 다시 정하면 기반이 되는 arrow 데이터 타입을 일치시킬 수 있습니다.
예:
>>> from datasets import Features, List, Value
>>> # let's say we have two features with a different order of nested fields (for a and b for example)
>>> f1 = Features({"root": {"a": Value("string"), "b": Value("string")}})
>>> f2 = Features({"root": {"b": Value("string"), "a": Value("string")}})
>>> assert f1.type != f2.type
>>> # re-ordering keeps the base structure (here List is defined at the root level), but makes the fields order match
>>> f1.reorder_fields_as(f2)
{'root': List({'b': Value('string'), 'a': Value('string')})}
>>> assert f1.reorder_fields_as(f2).type == f2.type스칼라
class datasets.Value
< source >( dtype: strid: typing.Optional[str] = None )
특정 데이터 유형의 스칼라 특징 값.
Value의 가능한 dtype은 다음과 같습니다:
nullboolint8int16int32int64uint8uint16uint32uint64float16float32(float의 별칭)float64(double의 별칭)time32[(s|ms)]time64[(us|ns)]timestamp[(s|ms|us|ns)]timestamp[(s|ms|us|ns), tz=(tzstring)]date32date64duration[(s|ms|us|ns)]decimal128(precision, scale)decimal256(precision, scale)binarylarge_binarybinary_viewstringlarge_stringstring_view
class datasets.ClassLabel
< source >( num_classes: dataclasses.InitVar[typing.Optional[int]] = Nonenames: list = Nonenames_file: dataclasses.InitVar[typing.Optional[str]] = Noneid: typing.Optional[str] = None )
정수 클래스 라벨에 대한 기능 유형.
ClassLabel을 정의하는 방법은 3가지이며, 이는 3개의 인수에 해당합니다:
num_classes: 0부터 (num_classes-1)까지의 라벨을 생성합니다.names: 라벨 문자열 목록.names_file: 라벨 목록을 포함하는 파일.
내부적으로 라벨은 정수로 저장됩니다. -1을 사용하여 알려지지 않거나 누락된 라벨을 나타낼 수 있습니다.
예:
>>> from datasets import Features, ClassLabel
>>> features = Features({'label': ClassLabel(num_classes=3, names=['bad', 'ok', 'good'])})
>>> features
{'label': ClassLabel(names=['bad', 'ok', 'good'])}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.IntegerArray] ) → pa.Int64Array
Arrow 배열을 ClassLabel arrow 저장 유형으로 캐스팅합니다.
ClassLabel pyarrow 저장 유형으로 변환할 수 있는 Arrow 유형은 다음과 같습니다:
pa.string()pa.int()
integer => 클래스 이름 string 변환.
알 수 없거나 누락된 라벨에 대해: 음의 정수를 전달하면 ValueError가 발생합니다.
변환 클래스 이름 string => integer.
복합
class datasets.LargeList
< source >( feature: typing.Anyid: typing.Optional[str] = None )
자식 feature 데이터 타입으로 구성된 큰 목록 데이터의 feature 타입.
pyarrow.LargeListType에 의해 뒷받침되며, 이는 pyarrow.ListType와 유사하지만 오프셋이 32비트가 아닌 64비트입니다.
class datasets.List
< source >( feature: typing.Anylength: int = -1id: typing.Optional[str] = None )
자식 feature 데이터 타입으로 구성된 큰 목록 데이터의 feature 타입.
pyarrow.ListType에 기반하며, 32비트 오프셋 또는 고정 길이를 사용합니다.
class datasets.Sequence
< source >( feature = Nonelength = -1**kwargs )
Sequence는 내부 딕셔너리 특징을 리스트의 딕셔너리로 자동으로 변환하는 유틸리티입니다. 이 동작은 TensorFlow Datasets 라이브러리와의 호환성 계층을 위해 구현되었지만, 일부 경우에는 원치 않는 동작일 수 있습니다. 이 동작을 원하지 않는 경우 Sequence 대신 List 또는 LargeList를 사용할 수 있습니다.
번역
class datasets.Translation
< source >( languages: listid: typing.Optional[str] = None )
Feature는 예시별로 고정된 언어를 사용하는 번역에 사용됩니다.
여기서는 tfds와의 호환성을 위해 사용됩니다.
예:
>>> # At construction time:
>>> datasets.features.Translation(languages=['en', 'fr', 'de'])
>>> # During data generation:
>>> yield {
... 'en': 'the cat',
... 'fr': 'le chat',
... 'de': 'die katze'
... }Translation 기능을 사전으로 평탄화합니다.
class datasets.TranslationVariableLanguages
< source >( languages: typing.Optional[list] = Nonenum_languages: typing.Optional[int] = Noneid: typing.Optional[str] = None ) →
language or translation (variable-length 1D tf.Tensor of tf.string)
예제별로 언어가 달라지는 번역을 위한 Feature.
여기서는 tfds와의 호환성을 위해 사용됩니다.
예:
>>> # At construction time:
>>> datasets.features.TranslationVariableLanguages(languages=['en', 'fr', 'de'])
>>> # During data generation:
>>> yield {
... 'en': 'the cat',
... 'fr': ['le chat', 'la chatte,']
... 'de': 'die katze'
... }
>>> # Tensor returned :
>>> {
... 'language': ['en', 'de', 'fr', 'fr'],
... 'translation': ['the cat', 'die katze', 'la chatte', 'le chat'],
... }TranslationVariableLanguages 기능을 사전으로 평탄화합니다.
배열
class datasets.Array2D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
2차원 배열을 생성합니다.
class datasets.Array3D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
3차원 배열을 생성합니다.
class datasets.Array4D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
4차원 배열을 생성합니다.
class datasets.Array5D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
5차원 배열을 생성합니다.
오디오
class datasets.Audio
< source >( sampling_rate: typing.Optional[int] = Nonedecode: bool = Truenum_channels: typing.Optional[int] = Nonestream_index: typing.Optional[int] = Noneid: typing.Optional[str] = None )
매개변수
- sampling_rate (
int, 선택 사항) — 목표 샘플링 레이트입니다.None인 경우 네이티브 샘플링 레이트가 사용됩니다. - num_channels (
int, 선택 사항) — 샘플의 원하는 채널 수입니다. 기본적으로 소스의 채널 수가 사용됩니다. 오디오 디코딩은 (num_channels, num_samples) 모양의 샘플을 반환합니다. 현재None(소스의 채널 수, 기본값),1(모노) 또는2(스테레오) 채널이 지원됩니다.num_channels인수는torchcodec.decoders.AudioDecoder.4.4.0에 추가됨
- decode (
bool, 기본값True) — 오디오 데이터를 디코딩할지 여부입니다.False인 경우{"path": audio_path, "bytes": audio_bytes}형식의 기본 딕셔너리를 반환합니다. - stream_index (
int, 선택 사항) — 파일에서 사용할 스트리밍 인덱스입니다.None인 경우 “best” 인덱스가 기본값으로 사용됩니다.
오디오 Feature는 오디오 파일에서 오디오 데이터를 추출합니다.
Input: Audio 기능은 다음을 입력으로 받습니다:
str: 오디오 파일의 절대 경로 (즉, 랜덤 액세스가 허용됨).pathlib.Path: 오디오 파일의 경로 (즉, 랜덤 액세스가 허용됨).다음 키를 가진
dict:path: 오디오 파일의 아카이브 파일에 대한 상대 경로 문자열.bytes: 오디오 파일의 바이트 콘텐츠.
parquet 또는 webdataset 파일과 같이 오디오 파일을 내장하는 파일에 유용합니다.
다음 키를 가진
dict:array: 오디오 샘플을 포함하는 배열sampling_rate: 오디오 샘플의 샘플링 주파수에 해당하는 정수.
torchcodec.decoders.AudioDecoder: torchcodec 오디오 디코더 객체.
Output: 오디오 기능은 torchcodec.decoders.AudioDecoder 객체로 출력 데이터를 반환하며, 추가 키가 있습니다:
array: 오디오 샘플을 포함하는 배열sampling_rate: 오디오 샘플의 샘플링 주파수에 해당하는 정수.
예:
>>> from datasets import load_dataset, Audio
>>> ds = load_dataset("PolyAI/minds14", name="en-US", split="train")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=44100, num_channels=2))
>>> ds[0]["audio"]
<datasets.features._torchcodec.AudioDecoder object at 0x11642b6a0>
>>> audio = ds[0]["audio"]
>>> audio.get_samples_played_in_range(0, 10)
AudioSamples:
data (shape): torch.Size([2, 110592])
pts_seconds: 0.0
duration_seconds: 2.507755102040816
sample_rate: 44100cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
Arrow 배열을 Audio arrow 저장소 유형으로 캐스팅합니다. Audio pyarrow 저장소 유형으로 변환할 수 있는 Arrow 유형은 다음과 같습니다:
pa.string()- "path" 데이터를 포함해야 합니다pa.binary()- 오디오 바이트를 포함해야 합니다pa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- 순서는 중요하지 않습니다
decode_example
< source >( value: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
Decode example audio file into audio data.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
매개변수
- storage (
pa.StructArray) — 임베드할 PyArrow 배열. - token_per_repo_id (
dict, 선택 사항) — repo_id -> token 형식의 사전으로, 파일 바이트를 가져올 때 사용합니다. - local_files (
bool, 기본값은True) — 로컬 파일 데이터를 배열에 포함할지 여부4.8.5에 추가
- remote_files (
bool, 기본값은True) — 배열에 원격 파일 데이터를 포함할지 여부입니다. 예: hf:// 또는 https://로 시작하는 경로가 있는 파일4.8.5에 추가
반환값
pa.StructArray
Audio arrow 저장 형식의 Array, 즉
pa.struct({"bytes": pa.binary(), "path": pa.string()})
오디오 파일을 Arrow 배열에 임베드합니다.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('AudioDecoder')] ) → dict
Arrow 형식으로 예시를 인코딩합니다.
decodable 상태인 경우 오류를 발생시키고, 그렇지 않으면 feature를 dictionary로 flatten합니다.
이미지
class datasets.Image
< source >( mode: typing.Optional[str] = Nonedecode: bool = Trueid: typing.Optional[str] = None )
이미지 파일에서 이미지 데이터를 읽는 Feature입니다.
Input: Image 기능은 다음을 입력으로 받습니다:
str: 이미지 파일의 절대 경로 (즉, 랜덤 액세스가 허용됨).pathlib.Path: 이미지 파일의 경로 (즉, 랜덤 액세스가 허용됨).다음 키를 가진
dict:path: 아카이브 파일에 대한 이미지 파일의 상대 경로 문자열.bytes: 이미지 파일의 바이트.
이미지 파일을 내장하는 parquet 또는 webdataset 파일에 유용합니다.
np.ndarray: 이미지를 나타내는 NumPy 배열.PIL.Image.Image: PIL 이미지 객체.
Output: 이미지 기능은 PIL.Image.Image 객체로 출력 데이터를 반환합니다.
예:
>>> from datasets import load_dataset, Image
>>> ds = load_dataset("AI-Lab-Makerere/beans", split="train")
>>> ds.features["image"]
Image(decode=True, id=None)
>>> ds[0]["image"]
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=500x500 at 0x15E52E7F0>
>>> ds = ds.cast_column('image', Image(decode=False))
{'bytes': None,
'path': '/root/.cache/huggingface/datasets/downloads/extracted/b0a21163f78769a2cf11f58dfc767fb458fc7cea5c05dccc0144a2c0f0bc1292/train/healthy/healthy_train.85.jpg'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray
Arrow 배열을 Image arrow 저장소 유형으로 캐스팅합니다. Image pyarrow 저장소 유형으로 변환할 수 있는 Arrow 유형은 다음과 같습니다:
pa.string()- "path" 데이터를 포함해야 합니다pa.large_string()- “path” 데이터를 포함해야 합니다(가능한 경우 문자열로 변환됩니다)pa.binary()- 이미지 바이트를 포함해야 합니다pa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- 순서는 중요하지 않습니다pa.list(*)- 이미지 배열 데이터를 포함해야 합니다
decode_example
< source >( value: dicttoken_per_repo_id = None )
Decode example image file into image data.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
매개변수
- storage (
pa.StructArray) — 임베드할 PyArrow 배열. - token_per_repo_id (
dict, 선택 사항) — repo_id -> token 형식의 사전으로, 파일 바이트를 가져올 때 사용합니다. - local_files (
bool, 기본값은True) — 로컬 파일 데이터를 배열에 포함할지 여부4.8.5에 추가
- remote_files (
bool, 기본값은True) — 배열에 원격 파일 데이터를 포함할지 여부입니다. 예: hf:// 또는 https://로 시작하는 경로가 있는 파일4.8.5에 추가
반환값
pa.StructArray
Image arrow 저장 형식의 Array, 즉
pa.struct({"bytes": pa.binary(), "path": pa.string()})
이미지 파일을 Arrow 배열에 임베드합니다.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, numpy.ndarray, ForwardRef('PIL.Image.Image')] )
Arrow 형식으로 예시를 인코딩합니다.
decodable 상태인 경우 해당 feature를 그대로 반환하고, 그렇지 않으면 feature를 dictionary로 flatten합니다.
Video
class datasets.Video
< source >( decode: bool = Truestream_index: typing.Optional[int] = Nonedimension_order: typing.Literal['NCHW', 'NHWC'] = 'NCHW'num_ffmpeg_threads: int = 1device: typing.Union[str, ForwardRef('torch.device'), NoneType] = 'cpu'seek_mode: typing.Literal['exact', 'approximate'] = 'exact'id: typing.Optional[str] = None )
매개변수
- decode (
bool, 기본값True) — 비디오 데이터를 디코딩할지 여부입니다.False인 경우,{"path": video_path, "bytes": video_bytes}형식의 기본 딕셔너리를 반환합니다. - stream_index (
int, 선택 사항) — 파일에서 사용할 스트리밍 인덱스입니다.None인 경우 “best” 인덱스가 기본값으로 사용됩니다. - dimension_order (
str, 기본값NCHW) — 디코딩된 프레임의 차원 순서입니다. 여기서 N은 배치 크기, C는 채널 수, H는 프레임의 높이, W는 프레임의 너비입니다. - num_ffmpeg_threads (
int, 기본값1) — 비디오 디코딩에 사용할 스레드 수입니다. (1로 유지하는 것을 권장합니다) - device (
str또는torch.device, 기본값cpu) — 비디오를 디코딩하는 데 사용할 장치입니다. - seek_mode (
str, 기본값exact) — 프레임 접근 방식이 “exact”인지 “approximate”인지를 결정합니다. Exact는 프레임 i를 요청하면 항상 프레임 i가 반환되도록 보장하지만, 이를 위해 파일의 초기 스캔이 필요합니다. Approximate는 파일을 스캔하지 않으므로 더 빠르지만, 파일의 메타데이터를 사용하여 i의 위치를 추정하기 때문에 정확도가 낮습니다. 자세한 내용은 여기에서 확인하세요.
Feature를 사용하여 비디오 파일에서 비디오 데이터를 읽습니다.
입력: Video 기능은 다음을 입력으로 받습니다:
str: 비디오 파일의 절대 경로 (즉, 랜덤 액세스가 허용됨).pathlib.Path: 비디오 파일의 경로 (즉, 랜덤 액세스가 허용됨).다음 키를 가진
dict:path: 데이터셋 저장소에서 비디오 파일의 상대 경로를 나타내는 문자열.bytes: 비디오 파일의 바이트 수.
parquet 또는 webdataset 파일과 같이 비디오 파일을 내장하는 파일에 유용합니다.
torchcodec.decoders.VideoDecoder: torchcodec 비디오 디코더 객체.
Output: The Video features 출력 데이터는 torchcodec.decoders.VideoDecoder 객체입니다.
예:
>>> from datasets import Dataset, Video
>>> ds = Dataset.from_dict({"video":["path/to/Screen Recording.mov"]}).cast_column("video", Video())
>>> ds.features["video"]
Video(decode=True, id=None)
>>> ds[0]["video"]
<torchcodec.decoders._video_decoder.VideoDecoder object at 0x14a61e080>
>>> video = ds[0]["video"]
>>> video.get_frames_in_range(0, 10)
FrameBatch:
data (shape): torch.Size([10, 3, 50, 66])
pts_seconds: tensor([0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333,
0.4333], dtype=torch.float64)
duration_seconds: tensor([0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167,
0.0167], dtype=torch.float64)
>>> ds.cast_column('video', Video(decode=False))[0]["video]
{'bytes': None,
'path': 'path/to/Screen Recording.mov'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray
Arrow 배열을 Video arrow 저장소 유형으로 캐스팅합니다. Video pyarrow 저장소 유형으로 변환할 수 있는 Arrow 유형은 다음과 같습니다:
pa.string()- "path" 데이터를 포함해야 합니다pa.binary()- 비디오 바이트를 포함해야 합니다pa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- 순서는 중요하지 않습니다pa.list(*)- 비디오 배열 데이터를 포함해야 합니다
decode_example
< source >( value: typing.Union[str, datasets.features.video.Example]token_per_repo_id: typing.Optional[dict[str, typing.Union[bool, str]]] = None )
Decode example video file into video data.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
매개변수
- storage (
pa.StructArray) — 임베드할 PyArrow 배열. - token_per_repo_id (
dict, 선택 사항) — repo_id -> token 형식의 사전으로, 파일 바이트를 가져올 때 사용합니다. - local_files (
bool, 기본값은True) — 로컬 파일 데이터를 배열에 포함할지 여부4.8.5에 추가
- remote_files (
bool, 기본값은True) — 배열에 원격 파일 데이터를 포함할지 여부입니다. 예: hf:// 또는 https://로 시작하는 경로가 있는 파일4.8.5에 추가
반환값
pa.StructArray
Video arrow 저장 형식의 Array, 즉
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
이미지 파일을 Arrow 배열에 임베드합니다.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, datasets.features.video.Example, numpy.ndarray, ForwardRef('VideoDecoder')] )
Arrow 형식으로 예시를 인코딩합니다.
decodable 상태인 경우 해당 feature를 그대로 반환하고, 그렇지 않으면 feature를 dictionary로 flatten합니다.
메시
class datasets.Mesh
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Feature를 사용하여 파일에서 3D 메시 데이터를 읽습니다.
Input: Mesh 기능은 다음을 입력으로 받습니다:
str: 메시 파일의 절대 경로(즉, 랜덤 액세스가 허용됨).pathlib.Path: 메시 파일의 경로(즉, 랜덤 액세스가 허용됨).다음 키를 가진
dict:path: 아카이브 파일에 대한 메시 파일의 상대 경로 문자열.bytes: 메시 파일의 바이트.
parquet 또는 webdataset 파일과 같이 메시 파일을 내장하는 파일에 유용합니다.
trimesh.Trimesh또는trimesh.Scene: 3D 메시 또는 씬 객체.
Output: Mesh 기능은 데이터를 trimesh.Trimesh 또는 trimesh.Scene 객체로 출력합니다.
cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
Arrow 배열을 Mesh arrow 저장소 유형으로 캐스팅합니다. Mesh pyarrow 저장소 유형으로 변환할 수 있는 Arrow 유형은 다음과 같습니다:
pa.string()- "path" 데이터를 포함해야 합니다pa.large_string()- “path” 데이터를 포함해야 합니다(가능한 경우 문자열로 변환됩니다)pa.binary()- 메시 바이트를 포함해야 합니다pa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- 순서는 중요하지 않습니다
decode_example
< source >( value: dicttoken_per_repo_id = None )
Decode example mesh file.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
매개변수
- storage (
pa.StructArray) — 임베드할 PyArrow 배열. - token_per_repo_id (
dict, 선택 사항) — repo_id -> token 형식의 사전으로, 파일 바이트를 가져올 때 사용합니다. - local_files (
bool, 기본값True) — 로컬 파일 데이터를 배열에 포함할지 여부입니다. - remote_files (
bool, 기본값True) — 배열에 원격 파일 데이터를 포함할지 여부.
반환값
pa.StructArray
Mesh arrow 저장 형식의 Array, 즉
pa.struct({"bytes": pa.binary(), "path": pa.string()})입니다.
Arrow 배열에 메시 파일을 임베드합니다.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('trimesh.Trimesh'), ForwardRef('trimesh.Scene')] )
Arrow 형식으로 예시를 인코딩합니다.
decodable 상태인 경우 해당 feature를 그대로 반환하고, 그렇지 않으면 feature를 dictionary로 flatten합니다.
Json
JSON 객체의 Feature type입니다.
내부적으로 객체는 JSON 인코딩된 문자열로 저장됩니다.
예:
>>> from datasets import Features, Json
>>> features = Features({'json': Json()})
>>> features
{'json': Json()}>>> from datasets import Dataset, Features, Json, List
>>> features = Features({"a": List(Json())})
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, features=features)
>>> # OR
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, on_mixed_types="use_json")
>>> ds.features
{'a': List(Json())}
>>> ds[0]
{'a': [{'b': 0}, {'c': 0}]}
>>> def f(x):
... for y in x["a"]:
... y["d"] = "foo"
... return x
>>> ds = ds.map(f)
>>> ds.features
>>> ds[0]
{'a': [{'b': 0, 'd': 'foo'}, {'c': 0, 'd': 'foo'}]}cast_storage
< source >( storage: Array ) → pa.JsonArray
Arrow 배열을 Json arrow 저장 유형으로 캐스팅합니다.
class datasets.Pdf
< source >( decode: bool = Trueid: typing.Optional[str] = None )
실험적 기능. PDF 파일을 통해 PDF 문서를 읽는 Feature.
Input: Pdf 기능은 다음을 입력으로 받습니다:
str: pdf 파일의 절대 경로 (즉, 랜덤 액세스가 허용됨).pathlib.Path: pdf 파일의 경로 (즉, 랜덤 액세스가 허용됨).다음 키를 가진
dict:path: 데이터셋 저장소에서 PDF 파일의 상대 경로를 나타내는 문자열.bytes: pdf 파일의 바이트. 순차 접근이 필요한 아카이브 파일에 유용합니다.
pdfplumber.pdf.PDF: pdfplumber pdf 객체.
예:
>>> from datasets import Dataset, Pdf
>>> ds = Dataset.from_dict({"pdf": ["path/to/pdf/file.pdf"]}).cast_column("pdf", Pdf())
>>> ds.features["pdf"]
Pdf(decode=True, id=None)
>>> ds[0]["pdf"]
<pdfplumber.pdf.PDF object at 0x7f8a1c2d8f40>
>>> ds = ds.cast_column("pdf", Pdf(decode=False))
>>> ds[0]["pdf"]
{'bytes': None,
'path': 'path/to/pdf/file.pdf'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray
Arrow 배열을 Pdf arrow 저장소 유형으로 캐스팅합니다. Pdf pyarrow 저장소 유형으로 변환할 수 있는 Arrow 유형은 다음과 같습니다:
pa.string()- "path" 데이터를 포함해야 합니다pa.binary()- 이미지 바이트를 포함해야 합니다pa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- 순서는 중요하지 않습니다pa.list(*)- pdf 배열 데이터를 포함해야 합니다
decode_example
< source >( value: dicttoken_per_repo_id = None )
PDF 파일 예제를 PDF 데이터로 디코딩합니다.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
매개변수
- storage (
pa.StructArray) — 임베드할 PyArrow 배열. - token_per_repo_id (
dict, 선택 사항) — repo_id -> token 형식의 사전으로, 파일 바이트를 가져올 때 사용합니다. - local_files (
bool, 기본값은True) — 로컬 파일 데이터를 배열에 포함할지 여부4.8.5에 추가
- remote_files (
bool, 기본값은True) — 배열에 원격 파일 데이터를 포함할지 여부입니다. 예: hf:// 또는 https://로 시작하는 경로가 있는 파일4.8.5에 추가
반환값
pa.StructArray
PDF 화살표 저장 형식의 Array, 즉
pa.struct({"bytes": pa.binary(), "path": pa.string()})입니다.
PDF 파일을 Arrow 배열에 임베드합니다.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('pdfplumber.pdf.PDF')] )
Arrow 형식으로 예시를 인코딩합니다.
decodable 상태인 경우 해당 feature를 그대로 반환하고, 그렇지 않으면 feature를 dictionary로 flatten합니다.
Nifti
class datasets.Nifti
< source >( decode: bool = Trueid: typing.Optional[str] = None )
실험적 기능입니다. NIfTI 신경영상 파일을 읽기 위한 Nifti Feature.
Input: Nifti 기능은 다음을 입력으로 받습니다:
str: NIfTI 파일의 절대 경로 (즉, 랜덤 액세스가 허용됨).pathlib.Path: NIfTI 파일의 경로(즉, 랜덤 액세스가 허용됨).다음 키를 가진
dict:path: 데이터셋 저장소에서 NIfTI 파일의 상대 경로를 나타내는 문자열.bytes: NIfTI 파일의 바이트. 순차 접근이 필요한 아카이브 파일에 유용합니다.
nibabel이미지 객체(예:nibabel.nifti1.Nifti1Image).
예:
>>> from datasets import Dataset, Nifti
>>> ds = Dataset.from_dict({"nifti": ["path/to/file.nii.gz"]}).cast_column("nifti", Nifti())
>>> ds.features["nifti"]
Nifti(decode=True, id=None)
>>> ds[0]["nifti"]
<nibabel.nifti1.Nifti1Image object at 0x7f8a1c2d8f40>
>>> ds = ds.cast_column("nifti", Nifti(decode=False))
>>> ds[0]["nifti"]
{'bytes': None,
'path': 'path/to/file.nii.gz'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.BinaryArray] ) → pa.StructArray
Arrow 배열을 Nifti arrow 저장소 유형으로 캐스팅합니다. Nifti pyarrow 저장소 유형으로 변환할 수 있는 Arrow 유형은 다음과 같습니다:
pa.string()- "path" 데이터를 포함해야 합니다pa.binary()- NIfTI 바이트를 포함해야 합니다pa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- 순서는 중요하지 않습니다
decode_example
< source >( value: dicttoken_per_repo_id = None )
NIfTI 파일 예시를 nibabel 이미지 객체로 디코딩합니다.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
매개변수
- storage (
pa.StructArray) — 임베드할 PyArrow 배열. - token_per_repo_id (
dict, 선택 사항) — repo_id -> token 형식의 사전으로, 파일 바이트를 가져올 때 사용합니다. - local_files (
bool, 기본값은True) — 로컬 파일 데이터를 배열에 포함할지 여부4.8.5에 추가
- remote_files (
bool, 기본값은True) — 배열에 원격 파일 데이터를 포함할지 여부입니다. 예: hf:// 또는 https://로 시작하는 경로가 있는 파일4.8.5에 추가
반환값
pa.StructArray
NifTI 화살표 저장 형식의 배열, 즉
pa.struct({"bytes": pa.binary(), "path": pa.string()})입니다.
NifTI 파일을 Arrow 배열에 임베드합니다.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('nib.Nifti1Image')] )
Arrow 형식으로 예시를 인코딩합니다.
decodable 상태인 경우 해당 feature를 그대로 반환하고, 그렇지 않으면 feature를 dictionary로 flatten합니다.
BioSequence
class datasets.BioSequence
< source >( format: str = 'fasta'decode: bool = Trueid: typing.Optional[str] = None )
실험적 기능. 시퀀스 파일에서 생물학적 시퀀스 레코드를 읽기 위한 BioSequence Feature.
시퀀스 파일에는 식별자와 주석이 포함된 잔기(residue) 레코드가 하나 이상 저장됩니다. FASTA, FASTQ, GenBank은 이 수준에서 동일한 형태를 가지며, 사용된 파서만 다를 뿐입니다. 따라서 format은 유형이 아니라 파서를 선택합니다.
Input: BioSequence 기능은 다음을 입력으로 받습니다:
str: 시퀀스 파일의 절대 경로(즉, 랜덤 액세스가 허용됨).pathlib.Path: 시퀀스 파일의 경로(즉, 랜덤 액세스가 허용됨).다음 키를 가진
dict:path: 데이터셋 저장소에서 시퀀스 파일의 상대 경로를 나타내는 문자열.bytes: 시퀀스 파일의 바이트. 순차 접근이 필요한 아카이브 파일에 유용합니다.
Bio.SeqRecord.SeqRecord: biopython 시퀀스 레코드.
예:
>>> from datasets import Dataset, BioSequence
>>> ds = Dataset.from_dict({"seq": ["path/to/sequences.fasta"]}).cast_column("seq", BioSequence())
>>> ds.features["seq"]
BioSequence(format='fasta', decode=True)
>>> ds[0]["seq"]
SeqRecord(seq=Seq('ACGT'), id='seq1', name='seq1', description='seq1', dbxrefs=[])
>>> ds = ds.cast_column("seq", BioSequence(decode=False))
>>> ds[0]["seq"]
{'bytes': None,
'path': 'path/to/sequences.fasta'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
Arrow 배열을 BioSequence arrow 저장소 유형으로 캐스팅합니다. BioSequence pyarrow 저장소 유형으로 변환할 수 있는 Arrow 유형은 다음과 같습니다:
pa.string()- "path" 데이터를 포함해야 합니다pa.binary()- 파일 바이트를 포함해야 합니다pa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- 순서는 중요하지 않습니다
decode_example
< source >( value: dicttoken_per_repo_id = None )
Decode example sequence file into a biopython record.
file에는 여러 레코드가 포함될 수 있습니다. 이 경우 한 행이 하나의 레코드이므로 첫 번째 레코드가 반환됩니다. 여러 레코드가 포함된 파일을 레코드당 한 행으로 확장하려면 패키지에 포함된 시퀀스 로더를 사용하세요.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
시퀀스 파일을 Arrow 배열에 임베드합니다.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('SeqRecord')] )
Arrow 형식으로 예시를 인코딩합니다.
decodable 상태인 경우 해당 feature를 그대로 반환하고, 그렇지 않으면 feature를 dictionary로 flatten합니다.
BioStructure
class datasets.BioStructure
< source >( format: str = 'pdb'decode: bool = Trueid: typing.Optional[str] = None )
실험적 기능. 구조 파일에서 거대 분자 구조를 읽기 위한 BioStructure Feature.
구조 파일은 분자의 원자 3차원 좌표를 체인(chain)과 잔기(residue)로 그룹화하여 저장합니다. PDB와 mmCIF는 동일한 객체를 기술하며 파서만 다르므로 format은 유형이 아니라 파서를 선택합니다.
Input: BioStructure 기능은 다음을 입력으로 받습니다:
str: 구조 파일의 절대 경로(즉, 랜덤 액세스가 허용됨).pathlib.Path: 구조 파일의 경로(즉, 랜덤 액세스가 허용됨).다음 키를 가진
dict:path: 데이터셋 저장소에서 구조 파일의 상대 경로를 나타내는 문자열.bytes: 구조 파일의 바이트. 순차 접근이 필요한 아카이브 파일에 유용합니다.
Bio.PDB.Structure.Structure: biopython 구조.
예:
>>> from datasets import Dataset, BioStructure
>>> ds = Dataset.from_dict({"st": ["path/to/1abc.pdb"]}).cast_column("st", BioStructure())
>>> ds.features["st"]
BioStructure(format='pdb', decode=True)
>>> ds[0]["st"]
<Structure id=1abc>
>>> ds = ds.cast_column("st", BioStructure(decode=False))
>>> ds[0]["st"]
{'bytes': None,
'path': 'path/to/1abc.pdb'}cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
Arrow 배열을 BioStructure arrow 저장소 유형으로 캐스팅합니다. BioStructure pyarrow 저장소 유형으로 변환할 수 있는 Arrow 유형은 다음과 같습니다:
pa.string()- "path" 데이터를 포함해야 합니다pa.binary()- 파일 바이트를 포함해야 합니다pa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- 순서는 중요하지 않습니다
decode_example
< source >( value: dicttoken_per_repo_id = None )
Decode example structure file을 biopython 구조로 변환합니다.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
구조 파일을 Arrow 배열에 임베드합니다.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('Structure')] )
Arrow 형식으로 예시를 인코딩합니다.
decodable 상태인 경우 해당 feature를 그대로 반환하고, 그렇지 않으면 feature를 dictionary로 flatten합니다.
파일 시스템
datasets.filesystems.is_remote_filesystem
< source >( fs: AbstractFileSystem )
fs가 원격 파일 시스템인지 확인합니다.
지문
Python 객체를 입력으로 받는 해셔