Esta publicación está coescrita con Zhanghao Wu, cocreador de Skypilot.
El rápido avance de los modelos generativos de IA y Foundation (FMS) ha aumentado significativamente los requisitos de trabajo de recursos computacionales para las cargas de trabajo de aprendizaje automático (ML). Las tuberías ML modernas requieren sistemas eficientes para distribuir cargas de trabajo a través de recursos de cómputo acelerados, al tiempo que se asegura de que la productividad del desarrollador siga siendo alta. Las organizaciones necesitan soluciones de infraestructura que no solo sean poderosas sino también flexibles, resistentes y directas de administrar.
Skypilot es un marco de código abierto que simplifica la ejecución de cargas de trabajo ML al proporcionar una capa de abstracción unificada que ayuda a los ingenieros de ML a ejecutar sus cargas de trabajo en diferentes recursos de calculación sin administrar complejidades de infraestructura subyacentes. Ofrece una interfaz simple de alto nivel para aprovisionar recursos, programar trabajos y administrar la capacitación distribuida en múltiples nodos.
Amazon Sagemaker Hyperpod es una infraestructura especialmente diseñada para desarrollar e implementar FMS a gran escala. Sagemaker HyperPod no solo proporciona la flexibilidad para crear y usar su propia pila de software, sino que también proporciona un rendimiento óptimo a través de la misma colocación de instancias de la columna, así como la resistencia incorporada. La combinación de la resistencia del Hyperpod de Sagemaker y la eficiencia de Skypilot proporciona un marco poderoso para ampliar sus cargas de trabajo generativas de IA.
En esta publicación, compartimos cómo Sagemaker HyperPod, en colaboración con Skypilot, está racionalización de los flujos de trabajo de desarrollo de IA. Esta integración hace que nuestra infraestructura de GPU avanzada sea más accesible para los ingenieros de ML, mejorando la productividad y la utilización de recursos.
Desafíos de organizar cargas de trabajo de aprendizaje automático
Kubernetes se ha vuelto popular para las cargas de trabajo de ML debido a su escalabilidad y sus ricas herramientas de código abierto. Sagemaker Hyperpod orquestado en Servicio de Kubernetes de Amazon Elastic (Amazon EKS) combina la potencia de Kubernetes con el entorno resistente de Sagemaker Hyperpod diseñado para capacitar a grandes modelos. El apoyo de Amazon EKS en Sagemaker HyperPod fortalece la resiliencia a través de controles de salud profunda, recuperación automatizada de nodos y capacidades de trabajo automático de trabajo, proporcionando capacitación ininterrumpida para trabajos a gran escala y de larga duración.
Los ingenieros de ML hacen la transición de los entornos tradicionales de VM o locales a menudo enfrentan una curva de aprendizaje empinada. La complejidad de Kubernetes manifiesta y la gestión del clúster puede plantear desafíos significativos, potencialmente ralentizando los ciclos de desarrollo y la utilización de recursos.
Además, los equipos de infraestructura de IA enfrentaron el desafío de equilibrar la necesidad de herramientas de gestión avanzadas con el deseo de proporcionar una experiencia fácil de usar para sus ingenieros de ML. Requerían una solución que pudiera ofrecer control de alto nivel y facilidad de uso para las operaciones diarias.
Sagemaker Hyperpod con Skypilot
Para abordar estos desafíos, nos asociamos con Skypilot para mostrar una solución que utiliza las fortalezas de ambas plataformas. Sagemaker Hyperpod sobresale en la gestión de los recursos e instancias de cómputo subyacentes, proporcionando la infraestructura robusta necesaria para exigir cargas de trabajo de IA. Skypilot complementa esto ofreciendo una capa intuitiva para la gestión de empleo, el desarrollo interactivo y la coordinación del equipo.
A través de esta asociación, podemos ofrecer a nuestros clientes lo mejor de ambos mundos: la infraestructura potente y escalable de Sagemaker Hyperpod, combinada con una interfaz fácil de usar que reduce significativamente la curva de aprendizaje para los ingenieros de ML. Para los equipos de infraestructura de IA, esta integración proporciona capacidades de gestión avanzadas al tiempo que simplifica la experiencia para sus ingenieros de ML, creando una situación de ganar-ganar para todos los interesados.
Skypilot ayuda a los equipos de IA a ejecutar sus cargas de trabajo en diferentes infraestructuras con una interfaz unificada de alto nivel y una gestión poderosa de recursos y trabajos. Un ingeniero de IA puede traer su marco de IA y especificar los requisitos de recursos para el trabajo; Skypilot programará de manera inteligente las cargas de trabajo en la mejor infraestructura: encuentre las GPU disponibles, aprovisione la GPU, ejecute el trabajo y administre su ciclo de vida.
Descripción general de la solución
La implementación de esta solución es sencilla, ya sea que esté trabajando con los clústeres existentes de Sagemaker HyperPod o configurando una nueva implementación. Para los grupos existentes, puede conectarse usando Interfaz de línea de comandos de AWS (AWS CLI) comandos para actualizar su kubeconfig y verificar la configuración. Para nuevas implementaciones, lo guiamos a través de la configuración del servidor API, la creación de grupos y la configuración de opciones de red de alto rendimiento como Elastic Fabric Adapter (EFA).
El siguiente diagrama ilustra la arquitectura de la solución.
En las siguientes secciones, mostramos cómo ejecutar trabajos de Skypilot para capacitación distribuida de múltiples nodos en Sagemaker HyperPod. Revisamos el proceso de crear un clúster de Sagemaker HyperPod, instalar Skypilot, crear un clúster de Skypilot e implementar un trabajo de capacitación Skypilot.
Requisitos previos
Debes tener los siguientes requisitos previos:
- Un clúster HyperPod de Sagemaker existente con Amazon EKS (para crear uno, consulte Implemente su clúster HyperPod). Debe aprovisionar una sola instancia de ml.p5.48xLarge para las muestras de código en las siguientes secciones.
- Acceso a la CLI de AWS y
kubectlHerramientas de línea de comando. - Un entorno de Python para instalar Skypilot.
Crea un clúster Hyperpod de Sagemaker
Puedes crear un clúster de EKS con un solo AWS CloudFormation pila siguiendo las instrucciones en Uso de CloudFormationconfigurado con una nube privada virtual (VPC) y recursos de almacenamiento.
Para crear y administrar clústeres de Sagemaker HyperPod, puede usar el Consola de gestión de AWS o AWS Cli. Si usa la CLI de AWS, especifique la configuración del clúster en un archivo JSON y elija el clúster EKS creado desde la pila CloudFormation como el orquestador del clúster Sagemaker HyperPod. Luego crea los nodos de los trabajadores de clúster con NodeRecovery empezar a Automatic para habilitar la recuperación de nodo automático y para OnStartDeepHealthChecksagregar InstanceStress y InstanceConnectivity para habilitar los controles de salud profundas. Vea el siguiente código:
Puedes agregar Instancestorageconfigs para aprovisionar y montar adicionales Tienda de bloques elástica de Amazon (Amazon EBS) volúmenes en Sagemaker Hyperpod Nodos.
Para crear el clúster usando el API SAGEMAKER HYPERPODejecute el siguiente comando AWS CLI:
Ahora está listo para configurar Skypilot en su clúster HyperPod de Sagemaker.
Conéctese a su clúster EKS HyperPod EKS de Sagemaker
Desde su entorno AWS CLI, ejecute el AWS EKS Update-KubeConfig comandar para actualizar su archivo de configuración de Kube local (ubicado en ~/.kube/config) con las credenciales y la configuración necesarias para conectarse a su clúster EKS utilizando el kubectl Comando (proporcione su nombre específico de clúster EKS):
aws eks update-kubeconfig --name $EKS_CLUSTER_NAME
Puede verificar que está conectado al clúster EKS ejecutando el siguiente comando:
kubectl config current-context
Instale Skypilot con soporte de Kubernetes
Use el siguiente código para instalar Skypilot con Kubernetes Soporte usando PIP:
pip install skypilot[kubernetes]
Esto instala la última compilación de Skypilot, que incluye las integraciones necesarias de Kubernetes.
Verificar la conexión de Skypilot con el clúster EKS
Compruebe si Skypilot puede conectarse a su clúster Kubernetes:
sky check k8s
La salida debe parecer similar al siguiente código:
Si esta es la primera vez que usa Skypilot con este clúster Kubernetes, puede ver un aviso para crear etiquetas GPU para sus nodos. Siga las instrucciones ejecutando el siguiente código:
python -m sky.utils.kubernetes.gpu_labeler --context <your-eks-context>
Este script ayuda a Skypilot a identificar qué recursos de GPU están disponibles en cada nodo en su clúster. El Trabajo de etiquetado de GPU Puede tomar unos minutos dependiendo de la cantidad de recursos de GPU en su clúster.
Descubra las GPU disponibles en el clúster
Para ver qué recursos de GPU están disponibles en su clúster HyperPod de Sagemaker, use el siguiente código:
sky show-gpus --cloud k8s
Esto enumerará los tipos de GPU disponibles y sus recuentos. Tenemos dos instancias P5.48xLarge, cada una equipada con 8 GPU H100 NVIDIA:
Lanzar un entorno de desarrollo interactivo
Con Skypilot, puede lanzar un clúster Skypilot para el desarrollo interactivo:
sky launch -c dev --gpus H100
Este comando crea un entorno de desarrollo interactivo (IDE) con una única GPU H100 y sincronizará el directorio de trabajo local con el clúster. Skypilot maneja la creación de POD, la asignación de recursos y la configuración del IDE.
Después de que se inicie, puede conectarse a su IDE:
ssh dev
Esto le brinda una carcasa interactiva en su IDE, donde puede ejecutar su código, instalar paquetes y realizar experimentos ML.
Trabajos de capacitación para ejecutar
Con Skypilot, puede ejecutar trabajos de capacitación distribuidos en su clúster Sagemaker HyperPod. El siguiente es un ejemplo de lanzar un trabajo de capacitación distribuido utilizando un archivo de configuración YAML.
Primero, cree un archivo llamado train.yaml Con la configuración de su trabajo de capacitación:
Luego, lance su trabajo de capacitación:
sky launch -c train train.yaml
Esto crea un trabajo de capacitación en un solo nodos P5.48xLarge, equipado con 8 GPU H100 NVIDIA. Puede monitorear la salida con el siguiente comando:
sky logs train
Ejecución de trabajos de capacitación de múltiples nodos con EFA
El adaptador de tela elástico (EFA) es una interfaz de red para Nube de cómputo elástica de Amazon (Amazon EC2) instancias que le permiten ejecutar aplicaciones que requieren altos niveles de comunicaciones entre nodos a escala en AWS a través de su interfaz de hardware de derivación del sistema operativo personalizado. Esto permite que las aplicaciones se comuniquen directamente con el hardware de la red al tiempo que evita el núcleo del sistema operativo, reduciendo significativamente la latencia y la sobrecarga de la CPU. Este acceso directo al hardware es particularmente beneficioso para las cargas de trabajo ML distribuidas donde la comunicación frecuente entre nodos durante la sincronización de gradiente puede convertirse en un cuello de botella. Mediante el uso de instancias habilitadas para la EFA, como P5.48xLarge o P6-B200.48xLarge, los científicos de datos pueden escalar sus trabajos de capacitación en múltiples nodos mientras mantienen la comunicación de baja latencia y alto nivel de ancho de banda para la capacitación distribuida eficiente, reduciendo el tiempo de capacitación y la mejora de la utilización de recursos para los trabajos de IA a gran escala.
El siguiente fragmento de código muestra cómo incorporar esto en su trabajo de Skypilot:
Limpiar
Para eliminar su clúster Skypilot, ejecute el siguiente comando:
sky down <cluster_name>
Para eliminar el clúster HyperPod creado en esta publicación, puede usar la consola AI Sagemaker o el siguiente comando AWS CLI:
aws sagemaker delete-cluster --cluster-name <cluster_name>
La eliminación del clúster tomará unos minutos. Puede confirmar la eliminación exitosa después de no ver grupos en la consola AI Sagemaker.
Si usó la pila CloudFormation para crear recursos, puede eliminarlo utilizando el siguiente comando:
aws cloudformation delete-stack --stack-name <stack_name>
Conclusión
Al combinar las sólidas capacidades de infraestructura de Sagemaker HyperPod con la interfaz fácil de usar Skypilot, hemos mostrado una solución que ayuda a los equipos a centrarse en la innovación en lugar de la complejidad de la infraestructura. Este enfoque no solo simplifica las operaciones, sino que también mejora la productividad y la utilización de recursos en todas las organizaciones de todos los tamaños. Para comenzar, consulte Skypilot en el Soporte de Amazon EKS en Amazon Sagemaker HyperPod Workshop.
Sobre los autores
Roy alela es un arquitecto senior de soluciones especializadas de IA/ML en AWS. Ayuda a los clientes de AWS, desde pequeñas nuevas empresas hasta grandes empresas, a arrastrar y implementar modelos de base de manera eficiente en AWS. Le apasiona los problemas de optimización computacional y mejora el rendimiento de las cargas de trabajo de IA.
Zhanghao wu es co-creador del Proyecto de Código Abierto de Skypilot y posee un doctorado en Ciencias de la Computación de UC Berkeley. Trabaja en Skypilot Core, Arquitectura de cliente cliente, trabajos administrados y mejorando la experiencia de IA en diversas infraestructura en la nube en general.
Ankit anand es especialista en el mercado de la Fundación Senior Modelos (GTM) en AWS. Se asocia con los principales constructores de modelos de IA generativos, clientes estratégicos y equipos de servicio de AWS para habilitar la próxima generación de cargas de trabajo AI/ML en AWS. La experiencia de ANKIT incluye experiencia en gestión de productos dentro de la industria de servicios financieros para el comercio de alta frecuencia y de baja latencia y desarrollo de negocios para Amazon Alexa.