Загрузка данных с помощью Petastorm
В этой статье описывается, как с помощью Petastorm преобразовать данные из Apache Spark в TensorFlow или PyTorch. В нем также представлен пример использования Petastorm для подготовки данных для машинного обучения.
Petastorm — это библиотека доступа к данным с открытым исходным кодом. Он обеспечивает одноузловую или распределенную подготовку и оценку моделей глубокого обучения непосредственно из наборов данных в формате Apache Parquet и наборов данных, которые уже загружены в качестве кадров данных Apache Spark. Petastorm поддерживает популярные платформы машинного обучения на основе Python, такие как TensorFlow, PyTorch и PySpark. Дополнительные сведения о Petastorm см. в документации по API Petastorm.
Загрузка данных из кадров данных Spark с помощью Petastorm
API преобразования Petastorm Spark упрощает преобразование данных из Spark в TensorFlow или PyTorch. Входной кадр данных Spark сначала материализуется в формате Parquet, а затем загружается как tf.data.Dataset
или torch.utils.data.DataLoader
.
См. раздел API преобразования наборов данных Spark в документации по API Petastorm.
Рекомендуемый рабочий процесс:
- Используйте Apache Spark для загрузки и, при необходимости, предварительной обработки данных.
- Используйте метод Petastorm
spark_dataset_converter
, чтобы преобразовать данные из таблицы данных Spark в набор данных TensorFlow или загрузчик данных PyTorch. - Передавайте данные в структуру глубокого обучения для обучения или вывода.
Настройка каталога кэша
Преобразователь Petastorm Spark кэширует входной кадр данных Spark в формате Parquet в указанном пользователем расположении каталога кэша. Каталог кэша должен быть путем DBFS, начиная с file:///dbfs/
, например, который ссылается на то же расположение, file:///dbfs/tmp/foo/
что dbfs:/tmp/foo/
и . Настроить каталог кэша можно двумя способами.
В кластере Конфигурация Spark добавьте строку:
petastorm.spark.converter.parentCacheDirUrl file:///dbfs/...
В записной книжке вызовите
spark.conf.set()
:from petastorm.spark import SparkDatasetConverter, make_spark_converter spark.conf.set(SparkDatasetConverter.PARENT_CACHE_DIR_URL_CONF, 'file:///dbfs/...')
Можно либо явно удалить кэш после его использования путем вызова converter.delete()
, либо управлять кэшем неявным образом, настроив правила жизненного цикла в хранилище объектов.
Databricks поддерживают глубокое обучение в трех сценариях:
- Одноузловое обучение
- Распределенная настройка гиперпараметров
- Распределенное обучение
Всеобъемлющие примеры см. в следующих записных книжках:
- Упрощенное преобразование данных из Spark в TensorFlow
- Упрощенное преобразование данных из Spark в PyTorch
Загрузка файлов Parquet напрямую с помощью Petastorm
Этот метод является менее предпочтительным, чем API преобразователя Petastorm Spark.
Рекомендуемый рабочий процесс:
- Используйте Apache Spark для загрузки и, при необходимости, предварительной обработки данных.
- Сохраните данные в формате Parquet в пути DBFS с подключением к СУБД- компаньона.
- Загрузите данные в формате Petastorm через точку подключения DBFS.
- Используйте данные в структуре глубокого обучения для обучения или вывода.
Всеобъемлющий пример см. в примере записной книжки.
Примеры: предварительная обработка данных и обучение моделей с помощью TensorFlow или PyTorch
В этом примере записная книжка демонстрирует следующий рабочий процесс в Databricks:
- Загрузка данных с помощью Spark.
- Преобразуйте кадр данных Spark в набор данных TensorFlow с помощью Petastorm.
- Передача данных в модель TensorFlow с одним узлом для обучения.
- Передача данных в распределенную функцию настройки гиперпараметров.
- Передача данных в распределенную модель TensorFlow для обучения.
Упрощенное преобразование данных из Spark в записную книжку TensorFlow
В этом примере записная книжка демонстрирует следующий рабочий процесс в Databricks:
- Загрузка данных с помощью Spark.
- Преобразуйте кадр данных Spark в PyTorch DataLoader с помощью Petastorm.
- Передача данных в модель PyTorch с одним узлом для обучения.
- Передача данных в распределенную функцию настройки гиперпараметров.
- Передача данных в распределенную модель PyTorch для обучения.
Упрощенное преобразование данных из Spark в записную книжку PyTorch
Пример: предварительная обработка данных и загрузка файлов Parquet с помощью Petastorm
В этом примере записной книжки показан следующий рабочий процесс в Databricks:
- Используйте Spark для загрузки и предварительной обработки данных.
- Сохраните данные с помощью Parquet в
dbfs:/ml
разделе . - Загрузка данных с помощью Petastorm с помощью оптимизированного подключения
file:/dbfs/ml
FUSE. - Передача данных в платформу глубокого обучения для обучения или вывода.