Що таке паралельні обчислення

Вступ до Data Engineering

Vincent Vankrunkelsven

Data Engineer @ DataCamp

Ідея паралельних обчислень

Основа сучасних інструментів обробки даних

  • Пам'ять
  • Обчислювальна потужність

Ідея

  • Розбити задачу на підзадачі
  • Розподілити підзадачі між кількома комп'ютерами
  • Працювати разом, щоб завершити задачу

Схема поділу задачі на підзадачі

Вступ до Data Engineering

Кравецька майстерня

Схема, що зображує кравецьку майстерню

Робота кравецької майстерні

Мета: 100 сорочок

  • Найкращий кравець шиє сорочку / 20 хв
  • Інші кравці — сорочку / 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

# 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()
Вступ до Data Engineering

Давайте потренуємось!

Вступ до Data Engineering

Preparing Video For Download...