Загрузка данных с помощью 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.

Рекомендуемый рабочий процесс:

  1. Используйте Apache Spark для загрузки и, при необходимости, предварительной обработки данных.
  2. Используйте метод Petastorm spark_dataset_converter, чтобы преобразовать данные из таблицы данных Spark в набор данных TensorFlow или загрузчик данных PyTorch.
  3. Передавайте данные в структуру глубокого обучения для обучения или вывода.

Настройка каталога кэша

Преобразователь 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 поддерживают глубокое обучение в трех сценариях:

  • Одноузловое обучение
  • Распределенная настройка гиперпараметров
  • Распределенное обучение

Всеобъемлющие примеры см. в следующих записных книжках:

Загрузка файлов Parquet напрямую с помощью Petastorm

Этот метод является менее предпочтительным, чем API преобразователя Petastorm Spark.

Рекомендуемый рабочий процесс:

  1. Используйте Apache Spark для загрузки и, при необходимости, предварительной обработки данных.
  2. Сохраните данные в формате Parquet в пути DBFS с подключением к СУБД- компаньона.
  3. Загрузите данные в формате Petastorm через точку подключения DBFS.
  4. Используйте данные в структуре глубокого обучения для обучения или вывода.

Всеобъемлющий пример см. в примере записной книжки.

Примеры: предварительная обработка данных и обучение моделей с помощью TensorFlow или PyTorch

В этом примере записная книжка демонстрирует следующий рабочий процесс в Databricks:

  1. Загрузка данных с помощью Spark.
  2. Преобразуйте кадр данных Spark в набор данных TensorFlow с помощью Petastorm.
  3. Передача данных в модель TensorFlow с одним узлом для обучения.
  4. Передача данных в распределенную функцию настройки гиперпараметров.
  5. Передача данных в распределенную модель TensorFlow для обучения.

Упрощенное преобразование данных из Spark в записную книжку TensorFlow

Получить записную книжку

В этом примере записная книжка демонстрирует следующий рабочий процесс в Databricks:

  1. Загрузка данных с помощью Spark.
  2. Преобразуйте кадр данных Spark в PyTorch DataLoader с помощью Petastorm.
  3. Передача данных в модель PyTorch с одним узлом для обучения.
  4. Передача данных в распределенную функцию настройки гиперпараметров.
  5. Передача данных в распределенную модель PyTorch для обучения.

Упрощенное преобразование данных из Spark в записную книжку PyTorch

Получить записную книжку

Пример: предварительная обработка данных и загрузка файлов Parquet с помощью Petastorm

В этом примере записной книжки показан следующий рабочий процесс в Databricks:

  1. Используйте Spark для загрузки и предварительной обработки данных.
  2. Сохраните данные с помощью Parquet в dbfs:/mlразделе .
  3. Загрузка данных с помощью Petastorm с помощью оптимизированного подключения file:/dbfs/mlFUSE.
  4. Передача данных в платформу глубокого обучения для обучения или вывода.

Использование Spark и Petastorm для подготовки данных для записной книжки глубокого обучения

Получить записную книжку