Greenplum с PXF и глубокое обучение в Apache MADlib для классификации изображений

Greenplum Arenadata DB обучение курсы примеры архитектура PXF, Greenplum для инженеров данных и разработчиков обучение курс примеры, Platform Extension Framework Greenplum Arenadata Greenplum Примеры курсы обучение, глубокое обучение, Deepl Learning примеры кейсы, машинное обучение нейросети курсы, Школа Больших Данных Учебный центр Коммерсант

Недавно мы рассказывали про оптимизацию SQL-запросов в PXF – интеграционном фреймворке Greenplum. Сегодня рассмотрим, как этот способ обращения к внешним источникам данных можно применить к задачам машинного обучения на примере распознавания изображений. Platform Extension Framework как инструмент извлечения и преобразования изображений из облачных объектных хранилищ для обучений глубоких нейросетей с Apache MADlib.

Еще раз про PXF: интеграция с внешними источниками данных

Обработка изображений с помощью нейросетей – одно из наиболее востребованных сегодня приложений методов Machine Learning. В частности, с помощью сверточных нейросетей (CNN) можно сравнивать спутниковые снимки Земли и отслеживать изменения ландшафта с течением времени. Для этого нужны инструменты, которые позволяют не только создавать ML-модели, но и запрашивать изображения из различных источников, а также масштабировать вычислительные ресурсы по мере изменения объемов данных. Поскольку Greenplum является надежной аналитической MPP-СУБД, ее вполне можно использовать в этом качестве. А интеграционный фреймворк Platform Extension Framework (PXF) позволяет пользователям Greenplum запрашивать внешние источники данных с помощью встроенных коннекторов, обеспечивая параллельный доступ к информации с высокой пропускной способностью. Еще PXF дает возможность выполнять операторы SQL-запроса в других системах: транзакционных или аналитических базах (PostgreSQL, MySQL, Oracle, Apache Hive и пр.), облачных объектных хранилищах (AWS S3, Azure Blob Starage, Google Cloud Storage) и файловых системах типа Apache Hadoop HDFS. По сути, PXF предоставляет SQL-интерфейс для запросов к сторонним системам, а его встроенные коннекторы сопоставляют определения внешних таблиц Greenplum с источниками данных в различных форматах и ​​структурах.

PXF позволяет пользователям читать и записывать данные из/в разнородные источники данных с помощью внешних таблиц, поддерживая масштабирование и распараллеливание операций для всех сегментов. PXF реализует pxf-протокол Greenplum для создания внешней таблицы, которая ссылается на данные во внешнем хранилище. После настройки PXF и назначения привилегий пользователь через команду CREATE EXTERNAL TABLE может создать внешнюю таблицу по pxf-протоколу. Например, если файлы изображений хранятся в AWS S3, обратиться к ним из PXF через создание внешней таблицы можно следующим образом:

CREATE READABLE EXTERNAL TABLE image_table(
fullpaths TEXT[], directories TEXT[],
names TEXT[], image INT[]
) LOCATION ('pxf://bucket/chip_images/*.png?
PROFILE=s3:image&SERVER=s3&BATCH_SIZE=64') FORMAT 'CSV';

В этом SQL-запросе условие LOCATION определяет протокол pxf как URI пути расположения внешних данных, а PROFILE определяет профиль для доступа к ним, в зависимости от формата: текст, AVRO, JSON, RCFile, Parquet, SequenceFile, ORC и файлы изображений. SERVER предоставляет информацию о сервере: местоположение, учетные данные для доступа и пр, а BATCH_SIZE определяет количество изображений, загружаемых PXF в одну строку. Подробнее о параметрах SQL-запроса в PXF мы писали здесь.

Greenplum и MADlib для машинного обучения

Расширяемая архитектура PXF позволяет получать много изображений из внешнего источника очень быстро благодаря высокой степени параллелизма и встроенному механизму фрагментации всего набора данных на подмножества, которые могут извлекаться и обрабатываться параллельно каждым worker’ом сегмента Greenplum. PXF считывает каждый файл изображения как строку данных и попиксельно переводит изображение в математическое представление для эффективного хранения и обработки в Greenplum. Так PXF переводит каждый пиксель картинки в трехэлементный массив из значений красного, зеленого и синего цветов. Например, изображение CMYK размером 256×256×4 может быть представлено как трехмерный целочисленный RGB-массив размером 256×256×3.

При таком подходе одно изображение может храниться в кортеже базы данных с использованием целочисленного типа массива. Однако сжатие большего количества данных в кортеже является преимуществом для машинного обучения, поскольку сокращает количество сканирований таблиц во время обучения модели. Можно уместить несколько изображений в один кортеж базы данных: Greenplum позволяет хранить до 1 ГБ данных в кортеже, поэтому в один кортеж войдет 675 изображений размером 256×256 пикселей. PXF обычно обращается к строке данных из одного файла, разбивает его на поля, чтобы сформировать кортеж базы данных, а затем передает его в Greenplum. Для загрузки изображений PXF считывает данные из любого количества файлов, которое может поместиться в один кортеж.

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

Что касается самих алгоритмов машинного обучения, их помогут реализовать специальные фреймворки или библиотеки, которые содержат популярные ML-методы, от логистической регрессии, деревьев решений и k-средних до нейросетей глубокого обучения, сверточных и рекуррентных. Глубокое обучение – это подвид машинного обучения, когда ML-модель обучается представления, т.н. фичам, а не специализированным алгоритмам под конкретные задачи. Глубокие нейросети имеют сложную архитектуру слоев, а потому их обучение требует большого количества вычислительных ресурсов. Сегодня глубокие нейросети часто используются в задачах распознавания речи, визуальных образов и генерации изображений.

Чтобы реализовать глубокую нейросеть, можно взять Apache Spark с его модулями ML и MLLib или проект с исходным кодом MADlib, который имеет SQL-интерфейс и интегрируется с Greenplum, тоже поддерживая распараллеливание вычислений. В частности, благодаря наличию определяемых пользователем агрегатов (UDA, User Defined Aggregate) и функций (UDF, User Defined Functions) в MADlib можно реализовать математические вычисления на языке SQL-запросов, которые принимают на вход значения произвольного числа строк.

UDF используются для реализации сложных итерационных stateful-методов и вызывают UDA с фактическими вычисления, которые затем выполняются для отдельных сегментов. Затем результаты этих отдельных сегментов собираются обратно в главный узел Greenplum, который затем возвращает окончательный набор результатов. Таким образом, все большие перемещения данных выполняются в ядре базы данных, а вычисления эффективно распараллеливаются.

После того, как изображения были загружены в СУБД и преобразованы с помощью PXF, можно строить ML-модели классификации. Обучение глубоких нейросетей требует много вычислительных ресурсов из-за серии испытаний для создания хорошей архитектуры модели и настройки ее гиперпараметров. MPP-архитектура Greenplum оптимизирует эту задачу, распараллеливая вычисления для обучения разных конфигураций ML-моделей.

А ускорить определенные операции с базой данных за счет распараллеливания некоторой части рабочей нагрузки, например, операций агрегирования, сортировки, группировки, и уменьшения зависимости от индексации и секционирования поможет использование графических процессоров. Greenplum поддерживает гетерогенные архитектуры и специализированные DL-фреймворки типа CUDA, cuDNN, Keras, TensorFlow и пр.

Данный подход совместного использования Greenplum, PXF и Apache MADlib был предложен в 2020 году исследователями из компаний VMware, Intuit и Университета California San Diego и успешно протестирован на кластере из 4 хостов в Google Cloud Platform, каждый с 32 виртуальными ЦП, 150 ГБ памяти и 4 графическими процессорами NVIDIA Tesla P100. База данных Greenplum 5 и Apache MADlib 1.17 были установлены в кластере с 4 сегментами, настроенными на каждый хост, т.е. всего 16 worker’ов. В качестве Deep Learning фреймворков использовались Keras 2.2.4 и TensorFlow 1.13.1. Подробные результаты исследования представлены в источнике [3].

Освойте администрирование и эксплуатацию Greenplum с Arenadata DB для эффективного хранения и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://greenplum.org/platform-extension-framework-pxf-enabling-parallel-query-processing-over-heterogeneous-data-sources-in-greenplum/
  2. https://greenplum.org/image-classification-in-greenplum-database-using-deep-learning/
  3. https://s3.amazonaws.com/greenplum.org/wp-content/uploads/2020/05/12170349/Image-Classification-in-Greenplum.pdf
Поиск по сайту