Petastorm: Простой подход к моделям глубокого обучения в формате Apache Parquet
Petastorm, библиотека доступа к данным с открытым исходным кодом, позволяет проводить одноузловое или распределенное обучение, а также оценку моделей глубокого обучения именно на основе наборов данных в формате Apache Parquet и наборов данных, которые уже загружены как Apache Spark DataFrames. Она поддерживает самые популярные фреймворки ML основе Python, такие как Tensorflow, PyTorch и PySpark. Более подробная информация доступна на официальной странице Petastorm в GitHub и официальной документации.
Petastorm позволяет проводить как одномашинное, так и распределенное обучение, а также поддерживает множество ML-фреймворков на базе Python, таких как NumPy, Tensorflow, Theano, Pytorch и PySpark. Это лучшая библиотека для оценки моделей глубокого обучения с использованием наборов данных в формате Apache Parquet.
В статье мы рассмотрим следующие темы:
- Создание набора данных Petastorm, совместимого с различными ML-фреймворками
- Анализ и работа с набором данных
- Распараллеливание операций загрузки и декодирования данных
Ключевые характеристики Petastorm
Для поддержки различных сценариев обучения алгоритмов в Petastorm реализованы различные функции, включая эффективную реализацию разделения данных, фильтрацию строк, перемешивание, доступ к подмножеству полей и поддержку данных временных рядов. Эти данные также называются n-граммами.
Структура типичного набора данных
- Несколько столбцов, содержащих сигналы, полученные от датчиков, которые были собраны во время испытаний автомобилей, включая камеры и радары.
- Созданные вручную метки, которые хранятся в виде полей в строке.
Строки в типичном наборе данных отсортированы в хронологическом порядке. Стандартный размер строки составляет от 30 до 100.
Создание набора данных Petastorm, совместимого с различными ML-фреймворками
Чтобы сгенерировать набор данных с помощью Petastorm, нужно определить Unischema, которая представляет собой просто схему данных. На этом этапе Вам нужно определить схему, поскольку Petastorm переведет ее во все поддерживаемые форматы фреймворков, включая TensorFlow, чистый Python и PySpark.
Для чтения экземпляра Unischema достаточно указать путь к набору данных, так как он сериализуется как настраиваемое поле в метаданных хранилища Parquet.
Анализ и работа с набором данных
Анализ и работа с набором данных возможны благодаря использованию формата данных Parquet, который поддерживается Spark, что обусловливает наличие инструментов Spark.
Распараллеливание операций загрузки и декодирования данных
Petastorm использует две стратегии распараллеливания операций загрузки и декодирования данных:
- Реализация пула потоков
- Реализация пула процессов
Стратегический выбор зависит от типа данных, которые Вы хотите читать.
В типичном сценарии “Модель машинного обучения: Python Sklearn & Keras», стратегия реализации пула потоков используется, когда строка содержит закодированные изображения с высоким разрешением. Это связано с тем, что в этом случае большая часть времени обработки тратится на декодирование изображений с помощью кода на C++. В этом случае глобальная блокировка интерпретатора Python (GIL) не поддерживается.
При небольших размерах строк целесообразно использовать стратегию реализации пула процессов. В этом случае большая часть обработки выполняется только с помощью кода Python. Для того, чтобы преодолеть сериализацию выполнения, вызванную глобальной блокировкой интерпретатора, должны параллельно работать сразу несколько процессов.
Заключение
Petastorm является библиотекой доступа к данным с открытым исходным кодом, разработанной компанией Uber ATG. Данное решение позволяет проводить как одномашинное, так и распределенное обучение, а также оценку моделей глубокого обучения на основе наборов данных в формате Apache Parquet.
В этой статье рассказывается о том, как использовать Petastorm в качестве основного подхода, позволяющего использовать всего один набор данных. В ней также рассматриваются поддерживаемые инструменты, которые помогают оценивать модели глубокого обучения.
Petastorm работает с самыми популярными фреймворками машинного обучения на базе Python, такие как PyTorch, PySpark и Tensorflow.




