Распределенные вычисления для расширенной аналитики
Параллельная обработка в 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 есть два основных достоинства:
- Масштабируемость
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, машинном обучении и распределенных вычислениях в комментариях ниже.
Если вы нашли это полезным и знаете кого-то, кому, по вашему мнению, это могло бы пригодиться, пожалуйста, присылайте его им.