[심화] 데이터 로더 관련 이야기

지상준·2022년 5월 27일
0

Daegu AI School

목록 보기
28/53

1. 학습한 내용

① 데이터 로더 특징

  • 여러 파일로 쪼개져서 저장/읽기 가능
    • 분산 처리 데이터베이스에서는 데이터를 partition(분할) 또는 shard(조각)로 나누어 저장한다. 이는 병령 처리에 유리한 구조이기 때문에 가급적 여러 파일인 형태를 그대로 유지하는 것이 좋다(repartition에도 시간 비용이 들어가기 때문) 또한 data shuffle이 제공되어야 한다.
    • 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법을 의미합니다.
  • 간단한 Key Value 구조
    • pandas나 Spark, h5의 경우 column과 데이터 타입 조회가 쉽다. tfrecord는 직렬화되어 있기 때문에 feature key 값과 데이터 타입 조회가 어렵다.
    • Key value 구조의 장점은 명확하다. 개발적으로는 데이터 집합 내의 요소들을 key로 구분하여 알아보기 쉽게 해주며, 자료구조적으로는 O(1)에 가까운 접근 시간을 가진다. 즉 알아보기도 쉽고 사용하기도 쉬우면서 심지어 매우 빠르다.
  • Lazy data loading(메모리 보호)
    • 메모리가 TB급이 아니라면 학습 데이터 전체를 메모리에 업로드하는 것이 불가능하다. 따라서 학습에 필요한 부분만 로드하는기능이 필요하다.
  • IO 병목을 막기 위한 데이터 캐시

    -모든 데이터를 메모리에 로드하고 사용할 수 없기 때문에 반드시 학습 중간에 IO 로딩을 거쳐야 한다. 이 과정에서 IO 로딩 속도 문제로 병목이 발생하므로 IO 로딩 병렬화와 캐시 기능이 제공되어야 한다.

  • 데이터 custom transform을 유연하게 적용하는기능
    • 데이터 변형에는 문자열 형식의 label을 정수형인 index로 바꾸는 정적인 변환 뿐만 아니라 image augmentation, NLP token masking 같은 동적인 변환도 존재한다.
    • 데이터 로더를 만드는 과정에서 동적 변환이 쉽게 지원되도록 구현해야 한다.

② 데이터셋과 데이터 로더 관련 기술

  • Google : TensorFlow - tfrecord, tf.data API
  • Facebook : Pytorch - torch.utils.data API
  • Uber : Petastorm
    Nvidia : Dali

③ albumentations와 torchvision 속도 비교 (Transform – augmentation)

  • albumentations는 numpy, opencv 기반으로 구현된 image transform 라이브러리이다. 사용법은 torchvision.transforms과 유사하며 torchvision보다 약 2~15배 빠른 속도를 나타낸다.

④ Transform – augmentation compose 의미

  • torchvision.transforms과 albumentations은 여러 변환 기법을 compose 함수로 묶어
    처리할 수 있기 때문에 하나의 객체로 관리할 수 있다.

⑤ CPU GPU 연산 차이

  • CPU는 복잡한 계산을 빠르게 할 수 있지만 직렬 처리
  • GPU는 간단한 계산을 빠르게 할 수 있고, 많은 연산을 병렬 처리 가능

2. 학습내용 중 어려웠던 점

  • Nothing

3. 해결방법

  • Nothing

4. 학습소감

  • Infinyx 연구원이신, 강호용 강사님의 강의 내용을 들을 수 있어서 영광입니다.
profile
daegu-ai-school

0개의 댓글