Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo usar Petastorm para convertir datos de Apache Spark a TensorFlow o PyTorch. También se proporciona un ejemplo que muestra cómo usar Petastorm para preparar los datos de ML.
Nota:
El paquete petastorm está en desuso.
Streaming de mosaico es el reemplazo recomendado para cargar grandes conjuntos de datos desde el almacenamiento en la nube.
Petastorm es una biblioteca de acceso a datos de código abierto. Permite el entrenamiento y la evaluación de modelos de aprendizaje profundo en un solo nodo o de forma distribuida directamente a partir de conjuntos de datos en formato Apache Parquet y conjuntos de datos que ya están cargados como DataFrames de Apache Spark. Petastorm admite marcos populares de aprendizaje automático (ML) basados en Python, como TensorFlow, PyTorch y PySpark. Para más información sobre Petastorm, consulte la documentación de la API de Petastorm.
Carga de datos de DataFrames de Spark mediante Petastorm
La API de convertidor de Petastorm Spark simplifica la conversión de datos de Spark a TensorFlow o PyTorch. El DataFrame de Spark de entrada se materializa primero en formato Parquet y, a continuación, se carga como tf.data.Dataset o torch.utils.data.DataLoader.
Consulte la sección de la API de convertidor del conjunto de datos de Spark en la documentación de la API de Petastorm.
El flujo de trabajo recomendado es:
- Use Apache Spark para cargar y, opcionalmente, preprocesar los datos.
- Use el método
spark_dataset_converterde Petastorm para convertir datos de un DataFrame de Spark a un conjunto Dataset de TensorFlow o a un DataLoader de PyTorch. - Alimente los datos en un marco de DL para el entrenamiento o la inferencia.
Configuración del directorio de caché
El convertidor de Petastorm Spark almacena en caché el DataFrame de Spark de entrada en formato Parquet en una ubicación de directorio de caché especificada por el usuario. El directorio de caché debe ser una ruta de acceso DBFS que empiece por file:///dbfs/ como, por ejemplo, file:///dbfs/tmp/foo/, que hace referencia a la misma ubicación que dbfs:/tmp/foo/. Puede configurar el directorio de caché de dos maneras:
En la configuración de Spark del clúster, agregue la línea:
petastorm.spark.converter.parentCacheDirUrl file:///dbfs/...En el cuaderno, llame a
spark.conf.set():from petastorm.spark import SparkDatasetConverter, make_spark_converter spark.conf.set(SparkDatasetConverter.PARENT_CACHE_DIR_URL_CONF, 'file:///dbfs/...')
Puede eliminar explícitamente la memoria caché después de usarlo llamando a converter.delete() o administre la memoria caché implícitamente configurando las reglas de ciclo de vida en el almacenamiento de objetos.
Databricks admite el entrenamiento de DL en tres escenarios:
- Entrenamiento de nodo único
- Ajuste distribuido de hiperparámetros
- Entrenamiento distribuido
Para ver ejemplos de un extremo a otro, consulte los cuadernos siguientes:
- Simplificación de la conversión de datos de Spark a TensorFlow
- Simplificación de la conversión de datos de Spark a PyTorch
Carga de archivos Parquet directamente mediante Petastorm
Este método se prefiere menos que la API de convertidor de Petastorm Spark.
El flujo de trabajo recomendado es:
- Use Apache Spark para cargar y, opcionalmente, preprocesar los datos.
- Guarde los datos en formato Parquet en una ruta de acceso DBFS que tenga un montaje DBFS complementario.
- Cargue los datos en formato Petastorm mediante el punto de montaje DBFS.
- Use datos en un marco de DL para el entrenamiento o la inferencia.
Consulte el cuaderno de ejemplo para obtener un ejemplo completo.
Ejemplos: preprocesar datos y entrenar modelos con TensorFlow o PyTorch
En este cuaderno de ejemplo se muestra el siguiente flujo de trabajo en Databricks:
- Cargar datos mediante Spark.
- Convertir DataFrame de Spark en un conjunto de datos de TensorFlow mediante Petastorm.
- Alimentar los datos a un modelo TensorFlow de un solo nodo para el entrenamiento.
- Alimentar los datos a una función de ajuste de hiperparámetros distribuida.
- Alimentar los datos a un modelo distribuido de TensorFlow para el entrenamiento.
Simplificación de la conversión de datos de Spark a un cuaderno de TensorFlow
En este cuaderno de ejemplo se muestra el siguiente flujo de trabajo en Databricks:
- Cargar datos mediante Spark.
- Convertir DataFrame de Spark en un PyTorch DataLoader mediante Petastorm.
- Alimentar los datos a un modelo PyTorch de un solo nodo para el entrenamiento.
- Alimentar los datos a una función de ajuste de hiperparámetros distribuida.
- Alimentar los datos a un modelo distribuido de PyTorch para el entrenamiento.
Simplificación de la conversión de datos del cuaderno de Spark a PyTorch
Ejemplo: preprocesamiento de datos y carga de archivos Parquet con Petastorm
En este cuaderno de ejemplo se muestra el siguiente flujo de trabajo en Databricks:
- Usar Spark para cargar y preprocesar datos.
- Guardar los datos mediante Parquet en
dbfs:/ml. - Cargar datos mediante Petastorm mediante el montaje FUSE
file:/dbfs/mloptimizado. - Alimentar los datos en un marco de DL para el entrenamiento o la inferencia.