Mejores Prácticas de Carga de Datos para el Entrenamiento de ML con Clientes de Amazon S3

0
6
Applying data loading best practices for ML training with Amazon S3 clients

Amazon ha lanzado recomendaciones prácticas para optimizar el rendimiento de las cargas de trabajo de aprendizaje automático (ML) que leen datos directamente desde Amazon S3, su servicio de almacenamiento de objetos altamente escalable. Gracias a su arquitectura, Amazon S3 proporciona un rendimiento de alto rendimiento, ideal para las demandas de los modelos de aprendizaje automático modernos. Entre las herramientas destacadas se encuentran el Amazon S3 Connector para PyTorch y el «Mountpoint for Amazon S3», que facilitan la integración nativa en las tuberías de entrenamiento, evitando la necesidad de interactuar directamente con las APIs REST de S3.

Investigaciones recientes revelan que consolidar los conjuntos de datos en fragmentos de tamaño apropiado, generalmente entre 100 MB y 1 GB, y acceder a ellos de forma secuencial, proporciona un rendimiento notablemente superior. Además, el almacenamiento en caché de los datos de entrenamiento más solicitados mejora aún más la eficiencia en escenarios de entrenamiento que abarcan múltiples épocas. La prueba de rendimiento mostró que el Amazon S3 Connector para PyTorch logra de manera consistente la mayor tasa de transferencia de datos, superando a otros métodos de acceso.

Los bottlenecks en las tuberías de entrenamiento de ML pueden surgir de varias etapas interdependientes del proceso de entrenamiento. Cada uno de estos pasos, que incluye la lectura de muestras de entrenamiento, el preprocesamiento de las mismas y la actualización de los parámetros del modelo, puede convertirse en un cuello de botella. La falta de un flujo constante de datos puede llevar a que los GPU se queden inactivos.

Una de las claves para aumentar el rendimiento en la carga de datos desde Amazon S3 es el patrón de acceso a la información. Acceder a los datos de manera secuencial reduce la latencia, a diferencia de los accesos aleatorios, que requieren múltiples solicitudes y generan tiempos de espera overhead. En este contexto, se destaca la importancia de organizar los conjuntos de datos en fragmentos grandes para facilitar la lectura secuencial y reducir la sobrecarga asociada con las solicitudes al almacenar datos pequeñas en S3.

Las técnicas de optimización incluyen la utilización de clientes de alto rendimiento y archivos que estén optimizados para S3, la serialización del conjunto de datos en menos fragmentos de tamaño mayor y la implementación de técnicas como la paralelización, el prefetching y el almacenamiento en caché de las muestras de entrenamiento. Estas estrategias son clave para maximizar el rendimiento en las cargas de trabajo de aprendizaje automático que operan en la nube.

Los resultados de los estudios y benchmarks revelaron que las prácticas recomendadas, como usar clientes nativos de S3 y consolidar datos en fragmentos más grandes, pueden aumentar significativamente el rendimiento de entrenamiento, reduciendo el tiempo de inactividad de los GPU y mejorando la eficiencia de los recursos computacionales. A medida que los conjuntos de datos y las cargas de trabajo crecen, es esencial seguir revisando y optimizando el diseño de la tubería de datos para obtener una mayor eficacia en costos y en el tiempo de consecución de resultados.
vía: AWS machine learning blog