Comparteix via


Carga de datos en computación de GPU sin servidor

En esta sección se ofrece información sobre la carga de datos en computación GPU sin servidor, específicamente para aplicaciones de ML y DL. Consulte el tutorial para obtener más información sobre cómo cargar y transformar datos mediante la API de Python de Spark.

Carga de datos tabulares

Use Spark Connect para cargar datos de aprendizaje automático tabulares de tablas Delta.

Para el entrenamiento de un solo nodo, puede convertir DataFrames de Apache Spark en DataFrames de pandas mediante el método PySparktoPandas(), y, opcionalmente, convertir en formato NumPy mediante el método PySparkto_numpy().

Nota:

Spark Connect aplaza el análisis y la resolución de nombres al tiempo de ejecución, lo que puede cambiar el comportamiento del código. Consulte Comparación de Spark Connect con Spark clásico.

Spark Connect admite la mayoría de las API de PySpark, como Spark SQL, Pandas API en Spark, Structured Streaming y MLlib (basado en dataframe). Consulte la documentación de referencia de la API de PySpark para obtener las API compatibles más recientes.

Para ver otras limitaciones, consulte Limitaciones de proceso sin servidor.

Cargar datos dentro del @distributed decorador

Al usar la API sin servidor de GPU para el entrenamiento distribuido, mueva el código de carga de datos dentro del decorador @distributed. El tamaño del conjunto de datos puede superar el tamaño máximo permitido por pickle, por lo que se recomienda generar el conjunto de datos dentro del decorador, como se muestra a continuación:

from serverless_gpu import distributed

# this may cause pickle error
dataset = get_dataset(file_path)
@distributed(gpus=8, remote=True)
def run_train():
  # good practice
  dataset = get_dataset(file_path)
  ....

Rendimiento de carga de datos

/Workspace y /Volumes los directorios se hospedan en el almacenamiento remoto del catálogo de Unity. Si el conjunto de datos se almacena en el Catálogo de Unity, la velocidad de carga de datos está limitada por el ancho de banda de red disponible. Si está entrenando varias épocas, se recomienda copiar primero los datos localmente, específicamente en el /tmp directorio que se hospeda en almacenamiento súper rápido (discos SSD NVMe).

Si el conjunto de datos es grande, también se recomiendan las siguientes técnicas para paralelizar el entrenamiento y la carga de datos:

  • Al entrenar varias épocas, actualice el conjunto de datos para almacenar en caché los archivos localmente en el /tmp directorio antes de leer cada archivo. En épocas posteriores, use la versión almacenada en caché.
  • Paralelizar la obtención de datos habilitando los procesos en la API torch DataLoader. Configure num_workers a al menos 2. De forma predeterminada, cada trabajador preobtiene dos elementos de trabajo. Para mejorar el rendimiento, aumente num_workers (lo que aumentará las lecturas paralelas) o prefetch_factor (lo que aumentará el número de elementos de cada captura previa de trabajo).