Распределенные вычисления для расширенной аналитики

Параллельная обработка в Python с использованием DASK

Масштабируемые Pandas, Numpy и Sci-kit учатся изначально

«Данные - это новая наука. Ответы на эти вопросы есть в больших данных ». - Пэт Гелсингер

Ответ на этот вопрос есть в больших данных. Чем больше у нас данных, тем больше возможностей извлечь из этого пользу для бизнеса. Однако сбор данных - не единственная проблема, нам также необходимо рассмотреть вопрос о хранении и обработке данных. Как специалисты по данным, мы часто используем такие инструменты, как Pandas и Numpy, для анализа данных, поскольку они пользуются большим доверием и эффективны. Однако по мере увеличения размера набора данных мы начинаем сталкиваться с фактическими ограничениями этих инструментов. Что мы делаем дальше? Мы переключаемся на более масштабируемое решение, такое как Spark, и порой эта доработка требует много времени. Разве не было бы замечательно, если бы вы могли сделать это в своей системе локально или масштабировать до кластера при необходимости? Даск может помочь вам в этом.

В этом посте предполагается, что вы уже знакомы с Python Pandas и NumPy. Чтобы дать вам обзор, Pandas очень полезен для очистки данных, анализа небольших данных, а Numpy в основном используется для работы с высокопроизводительным многомерным массивом. При этом давайте погрузимся прямо в Даск.

Итак, что такое Даск?

Dask - это среда параллельных вычислений, которая полностью интегрируется с вашим ноутбуком Jupyter. Первоначально он был построен для преодоления ограничений хранения на одной машине и расширения вычислительных возможностей Pandas, Numpy и Scit-kit Learn с эквивалентами DASK, но вскоре он нашел свое применение в качестве общей распределенной системы.

Если вы знакомы с Pandas и NumPy, вам подойдет Dask Dataframe и массивы.

У Dask есть два основных достоинства:

  1. Масштабируемость

Dask масштабирует Pandas, Scikit-Learn и Numpy изначально с помощью python и устойчиво работает на кластерах с несколькими ядрами или может быть уменьшен до одной машины.

2. Расписание

Планировщики задач Dask оптимизированы для вычислений во многом как Airflow, Luigi. Он обеспечивает быструю обратную связь, отслеживает задачи с помощью графов задач и помогает в диагностике как в локальном, так и в распределенном режиме, делая его интерактивным и оперативным.

Dask также предоставляет оперативную и отзывчивую панель управления, которая показывает несколько показателей, таких как прогресс, использование памяти и т. Д., Которые обновляются каждые 100 мс.

Установка

Dask может быть установлен с помощью Conda / pip или клонирован из git repo, в зависимости от ваших предпочтений.

conda install dask
conda install dask-core (Only installs core)

Dask-core - это установка mini dask, которая устанавливает только пакеты ядра. То же самое и с пипсом. Вы также можете установить только фрейм данных dask или массив Dask, если вас интересует только масштабирование ваших pandas, Numpy с Dask Dataframe, массивы Dask соответственно.

python -m pip install dask
python -m pip install "dask[dataframe]"   # Install requirements for dask dataframe
python -m pip install "dask[array]"       # Install requirements for dask array

Dask DataFrames против Pandas DataFrame

Вам следует воздержаться от использования Dask, если Pandas вам подходит. Имея это в виду, вот демонстрация импорта примера файла CSV в pandas и Dask с использованием записной книжки Jupyter:

Dask выполняет ленивые вычисления во многом так же, как Spark, что по сути означает, что он не выполняет задание до тех пор, пока не будет запрошено действие. Dask остается идеальным с точки зрения вычислений, пока не будет вызван метод compute (в данном случае).

Dask ML

Эквивалент Scikit-Learn в Dask - Dask-ML. Вот как мы можем использовать XGBoost Regressor (популярный алгоритм повышения градиента для регрессии) в Dask:

from dask_ml.xgboost import XGBRegressor
model = XGBRegressor(...)
model.fit(train, train_labels)

Даск против искры

Spark - это инструмент отказоустойчивой инфраструктуры кластерных вычислений, который разделяет данные и обработку на небольшие фрагменты, распределяет их по кластеру любого размера и запускает их параллельно.

Хотя Spark - универсальный инструмент для анализа больших данных, Dask кажется весьма многообещающим. Dask написан как компонент Python и является легким, но, с другой стороны, Spark предлагает больше функций, написан на Scala, а также предлагает поддержку Python / R. Spark должен быть вашим первым выбором, если вы ищете комплексное решение или имеете инфраструктуру JVM, но если вы хотите быстро испытать параллельные вычисления, которые являются легковесными, стоит попробовать Dask. С простой установкой pip он будет в вашем распоряжении.

Заключение

Dask - это отказоустойчивая эластичная структура для параллельных вычислений на Python, которую можно развернуть локально, в облаке или на высокопроизводительных компьютерах. Он не только масштабирует возможности Pandas и NumPy, но также может использоваться в качестве планировщика задач. Стоит отметить, что Dask не предназначен для замены Pandas и NumPy, поскольку он не обеспечивает полную функциональность, как раньше. Подробнее о Даске можно прочитать здесь.

Я хотел бы услышать ваши мысли о Dask, машинном обучении и распределенных вычислениях в комментариях ниже.

Если вы нашли это полезным и знаете кого-то, кому, по вашему мнению, это могло бы пригодиться, пожалуйста, присылайте его им.