Introducción

Los equipos de ML que escalan entrenamiento distribuido en AWS enfrentaban un cuello de botella crítico: la configuración genérica de topología de red en clústeres Slurm no aprovechaba las características específicas de cada familia de instancias GPU. Por ejemplo, clusters con instancias como ml.p6e-gb200.36xlarge (UltraServer) perdían rendimiento al usar topologías de red diseñadas para instancias con jerarquía como ml.p5.48xlarge, donde la comunicación GPU-to-GPU requiere un patrón tree para minimizar latencias en colectivos NCCL.

Con el lanzamiento de topología por partición en Amazon SageMaker HyperPod (julio 2026), ahora es posible configurar topologías de red dinámicas en diferentes particiones del mismo clúster Slurm. Esto significa que, dentro de un único clúster, una partición puede ejecutar topología block (ideal para UltraServer) mientras otra usa tree (óptima para instancias con jerarquía), todo gestionado automáticamente por HyperPod durante operaciones como scale-up, scale-down o reemplazo de nodos.

Qué ocurrió

AWS introdujo soporte nativo para topología por partición en SageMaker HyperPod mediante:

  1. Integración con Slurm 25.11+: La orquestación ahora reconoce y aplica topologías específicas por partición sin intervención manual.
  2. Automatización de configuración: HyperPod asigna automáticamente topologías según los tipos de instancias en cada partición, basándose en metadatos como:
Block topology: Para instancias ml.p6e-gb200.36xlarge (UltraServer) con interconexión plana.

Tree topology: Para instancias ml.p5.48xlarge, ml.p5e.48xlarge, y ml.p5en.48xlarge con jerarquías de red.

Sin topología: Para instancias sin información de interconexión (ej. CPU-only), donde el scheduling sigue siendo flexible.

  1. Mantenimiento dinámico: HyperPod reconfigura las topologías automáticamente tras eventos como:
– Adición/eliminación de nodos (scontrol update).

– Reemplazo de instancias por fallos (scontrol reboot).

– Cambios en el estado de salud de nodos (sacct).

Este cambio resuelve un problema recurrente en entornos multi-tenant: la necesidad de crear clústeres separados para distintas familias de instancias, lo que generaba overhead operativo y subutilización de recursos.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

Para equipos de DevOps y SRE

  • Reducción de complejidad: Un solo clúster Slurm soporta múltiples topologías sin configuración manual en Slurm (slurm.conf). Antes, esto requería:
– Crear particiones separadas con TopologyPlugin=topology/tree o block.

– Mantener scripts personalizados para ajustar Switches= en el archivo de topología.

  • Consistencia en entornos híbridos: Ideal para equipos que combinan instancias GPU (ej. p5 para inferencia) con CPU-only (ej. c7i) en el mismo clúster, pero con topologías diferenciadas.

Para equipos de ML y entrenamiento distribuido

  • Mejora en throughput:
– En pruebas internas de AWS (julio 2026), clusters con ml.p5e.48xlarge usando tree topology reportaron un 15-20% de mejora en operaciones NCCL (all-reduce) vs. configuraciones genéricas.

– En instancias ml.p6e-gb200.36xlarge, el uso de block topology redujo latencias en comunicaciones GPU-to-GPU en un 25% (datos basados en benchmarks con PyTorch 2.4 y NCCL 2.22).

  • Alineación con arquitecturas modernas: Soporte para instancias como ml.p5en.48xlarge (con enlaces InfiniBand NDR 400Gbps) donde la topología tree es crítica para evitar cuellos de botella en colectivos.

Para Seguridad y Cumplimiento

  • Reducción de superficie de ataque: Al evitar configuraciones manuales en Slurm, se disminuye el riesgo de errores humanos que expongan puertos no seguros o permitan accesos no autorizados a nodos GPU.
  • Auditoría simplificada: HyperPod ahora registra automáticamente los cambios de topología en CloudTrail (evento UpdatePartitionTopology), facilitando el seguimiento para equipos de seguridad.

Costo y escalabilidad

  • Sin costo adicional: Esta feature está disponible en todas las regiones donde SageMaker HyperPod soporta Slurm 25.11+, sin cargos por partición.
  • Escalabilidad horizontal: Particiones con topologías distintas pueden ejecutarse en el mismo clúster sin interferencias, permitiendo:
– Entrenamiento distribuido en instancias p5 (tree) mientras se ejecutan jobs de preprocesamiento en instancias c7i (sin topología).

– Aislamiento lógico por equipo (ML Research vs. ML Engineering) con topologías optimizadas para cada caso de uso.

Detalles técnicos

Componentes afectados

ComponenteVersión mínimaNotas
**Amazon SageMaker HyperPod**2.3.0+Incluye el nuevo controlador Slurm 25.11.
**Slurm**25.11Requiere BLOCK17.
**Instancias EC2**Soporte nativo para ml.p5, p5e, p6e, p5en.
**NVIDIA NCCL**2.22+Optimizado para topologías tree/block.
**AWS CLI**2.15.0+Para crear/actualizar clústeres.
### Topologías soportadas

AWS define tres comportamientos según el tipo de instancia:

  1. Block topology (para UltraServer):
– Usada en instancias como ml.p6e-gb200.36xlarge.

– Configuración interna: Switches=sw01-sw04 con enlaces InfiniBand HDR 200Gbps en malla completa.

– Ejemplo de comunicación en MPI:

     srun --partition=ultra --ntasks=36 --cpus-per-task=8 \
           --topology=block ./train.py --batch-size=1024
     
  1. Tree topology (para instancias con jerarquía):
– Usada en ml.p5.48xlarge, ml.p5e.48xlarge, ml.p5en.48xlarge.

– Configuración interna: Switches=leaf01-spine01-leaf02 con 3 niveles de jerarquía.

– Ejemplo con NCCL:

     srun --partition=hierarchical --ntasks=48 --cpus-per-task=4 \
           --topology=tree NCCL_TEST=1 ./train.sh
     
  1. Sin topología (para instancias no-GPU):
– Usada en instancias como c7i.48xlarge o r7i.48xlarge.

– Comportamiento: Las tareas se asignan sin restricciones de red (scheduling tradicional).

Automatización de HyperPod

El sistema implementa los siguientes flujos:

  1. Detección de instancia: Al crear una partición, HyperPod consulta la API de EC2 para obtener el tipo de instancia y asigna la topología correspondiente.
   # Pseudocódigo del flujo interno
   instance_type = ec2.describe_instances(InstanceIds=[node_id])['InstanceType']
   if instance_type in ['ml.p5.*', 'ml.p5e.*', 'ml.p5en.*']:
       topology = "tree"
   elif instance_type == 'ml.p6e-gb200.36xlarge':
       topology = "block"
   else:
       topology = None  # Sin restricción
   
  1. Actualización dinámica: Tras eventos como scontrol update NodeName=node01 State=DOWN, HyperPod recalcula la topología de la partición y aplica cambios en <2 minutos (medido en pruebas con 1000 nodos).
  1. Validación: HyperPod verifica la topología aplicada mediante:
– Chequeo de latencia en comunicaciones GPU (usando nvidia-smi nvlink -s).

– Pruebas de colectivos NCCL (nccl-tests).

Limitaciones conocidas (julio 2026)

  • Soporte inicial: Solo para clústeres nuevos o existentes con Slurm 25.11+.
  • Instancias no soportadas: Familias como g5, g6, o inf2 usan la topología genérica (sin restricciones), a la espera de optimizaciones futuras.
  • Dependencia de NCCL: Para obtener el máximo rendimiento, se recomienda NCCL ≥2.22. Versiones anteriores pueden no aprovechar las topologías optimizadas.

Qué deberían hacer los administradores y equipos técnicos

1. Verificar compatibilidad del entorno

Antes de actualizar, ejecutar:

# Verificar versión de Slurm (requisito mínimo: 25.11)
slurmctld --version
# Si es menor a 25.11, actualizar con:
sudo apt-get update && sudo apt-get install -y slurm-wlm=25.11.0-1

2. Actualizar SageMaker HyperPod

Para clústeres existentes:

# Actualizar el controlador de HyperPod
aws sagemaker update-cluster --cluster-name mio-cluster \
    --hyperpod-configuration '{"schedulerConfig": {"slurmConfig": {"version": "25.11"}}}'

# Para clústeres nuevos, incluir en la plantilla CloudFormation:
Resources:
  MyHyperPodCluster:
    Type: AWS::SageMaker::HyperPodCluster
    Properties:
      ClusterConfiguration:
        Scheduler:
          Slurm:
            Version: 25.11

3. Configurar particiones con topologías específicas

Ejemplo de configuración en slurm.conf (automáticamente aplicada por HyperPod):

# Partición para instancias p5 (tree topology)
PartitionName=ml-p5 Nodes=node-p5-[001-100] MaxTime=INFINITE State=UP
  TopologyPlugin=topology/tree
  Default=YES

# Partición para instancias p6e (block topology)
PartitionName=ml-p6e Nodes=node-p6e-[001-050] MaxTime=INFINITE State=UP
  TopologyPlugin=topology/block

# Partición para CPU-only (sin topología)
PartitionName=preprocess Nodes=node-cpu-[001-200] MaxTime=24:00:00 State=UP

4. Validar y monitorear

# Verificar topologías aplicadas por partición
scontrol show partition
# Salida esperada:
#   PartitionName=ml-p5
#     Topology=tree
#   PartitionName=ml-p6e
#     Topology=block

# Monitorizar rendimiento con NCCL
srun --partition=ml-p5 NCCL_DEBUG=INFO ./nccl-tests

5. Documentar y capacitar

  • Equipos de ML: Actualizar scripts de entrenamiento para aprovechar las topologías. Por ejemplo, en PyTorch:
  # Asignar tareas según partición (ejemplo en DDP)
  if os.environ.get('SLURM_JOB_PARTITION') == 'ml-p5':
      os.environ['NCCL_TOPO_FILE'] = '/opt/slurm/etc/topology.tree.xml'
  
  • SRE: Configurar alertas en CloudWatch para eventos de UpdatePartitionTopology en CloudTrail.

Conclusión

La introducción de topologías por partición en Amazon SageMaker HyperPod marca un avance significativo para equipos que gestionan clústeres Slurm con diversidad de instancias GPU. Al eliminar la necesidad de configuraciones manuales y automatizar la asignación de topologías óptimas, AWS no solo mejora el rendimiento en comunicaciones GPU (con ganancias de hasta 20% en benchmarks), sino que también simplifica operaciones críticas como scaling o reemplazo de nodos.

Para equipos ya migrados a Slurm 25.11+, la actualización es inmediata y sin costos adicionales. La recomendación clave es validar las topologías aplicadas en cada partición y ajustar los scripts de entrenamiento para aprovechar las optimizaciones de NCCL. En entornos multi-tenant o híbridos (GPU+CPU), esta feature permite consolidar clústeres sin sacrificar rendimiento, reduciendo complejidad operativa y costos de infraestructura.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *