什麼是平行運算

Data Engineering 入門

Vincent Vankrunkelsven

Data Engineer, DataCamp

平行運算的想法

現代資料處理工具的基礎

  • 記憶體
  • 處理效能

核心概念

  • 將任務拆成子任務
  • 把子任務分配到多台電腦
  • 協同完成整體任務

將任務拆成子任務的示意圖

Data Engineering 入門

裁縫店範例

裁縫店示意圖

經營一間裁縫店

目標:100 件襯衫

  • 最強裁縫:1 件/20 分鐘
  • 其他裁縫:1 件/1 小時

 

多位裁縫一起做 > 單一最佳裁縫

Data Engineering 入門

平行運算的好處

  • 處理效能
  • 記憶體:切分資料集

 

RAM 記憶體晶片RAM 記憶體晶片圖片

Data Engineering 入門

平行運算的風險

通訊造成的額外負擔

 

  • 任務需要夠大
  • 需要多個處理單元

 

平行反而變慢平行變慢的圖表

Data Engineering 入門

一個例子

 

奧運項目範例示意圖

Data Engineering 入門

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)
Data Engineering 入門

dask

 

import dask.dataframe as dd

# 將 dataframe 分成 4 個分割 athlete_events_dask = dd.from_pandas(athlete_events, npartitions = 4)
# 在每個分割上平行運算 result_df = athlete_events_dask.groupby('Year').Age.mean().compute()
Data Engineering 入門

一起來練習吧!

Data Engineering 入門

Preparing Video For Download...