Amazon ha presentado una serie de recomendaciones dirigidas a optimizar el rendimiento de las cargas de trabajo de aprendizaje automático que extraen datos desde su servicio Amazon S3. Este servicio de almacenamiento de objetos es conocido por su alta escalabilidad, lo cual resulta crucial para las exigencias de los modelos de aprendizaje automático contemporáneos. Dentro de las herramientas destacadas, se encuentran el Amazon S3 Connector para PyTorch y el «Mountpoint for Amazon S3», diseñados para integrar eficientemente las tuberías de entrenamiento sin la necesidad de interacciones directas con las APIs REST de S3.
Estudios recientes han demostrado que consolidar los datasets en fragmentos que varían entre 100 MB y 1 GB, y acceder a ellos de forma secuencial, puede mejorar notablemente el rendimiento. El almacenamiento en caché de los datos más solicitados durante el entrenamiento ofrece un incremento adicional en eficiencia, especialmente en escenarios de múltiples épocas. El Amazon S3 Connector para PyTorch ha sido probado y ofrece consistentemente la mayor tasa de transferencia de datos, superando otros métodos de acceso.
Los cuellos de botella en las tuberías de entrenamiento pueden originarse en diversas fases del proceso, como la lectura de datos de entrenamiento, su preprocesamiento y la actualización de los parámetros del modelo. La falta de un flujo constante de datos resulta en periodos de inactividad de los GPU, lo cual impacta negativamente en la eficiencia.
Una estrategia clave para mejorar el rendimiento es el acceso secuencial a los datos, que disminuye la latencia en comparación con los accesos aleatorios, estos últimos generan múltiples solicitudes y, por ende, tiempos de espera mayores. Por esta razón, se recomienda estructurar los conjuntos de datos en fragmentos grandes para optimizar el proceso de lectura y reducir la carga asociada con las solicitudes de fragmentos más pequeños en S3.
Entre las técnicas de optimización propuestas se encuentran la utilización de clientes de alto rendimiento y la serialización de datos en menos fragmentos de mayor tamaño. También se aconseja implementar la paralelización, el prefetching y el almacenamiento en caché. Estas estrategias son cruciales para maximizar el rendimiento de las cargas de trabajo de aprendizaje automático en entornos de nube.
Los estudios y benchmarks realizados han demostrado que al seguir estas prácticas, como el uso de clientes nativos de S3 y la consolidación de datos en fragmentos más grandes, es posible mejorar significativamente el rendimiento del entrenamiento. Esto reduce la inactividad de los GPU y mejora la eficiencia de los recursos computacionales. A medida que las cargas de trabajo y los conjuntos de datos continúan creciendo, se vuelve esencial mantener un proceso continuo de revisión y optimización del diseño de la tubería de datos para lograr una mayor eficiencia en costos y tiempo.