Entrenar e implementar grandes modelos de IA requiere capacidades informáticas distribuidas avanzadas, pero administrar estos sistemas distribuidos no debería ser complejo para los científicos de datos y los profesionales del aprendizaje automático (ML). La interfaz de línea de comandos (CLI) y el kit de desarrollo de software (SDK) para Amazon SageMaker HyperPod con la orquestación de Amazon Elastic Kubernetes Service (Amazon EKS) simplifican la forma de administrar la infraestructura del clúster y utilizar las capacidades distribuidas de inferencia y capacitación del servicio.
La CLI SageMaker HyperPod proporciona a los científicos de datos una experiencia de línea de comandos intuitiva, abstrayendo la complejidad subyacente de los sistemas distribuidos. Construida sobre el SDK de SageMaker HyperPod, la CLI ofrece comandos sencillos para administrar clústeres de HyperPod y flujos de trabajo comunes, como iniciar capacitación o trabajos de ajuste, implementar puntos finales de inferencia y monitorear el rendimiento del clúster. Esto lo hace ideal para experimentación e iteración rápidas.
Una arquitectura en capas para la simplicidad
HyperPod CLI y SDK siguen una arquitectura compartida de varias capas. La CLI y el módulo Python sirven como puntos de entrada de cara al usuario y ambos están construidos sobre componentes SDK comunes para proporcionar un comportamiento consistente en todas las interfaces. Para la automatización de la infraestructura, el SDK organiza la gestión del ciclo de vida del clúster mediante una combinación de aprovisionamiento de la pila de AWS CloudFormation e interacciones directas de la API de AWS. Las cargas de trabajo de capacitación e inferencia y los entornos de desarrollo integrados (IDE) (Espacios) se expresan como Definiciones de recursos personalizados (CRD) de Kubernetes, que el SDK administra a través de la API de Kubernetes.
En esta publicación, demostramos cómo utilizar la CLI y el SDK para crear y administrar clústeres de SageMaker HyperPod en su cuenta de AWS. Analizamos un ejemplo práctico y profundizamos en el flujo de trabajo del usuario y las opciones de parámetros.
Esta publicación se centra en la creación y gestión de clústeres. Para profundizar en el uso de HyperPod CLI y SDK para enviar trabajos de capacitación e implementar puntos finales de inferencia, consulte nuestra publicación complementaria: Entrene e implemente modelos en Amazon SageMaker HyperPod usando el nuevo HyperPod CLI y SDK.
Requisitos previos
Para seguir los ejemplos de esta publicación, debe tener los siguientes requisitos previos:
Instale la CLI de SageMaker HyperPod
Primero, instale la última versión de SageMaker HyperPod CLI y SDK. Los ejemplos de esta publicación se basan en la versión 3.5.0. Desde su entorno local, ejecute el siguiente comando; alternativamente, puede instalar la CLI en un entorno virtual de Python:
Este comando configura las herramientas necesarias para interactuar con los clústeres de SageMaker HyperPod. Para una instalación existente, asegúrese de tener instalada la última versión del paquete (SageMaker HyperPod 3.5.0 o posterior) para poder utilizar el conjunto relevante de funciones descritas en esta publicación. Para verificar si la CLI está instalada correctamente, ejecute el comando hyp y verifique los resultados:
El resultado será similar al siguiente e incluye instrucciones sobre cómo utilizar la CLI:
Para obtener más información sobre el uso de la CLI y los comandos disponibles y los parámetros respectivos, consulte la documentación de referencia de la CLI.
La CLI de HyperPod proporciona comandos para administrar el ciclo de vida completo de los clústeres de HyperPod. Las siguientes secciones explican cómo crear nuevos clústeres, monitorear su creación, modificar grupos de instancias y eliminar clústeres.
Crear un nuevo clúster HyperPod
Los clústeres de HyperPod se pueden crear a través de la Consola de administración de AWS o la CLI de HyperPod, las cuales brindan experiencias optimizadas para la creación de clústeres. La consola ofrece el enfoque más sencillo y guiado, mientras que la CLI es especialmente útil para los clientes que prefieren una experiencia programática, por ejemplo, para permitir la reproducibilidad o desarrollar la automatización en torno a la creación de clústeres. Ambos métodos utilizan la misma plantilla subyacente de CloudFormation, que está disponible en el repositorio GitHub de configuración del clúster SageMaker HyperPod. Para obtener un tutorial de la experiencia basada en consola, consulte la publicación del blog sobre la experiencia de creación de clústeres.
La creación de un nuevo clúster a través de la CLI de HyperPod sigue un flujo de trabajo basado en la configuración: la CLI primero genera archivos de configuración, que luego se editan para que coincidan con las especificaciones del clúster previstas. Posteriormente, estos archivos se envían como una pila de CloudFormation que crea el clúster HyperPod junto con los recursos necesarios, como una VPC y un sistema de archivos FSx para Lustre, entre otros. Para inicializar una nueva configuración de clúster ejecutando el siguiente comando:hyp init cluster-stack
Esto inicializa una nueva configuración de clúster en el directorio actual y genera un archivo config.yaml que puede usar para especificar la configuración de la pila del clúster. Además, creará un archivo README.md con información sobre la funcionalidad y el flujo de trabajo, además de una plantilla para los parámetros de la pila de CloudFormation en cfn_params.jinja.
Las variables de configuración de la pila del clúster se definen en config.yaml. El siguiente es un extracto del archivo:
El parámetro Resource_name_prefix sirve como identificador principal de los recursos de AWS creados durante la implementación. Cada implementación debe utilizar un prefijo de nombre de recurso único para evitar conflictos. Al valor del parámetro de prefijo se le añade automáticamente un identificador único durante la creación del clúster para proporcionar unicidad al recurso.
La configuración se puede editar directamente abriendo config.yaml en un editor de su elección o ejecutando el comando hyp configure. El siguiente ejemplo muestra cómo especificar la versión de Kubernetes del clúster de Amazon EKS que creará la pila:
hyp configure –kubernetes-versión 1.33
La actualización de variables a través de los comandos CLI proporciona seguridad adicional al realizar la validación con el esquema definido antes de establecer el valor en config.yaml.
Además de la versión de Kubernetes y el prefijo del nombre del recurso, a continuación se enumeran algunos ejemplos de parámetros importantes:
Hay dos matices importantes al actualizar los valores de configuración mediante comandos hyp configure:
Los guiones bajos (_) en los nombres de variables dentro de config.yaml se convierten en guiones (-) en los comandos CLI. Por lo tanto, kubernetes_version en config.yaml se configura mediante hyp configure –kubernetes-version en la CLI. Las variables que contienen listas de entradas dentro de config.yaml se configuran como listas JSON en el comando CLI. Por ejemplo, varios grupos de instancias se configuran en config.yaml de la siguiente manera:
Lo que se traduce en el siguiente comando CLI:
Una vez que haya terminado de realizar los cambios deseados, valide su archivo de configuración ejecutando el siguiente comando:hyp validar
Esto validará los parámetros en config.yaml con el esquema definido. Si tiene éxito, la CLI generará lo siguiente:
La pila de creación del clúster se puede enviar a CloudFormation ejecutando el siguiente comando:hyp create –region
El comando hyp create realiza la validación e inyecta valores de config.yaml en la plantilla cfn_params.jinja. Si no se proporciona explícitamente ninguna región de AWS, el comando utiliza la región predeterminada de su configuración de credenciales de AWS. El archivo de configuración resuelto y los valores de la plantilla de CloudFormation se guardan en un subdirectorio con marca de tiempo en el directorio ./run/, lo que proporciona un mecanismo de control de versiones local ligero para rastrear qué configuración se utilizó para crear un clúster en un momento determinado. También puede optar por enviar estos artefactos a su sistema de control de versiones para mejorar la reproducibilidad y la auditabilidad. Si tiene éxito, el comando genera el ID de la pila de CloudFormation:
Supervisión del proceso de creación del clúster HyperPod
Puede enumerar las pilas de CloudFormation existentes ejecutando el siguiente comando:hyp list cluster-stack –region
Opcionalmente, puede filtrar la salida por estado de la pila agregando el siguiente indicador: –status "['CREATE_COMPLETE', 'UPDATE_COMPLETE']".
El resultado de este comando será similar al siguiente:
Dependiendo de la configuración en config.yaml, se crean varias pilas anidadas que cubren diferentes aspectos de la configuración del clúster HyperPod, como EKSClusterStack, FsxStack y VPCStack.
Puede utilizar el comando describe para ver detalles sobre cualquiera de las pilas individuales: hyp describe cluster-stack –region
El resultado de una subpila ejemplar, S3EndpointStack, tendrá el siguiente aspecto:
Si alguna de las pilas muestra CREATE_FAILED, ROLLBACK_* o DELETE_*, abra la página de CloudFormation en la consola para investigar la causa raíz. Las pilas de creación de clústeres fallidas a menudo están relacionadas con cuotas de servicio insuficientes para el clúster en sí, los grupos de instancias o los componentes de la red, como las VPC o las puertas de enlace NAT. Consulte las cuotas de SageMaker HyperPod correspondientes para obtener más información sobre las cuotas requeridas para SageMaker HyperPod.
Conexión a un clúster
Una vez que la pila del clúster haya creado correctamente los recursos necesarios y el estado haya cambiado a CREATE_COMPLETE, puede configurar la CLI y su entorno de Kubernetes local para interactuar con el clúster HyperPod.
hyp set-cluster-context –cluster-name —región
La opción –cluster-name especifica el nombre del clúster HyperPod al que conectarse y la opción –region especifica la región donde se creó el clúster. Opcionalmente, se puede configurar un espacio de nombres específico utilizando el parámetro –namespace. El comando actualiza su configuración local de Kubernetes en ./kube/config, de modo que pueda usar la CLI de HyperPod y las utilidades de Kubernetes, como kubectl, para administrar los recursos en su clúster de HyperPod.
Consulte nuestra publicación de blog complementaria para obtener más información sobre cómo usar la CLI para enviar trabajos de capacitación e implementaciones de inferencia a su clúster HyperPod recién creado: Entrene e implemente modelos en Amazon SageMaker HyperPod usando la nueva CLI y SDK de HyperPod.
Modificar un clúster HyperPod existente
La CLI de HyperPod proporciona un comando para modificar los grupos de instancias y el modo de recuperación de nodos de un clúster HyperPod existente mediante el comando hyp update cluster. Esto puede resultar útil si necesita escalar su clúster agregando o eliminando nodos trabajadores, o si desea cambiar los tipos de instancia utilizados por los grupos de nodos.
Para actualizar los grupos de instancias, ejecute el siguiente comando, adaptado con el nombre de su clúster y la configuración deseada del grupo de instancias:
Tenga en cuenta que todos los campos del comando anterior son necesarios para ejecutar el comando de actualización, incluso si, por ejemplo, solo se modifica el recuento de instancias. Puede enumerar las configuraciones actuales del clúster y del grupo de instancias para obtener los valores requeridos ejecutando el comando hyp describe cluster –region.
El resultado del comando de actualización será similar al siguiente:
La opción –node-recovery le permite configurar el comportamiento de recuperación del nodo, que se puede configurar en Automático o Ninguno. Para obtener información sobre la función de recuperación automática de nodos de SageMaker HyperPod, consulte Recuperación automática de nodos.
Eliminar un clúster HyperPod existente
Para eliminar un clúster HyperPod existente, ejecute el siguiente comando. Tenga en cuenta que esta acción no es reversible:
hyp eliminar pila de clúster –región
Este comando elimina la pila de CloudFormation especificada y los recursos de AWS asociados. Puede utilizar el indicador opcional –retain-resources para especificar una lista separada por comas de ID de recursos lógicos para conservar durante el proceso de eliminación. Es importante considerar cuidadosamente qué recursos necesita conservar, porque la operación de eliminación no se puede deshacer.
El resultado de este comando será similar al siguiente y le pedirá que confirme la eliminación del recurso:
SDK de HyperPod de SageMaker
SageMaker HyperPod también incluye un SDK de Python para acceso programático a las funciones descritas anteriormente. Los comandos CLI utilizan el SDK de Python y se instala cuando instala el paquete Python sagemaker-hyperpod como se describe al principio de esta publicación. La CLI de HyperPod es más adecuada para usuarios que prefieren una experiencia interactiva y optimizada para tareas comunes de administración de HyperPod, como crear y monitorear clústeres, trabajos de capacitación y puntos finales de inferencia. Es particularmente útil para la creación rápida de prototipos, la experimentación y la automatización de flujos de trabajo repetitivos de HyperPod a través de scripts o canales de integración y entrega continua (CI/CD). Por el contrario, HyperPod SDK proporciona más control programático y flexibilidad, lo que lo convierte en la opción preferida cuando necesita incorporar la funcionalidad HyperPod directamente en su aplicación, integrarla con otros servicios de AWS o de terceros, o crear flujos de trabajo de administración de HyperPod complejos y personalizados. Considere la complejidad de su caso de uso, la necesidad de automatización e integración y la familiaridad de su equipo con los lenguajes de programación al decidir si utilizar HyperPod CLI o SDK.
El repositorio GitHub de SageMaker HyperPod CLI muestra ejemplos de cómo se puede implementar la creación y administración de clústeres utilizando el SDK de Python.
Conclusión
La CLI y el SDK de SageMaker HyperPod simplifican la creación y administración de clústeres. Con los ejemplos de esta publicación, hemos demostrado cómo estas herramientas brindan valor a través de:
Gestión simplificada del ciclo de vida: desde la configuración inicial hasta las actualizaciones y la limpieza del clúster, la CLI se alinea con la forma en que los equipos gestionan los entornos de inferencia y capacitación de larga duración y abstrae la complejidad innecesaria. Control declarativo cuando sea necesario: el SDK expone el modelo de configuración subyacente, de modo que los equipos puedan codificar especificaciones de clúster, grupos de instancias, sistemas de archivos de almacenamiento y más. Observabilidad integrada: la visibilidad de las pilas de CloudFormation está disponible sin necesidad de cambiar de herramienta, lo que permite una iteración fluida durante el desarrollo y la operación.
Comenzar a utilizar estas herramientas es tan sencillo como instalar el paquete SageMaker HyperPod. SageMaker HyperPod CLI y SDK brindan el nivel adecuado de abstracción tanto para los científicos de datos que buscan experimentar rápidamente con capacitación distribuida como para los ingenieros de ML que crean sistemas de producción.
Si está interesado en cómo utilizar HyperPod CLI y SDK para enviar trabajos de capacitación e implementar modelos en su nuevo clúster, asegúrese de consultar nuestra publicación de blog complementaria: Entrene e implemente modelos en Amazon SageMaker HyperPod usando el nuevo HyperPod CLI y SDK.