0527 - 데이터 로더

zln·2022년 5월 27일
0
post-thumbnail

학습한 내용

데이터 로더의 조건

1. 여러 파일을 쪼개져서 저장 / 읽기 가능

  • 분산 처리 데이터베이스에서는 데이터를 partition(분할) 또는 shard(조각)로 나누어 저장한다.
    이는 병렬 처리에 유리한 구조이기 때문에 가급적 여러 파일인 형태를 그대로 유지하는 것이 좋다 (repartition에도 시간 비용이 들어가기 때문) 또한 data shuffle이 제공되어야 한다.
  • 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법을 의미합니다

2. 간단한 Key, value 구조

  • pandas나 Spark, h5의 경우 column과 데이터 타입 조회가 쉽다. tfrecord는 직렬화되어 있기 때문에
    feature key 값과 데이터 타입 조회가 어렵다.
  • Key value 구조의 장점은 명확하다. 개발적으로는 데이터 집합 내의 요소들을 key 로 구분하여 알아보기
    쉽게 해주며, 자료구조적으로는 O(1)에 가까운 접근 시간을 가진다.
    즉 알아보기도 쉽고 사용하기도 쉬우면서 심지어 매우 빠르다.

3. lazy data loading(메모리 보호)

  • 메모리가 TB급이 아니라면 학습 데이터 전체를 메모리에 업로드하는 것이 불가능하다.
    따라서 학습에 필요한 부분만 로드하는 기능이 필요하다.

4. IO 병목을 막기 위한 데이터 캐시

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

5. 데이터에 custom transform을 유연하게 적용 가능

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

pytorch 데이터 로더하는 방법

Transform

1. Augmentation 속도 비교

albumentations는 numpy, opencv 기반으로 구현된 image transform 라이브러리이다. 사용법은 torchvision.transforms과 유사하며 torchvision보다 약 2~15배 빠른 속도를 나타낸다.
다음은 하나의 image에 대해 transform을 적용하는 작업의 1000회 실행 시간을 측정
하여 평균을 낸 값이다.

2. augmentation compose 의미

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

CPU vs GPU

기본적인 차이

1 . CPU와 달리 GPU 코어가 아주 많다.

  • 코어 : CPU의 Core 즉 CPU의 핵심적인 역할을 수행해내는 중심부 역할을 말하며 이 코어에서 시스템의 모든 연산을 처리한다고 보면 되겠다, 즉 CPU에서의 코어가 많은
    경우 컴퓨터의 성능을 가장 좌우한다고 볼 수 있다.
  1. CPU는 복잡한 계산을 빠르게 할 수 있지만 모두 직렬 처리
  2. GPU는 간단한 계산을 빠르게 할 수 있고, 많은 연산을 병렬 처리 가능

연산 과정

  1. CPU
  • 복잡한 계산을 코어 갯수 만큼씩 처리한다.
  • 예로 복잡한 팩토리얼 계산식을 2개 계산해야한다고 가정하면 CPU로 계산을 해주면 빨리할 수 있다.
  • 단점 간단하고 많은 계산식은 오래 걸림
  1. GPU
  • 간단한 아주 많은 계산식을 동시에 빠르게 처리 가능
  • 예로 1000개의 덧셈식을 한번에 병렬로 처리가 가능
  • 단점 초기에 알고리즘을 하드웨어 병렬로 부여해 주어야하고 복잡한 식을 입력하면 도리어 CPU 연산속도 보다 느려질 수 있다.

학습한 내용 중 어려웠던 점 또는 해결못한 것들

딱히 어려운 것은 없었다.

해결방법 작성

학습 소감

개발자가 되기 위해서는 준비 해야될 것이 많다는 걸 느꼈다.

0개의 댓글