Programa de las cargas de trabajo conscientes de la topología utilizando Amazon Sagemaker HyperPod Gobierno de tareas

Hoy nos complace anunciar una nueva capacidad de Amazon Sagemaker Hyperpod Gobierno de tareas para ayudarlo a optimizar la eficiencia de capacitación y la latencia de red de sus cargas de trabajo de IA. Sagemaker HyperPod La gobernanza de la tarea optimiza la asignación de recursos y facilita la utilización de recursos de cómputo eficiente entre equipos y proyectos en Servicio de Kubernetes de Amazon Elastic (Amazon EKS) Clusters. Los administradores pueden gobernar la asignación acelerada de cálculo y hacer cumplir las políticas de prioridad de la tarea, mejorando la utilización de recursos. Esto ayuda a las organizaciones a centrarse en acelerar la innovación generativa de la IA y reducir el tiempo para comercializar, en lugar de coordinar la asignación de recursos y las tareas de replanación. Referirse a Mejores prácticas para Amazon Sagemaker HyperPod Gobierno de tareas Para más información.

Las cargas de trabajo generativas de IA generalmente exigen una comunicación de red extensa Nube de cómputo elástica de Amazon (Amazon EC2) instanciasdonde el ancho de banda de la red afecta tanto el tiempo de ejecución de la carga de trabajo como la latencia de procesamiento. La latencia de red de estas comunicaciones depende de la colocación física de instancias dentro de la infraestructura jerárquica de un centro de datos. Los centros de datos se pueden organizar en unidades organizacionales anidadas, como nodos de red y conjuntos de nodos, con múltiples instancias por nodo de red y múltiples nodos de red por conjunto de nodos. Por ejemplo, las instancias dentro de la misma unidad organizacional experimentan un tiempo de procesamiento más rápido en comparación con aquellos en diferentes unidades. Esto significa que menos lúpulos de red entre instancias resulta en una comunicación más baja.

Para optimizar la colocación de sus cargas de trabajo generativas de IA en sus grupos de hiperpod de Sagemaker considerando la disposición física y lógica de los recursos, puede usar información de topología de red EC2 durante sus envíos de trabajo. La topología de una instancia de EC2 se describe mediante un conjunto de nodos, con un nodo en cada capa de la red. Referirse a Cómo funciona la topología de la instancia de Amazon EC2 Para obtener detalles sobre cómo se organiza la topología EC2. Las etiquetas de topología de la red ofrecen los siguientes beneficios clave:

  • Reducción de la latencia minimizando el lúpulo de la red y el enrutamiento del tráfico a instancias cercanas
  • Mejora eficiencia de capacitación mediante la optimización de la colocación de la carga de trabajo en los recursos de la red

Con Programación consciente de la topología para la gobernanza de tareas de Sagemaker Hyperpodpuede usar etiquetas de red de topología para programar sus trabajos con una comunicación de red optimizada, mejorando así la eficiencia de las tareas y la utilización de recursos para sus cargas de trabajo de IA.

En esta publicación, presentamos la programación consciente de la topología con la gobernanza de tareas de Sagemaker HyperPod enviando trabajos que representan información de la red jerárquica. Proporcionamos detalles sobre cómo usar la gobernanza de tareas de Sagemaker HyperPod para optimizar la eficiencia de su trabajo.

Descripción general de la solución

Los científicos de datos interactúan con los clústeres de Sagemaker Hyperpod. Los científicos de datos son responsables de la capacitación, ajuste fino y la implementación de modelos en instancias de cómputo aceleradas. Es importante asegurarse de que los científicos de datos tengan la capacidad y los permisos necesarios al interactuar con grupos de GPU.

Para implementar la programación consciente de la topología, primero confirma la información de topología para todos los nodos en su clúster, luego ejecute un script que le indique qué instancias se encuentran en los mismos nodos de red y finalmente programan una tarea de capacitación con consumo de topología en su clúster. Este flujo de trabajo facilita una mayor visibilidad y control sobre la colocación de sus instancias de entrenamiento.

En esta publicación, pasamos por la información de la topología de nodos y enviamos tareas conscientes de la topología a su clúster. Como referencia, NetworkNodes describe el conjunto de nodos de red de una instancia. En cada conjunto de nodos de red, tres capas comprenden la vista jerárquica de la topología para cada instancia. Las instancias que están más cercanas entre sí compartirán el mismo nodo de red de capa 3. Si no hay nodos de red comunes en la capa inferior (capa 3), vea si hay en común en la capa 2.

Requisitos previos

Para comenzar con la programación consciente de la topología, debe tener los siguientes requisitos previos:

  • Un grupo de EKS
  • Un clúster de HyperPod de Sagemaker con instancias habilitadas para información de topología
  • El complemento de gobernanza de tareas Sagemaker HyperPod instalado (versión 1.2.2 o posterior)
  • Kubectl instalado
  • (Opcional) El SAGEMAKER HyperPod CLI instalado

Obtener información de topología de nodo

Ejecute el siguiente comando para mostrar etiquetas de nodo en su clúster. Este comando proporciona información de topología de red para cada instancia.

kubectl get nodes -L topology.k8s.aws/network-node-layer-1
kubectl get nodes -L topology.k8s.aws/network-node-layer-2
kubectl get nodes -L topology.k8s.aws/network-node-layer-3

Las instancias con la misma capa de nodo de red son lo más cercano posible, después de la jerarquía de topología de EC2. Debería ver una lista de etiquetas de nodo que se parecen a las siguientes:topology.k8s.aws/network-node-layer-3: nn-33333exampleEjecute el siguiente script para mostrar los nodos en su clúster que están en las mismas capas 1, 2 y 3 nodos de red:

git clone https://github.com/aws-samples/awsome-distributed-training.git
cd awsome-distributed-training/1.architectures/7.sagemaker-hyperpod-eks/task-governance 
chmod +x visualize_topology.sh
bash visualize_topology.sh

La salida de este script imprimirá un diagrama de flujo que puede usar en un editor de diagrama de flujo como Sirena.js.org Para visualizar la topología del nodo de su clúster. La siguiente figura es un ejemplo de la topología del clúster para un clúster de siete instancias.

Enviar tareas

La gobernanza de tareas de Sagemaker Hyperpod ofrece dos formas de enviar tareas utilizando la conciencia de topología. En esta sección, discutimos estas dos opciones y una tercera opción alternativa para el gobierno de tareas.

Modifique su archivo de manifiesto Kubernetes

Primero, puede modificar su archivo de manifiesto Kubernetes existente para incluir una de las dos opciones de anotación:

  • kueue.x-k8s.io/podset–topología – Use esta opción si debe tener todas las vainas programadas en nodos en la misma capa de nodo de red para comenzar el trabajo
  • kueue.x-k8s.io/podset-prefered-topology – Use esta opción si idealmente desea que todas las vainas estén programadas en nodos en la misma capa de nodo de red, pero tiene flexibilidad

El siguiente código es un ejemplo de un trabajo de muestra que usa el kueue.x-k8s.io/podset-required-topology Configuración para programar las cápsulas que comparten el mismo nodo de red de capa 3:

apiVersion: batch/v1
kind: Job
metadata:
  name: test-tas-job
  namespace: hyperpod-ns-team-a
  labels:
    kueue.x-k8s.io/queue-name: hyperpod-ns-team-a-localqueue
    kueue.x-k8s.io/priority-class: inference-priority
spec:
  parallelism: 10
  completions: 10
  suspend: true
  template:
    metadata:
      labels:
        kueue.x-k8s.io/queue-name: hyperpod-ns-team-a-localqueue
      annotations:
        kueue.x-k8s.io/podset-required-topology: "topology.k8s.aws/network-node-layer-3"
    spec:
      containers:
        - name: dummy-job
          image: public.ecr.aws/docker/library/alpine:latest
          command: ["sleep", "3600s"]
          resources:
            requests:
              cpu: "1"
      restartPolicy: Never

Para verificar en qué nodos se están ejecutando sus vainas, use el siguiente comando para ver los ID de nodo por vaina:kubectl get pods -n hyperpod-ns-team-a -o wide

Use el Sagemaker Hyperpod CLI

La segunda forma de enviar un trabajo es a través del Sagemaker Hyperpod CLI. Asegúrese de instalar la última versión (versión pendiente) para usar la programación de topología. Para usar la programación de topología con el Sagemaker HyperPod CLI, puede incluir el --preferred-topology parámetro o el --required-topology parámetro en su create job dominio.

El siguiente código es un comando de ejemplo para iniciar un trabajo de capacitación MNIST consciente de la topología utilizando el SageMaker HyperPod CLI, reemplace xxxxxxxxxxxxx con su ID de cuenta AWS:

hyp create hyp-pytorch-job \
--job-name test-pytorch-job-cli \
--image XXXXXXXXXXXX.dkr.ecr.us-west-2.amazonaws.com/ptjob:mnist \
--pull-policy "Always" \
--tasks-per-node 1 \
--max-retry 1 \
--preferred-topology topology.k8s.aws/network-node-layer-3

Limpiar

Si implementó nuevos recursos mientras sigue esta publicación, consulte el Sección de limpieza en el taller de Sagemaker Hyperpod EKS Para asegurarse de no acumular cargos no deseados.

Conclusión

Durante la capacitación del modelo de lenguaje grande (LLM), la comunicación POD-a Pod distribuye el modelo en múltiples instancias, lo que requiere un intercambio de datos frecuente entre estas instancias. En esta publicación, discutimos cómo la gobernanza de tareas de Sagemaker HyperPod ayuda a programar cargas de trabajo para permitir la eficiencia del trabajo al optimizar el rendimiento y la latencia. También pasamos a través de cómo programar trabajos utilizando la información de la red de topología HyperPod de Sagemaker para optimizar la latencia de comunicación de red para sus tareas de IA.

Le recomendamos que pruebe esta solución y comparta sus comentarios en la sección de comentarios.


Sobre los autores

Nisha nadkarni es una arquitecta senior de soluciones especialistas en Genai en AWS, donde guía a las empresas a través de las mejores prácticas al desplegar capacitación e inferencia distribuidas a gran escala en AWS. Antes de su papel actual, pasó varios años en AWS se centró en ayudar a las nuevas empresas emergentes de Genai a desarrollar modelos desde la ideación hasta la producción.

Siamak Nariman es un gerente de producto senior en AWS. Se centra en la tecnología AI/ML, la gestión del modelo ML y la gobernanza de ML para mejorar la eficiencia y la productividad de la organización general. Tiene una amplia experiencia en los procesos de automatización e implementando diversas tecnologías.

Li zicano es ingeniero de software senior en Amazon Web Services (AWS), donde dirige el desarrollo de software para el gobierno de tareas en Sagemaker HyperPod. En su papel, se enfoca en empoderar a los clientes con capacidades de IA avanzadas al tiempo que fomenta un entorno que maximiza la eficiencia y la productividad del equipo de ingeniería.

Anoop saha es un especialista en SR GTM en Amazon Web Services (AWS) que se centra en la capacitación e inferencia del modelo de IA generativo. Se asocia con los principales constructores de modelos de frontera, clientes estratégicos y equipos de servicio de AWS para permitir la capacitación e inferencia distribuidas a escala en AWS y dirigir las mociones conjuntas de GTM. Antes de AWS, Anoop tenía varios roles de liderazgo en nuevas empresas y grandes corporaciones, centrándose principalmente en la arquitectura de silicio y el sistema de infraestructura de IA.