병렬 컴퓨팅이란

데이터 엔지니어링 입문

Vincent Vankrunkelsven

Data Engineer @ DataCamp

병렬 컴퓨팅의 아이디어

현대 데이터 처리 도구의 기반

  • 메모리
  • 처리 성능

아이디어

  • 작업을 하위 작업으로 분할
  • 하위 작업을 여러 컴퓨터에 분산
  • 협력하여 완료

작업을 하위 작업으로 분할하는 다이어그램

데이터 엔지니어링 입문

재단사 가게 비유

재단사 가게를 나타내는 다이어그램

재단사 가게 운영

목표: 셔츠 100벌

  • 최고 재단사: 20분/벌
  • 다른 재단사: 1시간/벌

 

여러 명이 함께하면 최고 재단사보다 빠름

데이터 엔지니어링 입문

병렬 컴퓨팅의 이점

  • 처리 성능
  • 메모리: 데이터셋 분할

 

RAM 메모리 칩: RAM 메모리 칩 이미지

데이터 엔지니어링 입문

병렬 컴퓨팅의 위험

통신으로 인한 오버헤드

 

  • 작업은 충분히 커야 함
  • 여러 처리 장치 필요

 

병렬화로 느려지는 경우: 병렬화로 인한 속도 저하를 보여주는 그래프

데이터 엔지니어링 입문

예시

 

올림픽 종목 예시를 설명하는 다이어그램

데이터 엔지니어링 입문

multiprocessing.Pool

from multiprocessing import Pool

def take_mean_age(year_and_group): year, group = year_and_group return pd.DataFrame({"Age": group["Age"].mean()}, index=[year])
with Pool(4) as p: results = p.map(take_mean_age, athlete_events.groupby("Year"))
result_df = pd.concat(results)
데이터 엔지니어링 입문

dask

 

import dask.dataframe as dd

# Partition dataframe into 4 athlete_events_dask = dd.from_pandas(athlete_events, npartitions = 4)
# Run parallel computations on each partition result_df = athlete_events_dask.groupby('Year').Age.mean().compute()
데이터 엔지니어링 입문

연습해 봅시다!

데이터 엔지니어링 입문

Preparing Video For Download...