Este proyecto está exactamente donde se cruzan mis dos mundos: machine
learning e infraestructura cloud-native. Muestra entrenamiento distribuido de
modelos con ParameterServerStrategy de TensorFlow corriendo en un clúster de
Kubernetes.
Problema
Entrenar un modelo en una sola máquina es una celda de notebook; entrenarlo en un clúster es un problema de infraestructura: asignación de roles, descubrimiento de servicios, redes y aislamiento de fallos. Este proyecto recorre ese problema en su forma mínima y legible.
Arquitectura
- Un pod de parameter server coordina las variables del modelo y el estado del entrenamiento.
- Los pods worker ejecutan los pasos de entrenamiento, conectándose al parameter server por gRPC.
- Cada pod descubre su rol y la topología del clúster a través de una
variable de entorno
TF_CONFIGdefinida en el manifiesto de Kubernetes. - Las políticas de red restringen la comunicación exactamente a las rutas que la topología de entrenamiento necesita.
Qué demuestra
Que el entrenamiento distribuido es, fundamentalmente, un problema de diseño de infraestructura de clúster (asignación de roles, descubrimiento de servicios, redes y aislamiento de fallos), y no solo uno de machine learning.