본문 바로가기

Programming

[Ray] 3-1. Ray Libraries : Ray Data (Key Concept)

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
반응형