El hardware heterogéneo es el mayor problema del entrenamiento distribuido del que nadie habla. Tienes un clúster con RTX 3090 mezcladas con 4090, distintas configuraciones de VRAM (12 GB frente a 24 GB), velocidades de red impredecibles y ese nodo maldito que lo ralentiza todo.
La mayoría de los frameworks de entrenamiento dan por hecho que las configuraciones son homogéneas. Distribuyen la carga de forma ingenua, sincronizan todo globalmente y se atascan cuando las especificaciones del hardware varían. En la práctica, quienes desarrollan software de código abierto acaban pendientes de los clústeres, repartiendo las cargas de trabajo manualmente o resignándose a un uso pésimo de las GPU.
El problema de fondo: los frameworks tratan todos los nodos por igual. Pero una 3090 no debería recibir el mismo tamaño de lote que una 4090. Los enlaces de red lentos necesitan actualizaciones asíncronas de gradientes. Los nodos con poca memoria necesitan otras estrategias para dividir el modelo.
Por eso proyectos como DeepSpeed, Megatron y PyTorch distribuido siguen resultando torpes en configuraciones heterogéneas. No se diseñaron para la caótica realidad de la computación comunitaria ni para grupos de GPU de distintas generaciones.
La mayoría de los frameworks de entrenamiento dan por hecho que las configuraciones son homogéneas. Distribuyen la carga de forma ingenua, sincronizan todo globalmente y se atascan cuando las especificaciones del hardware varían. En la práctica, quienes desarrollan software de código abierto acaban pendientes de los clústeres, repartiendo las cargas de trabajo manualmente o resignándose a un uso pésimo de las GPU.
El problema de fondo: los frameworks tratan todos los nodos por igual. Pero una 3090 no debería recibir el mismo tamaño de lote que una 4090. Los enlaces de red lentos necesitan actualizaciones asíncronas de gradientes. Los nodos con poca memoria necesitan otras estrategias para dividir el modelo.
Por eso proyectos como DeepSpeed, Megatron y PyTorch distribuido siguen resultando torpes en configuraciones heterogéneas. No se diseñaron para la caótica realidad de la computación comunitaria ni para grupos de GPU de distintas generaciones.