Datasets documentation
Spark와 함께 사용
Spark와 함께 사용
이 문서는 🤗 Datasets를 Spark와 함께 사용하는 방법에 대한 간단한 소개이며, 특히 Spark DataFrame을 Dataset 객체로 로드하는 방법에 중점을 둡니다.
그 후로 모든 요소에 빠르게 접근할 수 있으며, 이를 데이터 로더로 사용하여 모델을 학습할 수 있습니다.
Spark에서 로드
Dataset 객체는 Arrow 테이블의 래퍼로, 데이터셋의 배열을 PyTorch, TensorFlow, JAX 텐서로 빠르게 읽을 수 있게 합니다. Arrow 테이블은 디스크에서 메모리 매핑되므로, 사용 가능한 RAM보다 큰 데이터셋도 로드할 수 있습니다.
Dataset.from_spark()를 사용하여 Spark DataFrame에서 Dataset을 가져올 수 있습니다:
>>> from datasets import Dataset
>>> df = spark.createDataFrame(
... data=[[1, "Elia"], [2, "Teo"], [3, "Fang"]],
... columns=["id", "name"],
... )
>>> ds = Dataset.from_spark(df)Spark 워커는 데이터셋을 Arrow 파일로 캐시 디렉터리에 디스크에 기록하고, Dataset은 해당 위치에서 로드됩니다.
대신 IterableDataset.from_spark()를 사용하여 materialization을 건너뛸 수 있으며, 이 메서드는 IterableDataset을 반환합니다:
>>> from datasets import IterableDataset
>>> df = spark.createDataFrame(
... data=[[1, "Elia"], [2, "Teo"], [3, "Fang"]],
... columns=["id", "name"],
... )
>>> ds = IterableDataset.from_spark(df)
>>> print(next(iter(ds)))
{"id": 1, "name": "Elia"}캐싱
Dataset.from_spark()를 사용할 때 생성되는 Dataset은 캐시됩니다. 동일한 DataFrame에 대해 Dataset.from_spark()를 여러 번 호출하더라도 디스크에 Arrow 파일로 데이터를 기록하는 Spark 작업을 다시 실행하지 않습니다.
cache_dir=를 Dataset.from_spark()에 전달하여 캐시 위치를 설정할 수 있습니다.
워커와 현재 머신(드라이버) 모두에서 사용할 수 있는 디스크를 사용하도록 하십시오.
다른 세션에서는 Spark DataFrame의 semantic hash가 동일하지 않으므로 Spark 작업을 다시 실행하고 새로운 캐시에 저장합니다.
기능 유형
데이터셋이 이미지, 오디오 데이터 또는 N차원 배열로 구성되어 있다면 Dataset.from_spark()(또는 IterableDataset.from_spark())에서 features= 인수를 지정할 수 있습니다:
>>> from datasets import Dataset, Features, Image, Value
>>> data = [(0, open("image.png", "rb").read())]
>>> df = spark.createDataFrame(data, "idx: int, image: binary")
>>> # Also works if you have arrays
>>> # data = [(0, np.zeros(shape=(32, 32, 3), dtype=np.int32).tolist())]
>>> # df = spark.createDataFrame(data, "idx: int, image: array<array<array<int>>>")
>>> features = Features({"idx": Value("int64"), "image": Image()})
>>> dataset = Dataset.from_spark(df, features=features)
>>> dataset[0]
{'idx': 0, 'image': <PIL.PngImagePlugin.PngImageFile image mode=RGB size=32x32>}사용 가능한 모든 feature type에 대한 정보는 Features 문서를 확인하세요.
Update on GitHub