Что такое параллельные вычисления

Введение в дата-инжиниринг

Vincent Vankrunkelsven

Data Engineer @ DataCamp

Идея параллельных вычислений

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

  • Память
  • Вычислительная мощность

Идея

  • Разбить задачу на подзадачи
  • Распределить подзадачи по нескольким компьютерам
  • Совместно выполнить задачу

Схема разбиения задачи на подзадачи

Введение в дата-инжиниринг

Ателье портных

Схема ателье

Ателье по пошиву одежды

Цель: 100 рубашек

  • Лучший портной шьёт рубашку за 20 минут
  • Остальные портные — за 1 час

 

Несколько портных вместе > лучший портной

Введение в дата-инжиниринг

Преимущества параллельных вычислений

  • Вычислительная мощность
  • Память: разбиение набора данных на части

 

Модуль оперативной памяти: Изображение модуля оперативной памяти

Введение в дата-инжиниринг

Риски параллельных вычислений

Накладные расходы на коммуникацию

 

  • Задача должна быть достаточно большой
  • Требуется несколько вычислительных узлов

 

Параллельное замедление: График параллельного замедления

Введение в дата-инжиниринг

Пример

 

Схема, иллюстрирующая пример с Олимпийскими играми

Введение в дата-инжиниринг

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...