BlazingSQL это SQL-движок с ускорением на GPU, построенный на основе БЫСТРЫЕ экосистема. BlazingSQL позволяет распределять стандартные SQL-запросы по кластерам графического процессора, а результаты передавать непосредственно в библиотеки визуализации и машинного обучения с ускорением на графическом процессоре. По сути, BlazingSQL предоставляет ETL-часть рабочего процесса обработки данных, основанного на GPU.

RAPIDS – это набор программных библиотек и API с открытым исходным кодом, созданный Nvidia и использующий CUDA и основан на Apache Arrow столбчатый формат памяти. CuDF, часть RAPIDS, представляет собой подобную Pandas библиотеку DataFrame для загрузки, объединения, агрегирования, фильтрации и других манипуляций с данными на графических процессорах.

Для выполнения распределенного SQL-запроса BlazingSQL использует Даск, который представляет собой инструмент с открытым исходным кодом, который может масштабировать пакеты Python на несколько компьютеров. Dask может распределять данные и вычисления по нескольким графическим процессорам в одной системе или в многоузловом кластере. Dask интегрируется с RAPIDS cuDF, XGBoost и RAPIDS cuML для анализа данных и машинного обучения с ускорением на GPU.

BlazingSQL – это интерфейс SQL для cuDF с различными функциями для поддержки крупномасштабных рабочих процессов обработки данных и корпоративных наборов данных, включая поддержку библиотека dask-cudf поддерживается проектом RAPIDS. BlazingSQL позволяет запрашивать данные, хранящиеся извне (например, в Amazon S3, Google Storage или HDFS), используя простой SQL; результаты ваших SQL-запросов – это графические фреймы данных (GDF), которые немедленно доступны для любой библиотеки RAPIDS для рабочих нагрузок в области науки о данных.

В Код BlazingSQL – это проект с открытым исходным кодом, выпущенный под лицензией Apache 2.0. В Сайт блокнотов BlazingSQL – это сервис, использующий BlazingSQL, RAPIDS и JupyterLab, построенный на AWS. В настоящее время он использует экземпляры g4dn.xlarge и Графические процессоры Nvidia T4. В будущем планируется обновить некоторые из крупных кластеров BlazingSQL Notebooks до графических процессоров A100.

Вкратце, BlazingSQL позволяет загружать необработанные данные ETL непосредственно в память графического процессора в виде фреймов данных графического процессора. Если у вас есть кадры данных графического процессора в памяти графического процессора, вы можете использовать RAPIDS cuML для машинного обучения или преобразовать DataFrames в DLPack или же NVTabular для глубокого обучения в GPU с помощью PyTorch или TensorFlow.

Архитектура BlazingSQL

Как видно на рисунках ниже, BlazingSQL интегрирует SQL в экосистему RAPIDS. На первой диаграмме показан стек BlazingSQL, а на второй диаграмме показано, как BlazingSQL сочетается с другими компонентами экосистемы RAPIDS.

Глядя на первую диаграмму, BlazingSQL подключается к Apache Calcite через JPype и использует его в качестве анализатора SQL для создания плана реляционной алгебры из строки SQL. Механизм реляционной алгебры (RAL) управляет всеми умениями по созданию распределенного однородного графа выполнения, чтобы каждый работник знал, что ему нужно обработать. Он также помогает управлять выполнением запросов во время выполнения, например, оценивать потребление памяти (в памяти графического процессора, системной памяти и дисковой памяти), чтобы управлять запросами, требующими обработки вне ядра.

Лучше всего думать о том, что RAL – это мозг двигателя. Все, что над ним, является тонким клиентом, а то, что ниже, – это вычислительные ядра и базовые библиотеки.

blazingsql 01 BlazingSQL

Механизм реляционной алгебры (RAL) – это мозг BlazingSQL. Он обрабатывает все умения превращения плана реляционной алгебры из Calcite в распределенный однородный граф выполнения, чтобы каждый работник знал, что ему нужно обработать.

blazingsql 02 BlazingSQL

BlazingSQL превращает запросы SQL к табличным данным в DataFrames графического процессора. Оттуда вы используете компоненты RAPIDS для подготовки данных, выполнения машинного обучения и создания аналитики графиков.

BlazingSQL API

Класс Python BlazingContext реализует API BlazingSQL. Самое простое использование – для одного графического процессора:

from blazingsql import BlazingContext
bc = BlazingContext()

Для нескольких графических процессоров в одном узле вам необходимо использовать LocalCUDACluster:

from blazingsql import BlazingContext
from dask_cuda import LocalCUDACluster
from dask.distributed import Client
cluster = LocalCUDACluster()
client = Client(cluster)
bc = BlazingContext(dask_client = client, network_interface="lo")

Для нескольких узлов вам нужно обратиться к работающему планировщику Dask по его сетевому адресу:

from blazingsql import BlazingContext
from dask.distributed import Client
client = Client('123.123.123.123:8786')
bc = BlazingContext(dask_client = client, network_interface="eth0")

Сетевой интерфейс для кластера будет различаться в зависимости от среды. На AWS это скорее всего будет Ens5. В облачной службе BlazingSQL правильный IP-адрес и сетевой интерфейс планировщика Dask будут заполнены для вас в распределенной приветственной записной книжке.

Как только у вас будет BlazingContext Например, вы можете вызывать его методы для создания, управления и запроса таблиц:

# create table
bc.create_table('table_name', '/home/user/table_dir/*')
# define a query
query = 'select * from table_name limit 10'
# explain how the query will be executed
print(bc.explain(query))
# query table
dask_cudf = bc.sql(query)
# display results
print(dask_cudf.head())
# drop table
bc.drop_table('table_name')

Обратите внимание, что распределенная обработка запросов скрыта от вас. Единственный раз, когда вам нужно подумать об этом, – это когда вы создаете BlazingContext.

BlazingSQL SQL

BlazingSQL использует Apache Calcite, стандартный анализатор SQL, средство проверки и драйвер JDBC для языка SQL. Сам BlazingSQL реализует подмножество того, что может обрабатывать Calcite. Например, он включает четыре ширины INT и FLOAT, VARCHAR, две ширины DATE и TIMESTAMP, но не включает типы BOOLEAN, DECIMAL, CHAR, BINARY или GEOMETRY. Он поддерживает SELECT с большинством своих подпунктов, но не поддерживает INSERT, PIVOT или любые другие DML или DDL.

Однако вы можете управлять данными в CUDA DataFrame с помощью API CuDF Python и делать даже больше, если вы конвертируете их в Pandas DataFrame. К сожалению, Pandas DataFrame находится в оперативной памяти ЦП, а не в памяти графического процессора.

Большинство общих функций SQL для перечисленных типов поддерживаются или, по крайней мере, упоминаются в документации. Существуют функции CAST для большего количества типов данных, чем указано в списке поддерживаемых; Я не проверял, работают ли они или как они терпят неудачу, если не работают.

Использование службы BlazingSQL Notebooks

BlazingSQL Notebooks предлагает руководства по всем его функциям, от создания кластеров до написания SQL и Python. В основном пользовательском интерфейсе BlazingSQL Notebooks есть вкладки для кластеров, сред, кредитов и документации. Здесь я еще не создавал никаких частных кластеров GPU, но у меня есть кое-что для этого.

blazingsql 04 IDG

Блокноты BlazingSQL работают в облачных экземплярах с графическими процессорами. Один графический процессор предоставляется бесплатно. Кластер GPU стоит 1 кредит на GPU в час. Стоимость кредита в настоящее время составляет 0,75 доллара США.

Средой по умолчанию для меня будет Rapids Stable.

blazingsql 05 IDG

Для BlazingSQL Notebooks есть две возможные среды по умолчанию. Rapids Stable может быть в возрасте до шести недель, но был протестирован. Rapids Nightly, как и следовало ожидать, является последней версией RAPIDS.

Здесь я создаю «средний» кластер с четырьмя GPU. Каждый узел – это экземпляр g4dn.xlarge с графическим процессором T4. Экземпляры G4dn имеют 16 ГБ памяти и обеспечивают производительность до 65 терафлопс в режиме FP16, поэтому этот кластер должен обеспечивать производительность до 260 терафлопс при использовании данных FP16, примерно вдвое меньше, чем при использовании данных FP32, и примерно вдвое больше, чем при использовании данных FP8.

blazingsql 06 IDG

Когда вы создаете частный кластер графического процессора, вы можете выбрать имя, размер кластера, время автоматической приостановки, регион и среду.

После того, как мой кластер создан и запущен, я могу использовать ссылки ракеты для запуска JupiterLab, а также могу просматривать панель управления Dask для кластера.

blazingsql 07 IDG

Создав кластер, вы можете запускать и останавливать его по желанию. Создание кластера занимает несколько минут, а запуск – несколько.

Примеры BlazingSQL (записные книжки)

Пока я просмотрел все вводные блокноты, я покажу вам только несколько избранных снимков экрана. Код – либо Python, либо SQL; SQL имеет тенденцию быть в строках Python, а результаты запроса – это кадры данных cuDF. На следующем снимке экрана представлена ​​самая интересная графика из всей группы и используется инструмент визуализации Datashader, который поддерживает графические процессоры и кадры данных cuDF.

Я уже загрузил некоторые данные о такси Нью-Йорка в таблицу с именем taxi из файла CSV. bc это BlazingContextпримерно так, как я описал выше в обсуждении API.

blazingsql 08 IDG

Пакет Datashader выполняет визуализацию данных в графическом процессоре. Здесь мы видим тепловую карту остановок такси с маршрутов, начинающихся в Манхэттене.

Здесь я показал более поздний раздел той же записной книжки, в которой мы дважды запрашиваем данные такси: x содержит функции, которые должны влиять на стоимость проезда, а y – это цель, сумма тарифа, которую мы хотим спрогнозировать. Мы используем простую модель линейной регрессии методом наименьших квадратов из cuML, которая по сути аналогична модели Линейная регрессия Scikit-learn.

blazingsql 09 IDG

Этот пример находится в конце распространяемой приветственной записной книжки. Мы можем увидеть запросы SQL на шаге 17 и машинное обучение в GPU на шагах 18 и 19. Поскольку cuML не реализует все Scikit-learn, нам необходимо преобразовать данные из формата cuDF в графическом процессоре в формат Pandas. использовать функцию sklearn r2_score на шаге 20.

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

blazingsql 10 IDG

Есть пять вводных блокнотов BlazingSQL. Мы видели много распространенной версии записной книжки “Добро пожаловать”. В других блокнотах основное внимание уделяется cuDF DataFrame, визуализации данных, машинному обучению cuML и, наконец, живой версии примеров из документации.

Подвести итоги, BlazingSQL это SQL-движок с ускорением на GPU, построенный на основе БЫСТРЫЕ экосистема. В Код BlazingSQL – это проект с открытым исходным кодом, выпущенный под лицензией Apache 2.0. В Сайт блокнотов BlazingSQL – это сервис, использующий BlazingSQL, RAPIDS и JupyterLab, построенный на AWS.

С помощью Даск и пара строк кода, BlazingSQL и BlazingSQL Notebooks поддерживают несколько графических процессоров на одном узле и кластеры из нескольких узлов. После того, как вы выбрали нужные данные с помощью BlazingSQL и загрузили их в графические кадры данных cuDF, вы можете использовать API cuDF для управления данными. Если вы обнаружите отсутствующие методы в cuDF, вы можете преобразовать данные в Pandas DataFrame и обработать их с помощью методов Pandas в обычной оперативной памяти.

Вы можете выполнять некоторую визуализацию данных и машинное обучение cuML полностью в графическом процессоре на cuDF DataFrames. Вы также можете преобразовать DataFrames в DLPack или же NVTabular для глубокого обучения в GPU.

Если вам удобно писать SQL-запросы и писать на Python, BlazingSQL и BlazingSQL Notebooks помогут вам в науке о данных, особенно на этапе ETL. В противном случае вы можете рассмотреть решение AutoML с поддержкой ETL, например DataRobot, или систему машинного обучения с перетаскиванием, такую ​​как Студия машинного обучения Azure.

Расходы: Бесплатный открытый исходный код. В качестве услуги 0,75 доллара США / кредит, 1 кредит = 1 GPU-час.

Платформа: Сервис работает на AWS. Открытый исходный код требует Anaconda или Miniconda; Ubuntu 16.04 / 18.04 или CentOS 7; Nvidia Pascal +; CUDA 10.1.2 или 10.2; Python 3.7 или 3.8. В качестве альтернативы вы можете использовать Docker с поддержкой Nvidia.

Авторские права © 2021 IDG Communications, Inc.


#Обзор #BlazingSQL #быстрый #ETL #для #обработки #данных #на #базе #графических #процессоров

Source link