728x90
반응형
Datasets
- 데이터셋은 ray object references(레이 객체 참조) 블록으로 구성되어 있음
- 이 블록은 arrow 테이블이나 파이썬 리스트로 구성되어 있고 텐서, 타뷸러 데이터도 지원함
Tabular Dataset : arrow 블록으로 구성된 데이터셋
Simple Dataset : 파이썬 블록으로 구성된 데이터셋
Tensor Dataset : 하나 또는 그 이상의 tensor type 컬럼을 가진 Tabular Dataset
위의 그림과 같이 데이터셋은 Ray object reference로 구성되어 있기 때문에 ray tasks, actors, library들 간에 자유롭게 전달할 수 있음 → Ray Dataset의 특징!
Reading Data
- 원격 저장소에서 데이터를 읽을때 ray task를 사용함
- 파일 기반(file-based) 데이터 소스(e.g., S3, GCS)에서 데이터를 읽을 때 각 CPU에 할당할 개수만큼 task가 생성됨
→ 각 read task는 각 파일에 할당되어 output 블록을 생성함 - 수동으로 병렬처리를 할 수도 있는데 읽기에 대한 최종 처리는 항상 기본 데이터 시트의 파일 수로 제한됨
Dataset Transforms
- 데이터셋은 ray task나 ray actor를 이용해 변형할 수 있음
- 기본적으로 task를 사용하는데, actor를 사용하려면 compute=ActorPoolStrategy()를 사용해야함
- actor를 사용하는 것은 캐싱에 있어 초기화 비용이 많이 듬(e.g., GPU-based task)
Shuffling Data
- 정렬(sort)이나 그룹핑(groupby) 같은 특정한 연산은 데이터 블록을 값으로 분할하거나 섞어야 함
- 데이터셋은 map-reduce 스타일로 분산된 셔플을 수행함
- map task : 블록을 값으로 분할함
- reduce task : 함께 분할된 블록을 병합
- 또는 ds.repartition()을 사용해서 블록의 개수를 바꿀 수 있는데 이때 shuffle=True옵션으로 분산된 셔플을 수행할 수 있음. shuffle=False인 경우 최소한의 데이터 이동만 일어남
Fault tolerance
- 데이터셋은 task 기반의 결함 허용(fault tolerance)에 의존함. 특히 데이터셋은 ray가 실패했을 경우 자동으로 회복됨
- lineage reconstruction : 데이터셋은 공유된 메모리에 저장된 ray object의 집합이고, 특정 object가 유실되면 ray는 task를 재 실행함으로써 다시 생성함
- 현재 지원되지 않는 경우
- 데이터셋을 생성한 기존 작업자 프로세스가 죽는 경우. (데이터 집합을 구성하는 개체에 대한 메타 데이터를 저장하기 때문)
- 변형을 위해 compute=ActorPoolStrategy()가 특정된 경우
Dataset Pipelines
- 데이터셋 파이프라인은 데이터 변형을 한 번에 실행하는 것이 아닌 점차적으로 윈도우를 옮겨가며 할 수 있도록 지원
- ML 학습을 위한 스트리밍 데이터나 배치 변형을 적용할 큰 데이터셋에 사용할 수 있음
728x90
반응형
'Programming' 카테고리의 다른 글
[pytorch] Dataset & Dataloader (0) | 2022.12.03 |
---|---|
[Ray] 3-2 Ray Libraries: Ray Train (Key Concept) (0) | 2022.11.02 |
[Ray] 2-3. Ray Core: Objects 예제 (0) | 2022.10.18 |
[Ray] 2-2. Ray Core : Actors 예제 (0) | 2022.10.18 |
[Ray] 2-1. Ray Core: Tasks 예제 (0) | 2022.10.18 |