HiperPod de Amazon SageMaker está diseñado específicamente para acelerar el entrenamiento del modelo básico (FM), eliminando el trabajo pesado indiferenciado que implica la gestión y optimización de un gran clúster de computación de entrenamiento. Con SageMaker HyperPod, puedes entrenar FM durante semanas y meses sin interrupciones.
Normalmente, los clústeres HyperPod son utilizados por varios usuarios: investigadores de aprendizaje automático (ML), ingenieros de software, científicos de datos y administradores de clústeres. Editan sus propios archivos, ejecutan sus propios trabajos y quieren evitar afectar el trabajo de los demás. Para lograr este entorno multiusuario, puede aprovechar el mecanismo de usuarios y grupos de Linux y crear estáticamente varios usuarios en cada instancia mediante scripts de ciclo de vida. Sin embargo, el inconveniente de este enfoque es que las configuraciones de usuarios y grupos se duplican en varias instancias del clúster, lo que dificulta configurarlas de manera consistente en todas las instancias, como cuando se une un nuevo miembro al equipo.
Para resolver este problema, podemos usar Protocolo ligero de acceso a directorios (LDAP) y LDAP sobre TLS/SSL (LDAPS) para integrarse con un servicio de directorio como Servicio de directorio de AWS para Microsoft Active Directory. Con el servicio de directorio, puede mantener de forma centralizada los usuarios y grupos, así como sus permisos.
En esta publicación, presentamos una solución para integrar clústeres de HyperPod con Microsoft AD administrado por AWS y explicamos cómo lograr un entorno de inicio de sesión multiusuario fluido con un directorio mantenido centralmente.
Resumen de la solución
La solución utiliza los siguientes servicios y recursos de AWS:
También usamos Formación en la nube de AWS implementar una pila para crear los requisitos previos para el clúster HyperPod: VPC, subredes, grupo de seguridad y Amazon FSx para Lustre volumen.
El siguiente diagrama ilustra la arquitectura de la solución de alto nivel.
En esta solución, las instancias del clúster HyperPod utilizan el protocolo LDAPS para conectarse a AWS Managed Microsoft AD a través de un NLB. Usamos terminación TLS instalando un certificado en la NLB. Para configurar LDAPS en instancias de clúster HyperPod, el script del ciclo de vida instala y configura Demonio de servicios de seguridad del sistema (SSSD)—un software cliente de código abierto para LDAP/LDAPS.
Requisitos previos
Esta publicación asume que ya sabes cómo crear un clúster HyperPod básico sin SSSD. Para obtener más detalles sobre cómo crear clústeres de HyperPod, consulte Comenzando con SageMaker HyperPod y del Taller de hiperpod.
Además, en los pasos de configuración, utilizará una máquina Linux para generar un certificado autofirmado y obtener una contraseña ofuscada para el usuario del lector AD. Si no tiene una máquina Linux, puede crear una instancia EC2 Linux o usar AWS CloudShell.
Cree una VPC, subredes y un grupo de seguridad
Siga las instrucciones del Cuenta propia sección del taller HyperPod. Implementará una pila de CloudFormation y creará recursos de requisitos previos, como VPC, subredes, grupo de seguridad y volumen FSx para Lustre. Debe crear una subred principal y una subred de respaldo al implementar la pila de CloudFormation, porque Microsoft AD administrado por AWS requiere al menos dos subredes con diferentes zonas de disponibilidad.
En esta publicación, para simplificar, utilizamos la misma VPC, subredes y grupo de seguridad tanto para el clúster HyperPod como para el servicio de directorio. Si necesita utilizar redes diferentes entre el clúster y el servicio de directorio, asegúrese de que los grupos de seguridad y las tablas de rutas estén configurados para que puedan comunicarse entre sí.
Cree Microsoft AD administrado por AWS en el servicio de directorio
Complete los siguientes pasos para configurar su directorio:
- En Consola del servicio de directorio, escoger Directorio en el panel de navegación.
- Elige Configurar directorio.
- tipo de directorio, seleccione AD de Microsoft administrado por AWS.
- Elige Siguiente.
- Edición, seleccione Standard Edition.
- Nombre DNS del directorio, ingrese el nombre DNS de su directorio preferido (por ejemplo,
hyperpod.abc123.com
). - clave de administrador¸ establezca una contraseña y guárdela para usarla más adelante.
- Elige Siguiente.
- En Networking , especifique la VPC y las dos subredes privadas que creó.
- Elige Siguiente.
- Revise la configuración y el precio, luego elija Crear directorio.
Comienza la creación del directorio. Espere hasta que el estado cambie de Creamos a Active, lo que puede tardar entre 20 y 30 minutos. - Cuando el estado cambia a Active, abra la página de detalles del directorio y tome nota de las direcciones DNS para su uso posterior.
Cree un NLB frente al servicio de directorio
Para crear el NLB, complete los siguientes pasos:
- En Consola de Amazon EC2, escoger Grupos destinatarios en el panel de navegación.
- Elige Crear grupos objetivo.
- Cree un grupo objetivo con los siguientes parámetros:
- Elige un tipo de objetivo, seleccione Direcciones IP.
- Nombre del grupo objetivo, introduzca
LDAP
. - Protocolo: Puerto, escoger TCP e introduzca
389
. - tipo de dirección IP, seleccione IPv4.
- VPC, escoger SageMaker HyperPod VPC (que creó con la plantilla de CloudFormation).
- Protocolo de control de salud, escoger TCP.
- Elige Siguiente.
- En Registrar objetivos sección, registre las direcciones DNS del servicio de directorio como destinos.
- Puertos, escoger Incluir como pendiente a continuación.Las direcciones se agregan en el Revisar objetivos sección con Pendiente de estado.
- Elige Crear grupo objetivo.
- En Consola de equilibradores de carga, escoger Crear balanceador de carga.
- under Balanceador de carga de red, escoger Crear.
- Configure un NLB con los siguientes parámetros:
- Nombre del balanceador de carga, ingrese un nombre (por ejemplo,
nlb-ds
). - Esquema, seleccione Interno .
- tipo de dirección IP, seleccione IPv4.
- VPC, escoger SageMaker HyperPod VPC (que creó con la plantilla de CloudFormation).
- under Asignaciones, seleccione las dos subredes privadas y sus rangos CIDR (que creó con la plantilla de CloudFormation).
- Grupos de seguridad, escoger
CfStackName-SecurityGroup-XYZXYZ
(que creó con la plantilla de CloudFormation).
- Nombre del balanceador de carga, ingrese un nombre (por ejemplo,
- En Oyentes y enrutamiento sección, especifique los siguientes parámetros:
- Protocolo, escoger TCP.
- Puerto, introduzca
389
. - Acción por defecto, elija el grupo objetivo denominado LDAP.
Aquí, estamos agregando un oyente para LDAP. Agregaremos LDAPS más adelante.
- Elige Crear balanceador de carga.Espere hasta que el estado cambie de Aprovisionamiento a Activo, lo que puede tardar entre 3 y 5 minutos.
- Cuando el estado cambia a Active, abra la página de detalles del NLB aprovisionado y tome nota del nombre DNS (
xyzxyz.elb.region-name.amazonaws.com
) para su uso posterior.
Cree un certificado autofirmado e impórtelo al Administrador de certificados
Para crear un certificado autofirmado, complete los siguientes pasos:
- En su entorno basado en Linux (portátil local, instancia EC2 Linux o CloudShell), ejecute lo siguiente OpenSSL Comandos para crear un certificado autofirmado y una clave privada:
- En Consola del Administrador de certificados, escoger Importa.
- Ingrese el cuerpo del certificado y la clave privada, del contenido de
ldaps.crt
yldaps.key
respectivamente. - Elige Siguiente.
- Agregue cualquier etiqueta opcional y luego elija Siguiente.
- Revisa la configuración y elige Importa.
Agregar un oyente LDAPS
Agregamos un oyente para LDAP que ya está en NLB. Ahora agregamos un oyente para LDAPS con el certificado importado. Complete los siguientes pasos:
- En Consola de equilibradores de carga, navegue hasta la página de detalles de NLB.
- En Oyentes pestaña, elegir Añadir oyente.
- Configure el oyente con los siguientes parámetros:
- Protocolo, escoger TLS.
- Puerto, introduzca
636
. - Acción por defecto, escoger LDAP.
- Fuente del certificado, seleccione Desde ACM.
- Certificado, ingrese lo que importó en ACM.
- Elige Añada.Ahora la NLB escucha tanto LDAP como LDAPS. Se recomienda eliminar el oyente LDAP porque transmite datos sin cifrado, a diferencia de LDAPS.
Cree una instancia EC2 de Windows para administrar usuarios y grupos en AD
Para crear y mantener usuarios y grupos en AD, complete los siguientes pasos:
- En la consola de Amazon EC2, elija Instancias en el panel de navegación.
- Elige Lanzamiento de instancias.
- Nombre, ingrese un nombre para su instancia.
- Imagen de la máquina de Amazon, escoger Base de Microsoft Windows Server 2022.
- Tipo de instancia, escoger t2.micro.
- En Configuración de red sección, proporcione los siguientes parámetros:
- VPC, escoger SageMaker HyperPod VPC (que creó con la plantilla de CloudFormation).
- Subred, elija cualquiera de las dos subredes que creó con la plantilla de CloudFormation.
- Grupos de seguridad comunes, escoger
CfStackName-SecurityGroup-XYZXYZ
(que creó con la plantilla de CloudFormation).
- Configurar almacenamiento, configure el almacenamiento en 30 GB gp2.
- En Detalles avanzados sección, para Directorio de unión al dominio¸ elija el AD que creó.
- Perfil de instancia de IAM, elige un Gestión de identidades y accesos de AWS (IAM) con al menos el
AmazonSSMManagedEC2InstanceDefaultPolicy
. - Revise el resumen y elija Ejecutar instancia.
Cree usuarios y grupos en AD usando la instancia EC2 de Windows
Con Remote Desktop, conéctese a la instancia EC2 de Windows que creó en el paso anterior. Se recomienda utilizar un cliente RDP en lugar de un escritorio remoto basado en navegador para que pueda intercambiar el contenido del portapapeles con su máquina local mediante operaciones de copiar y pegar. Para obtener más detalles sobre cómo conectarse a instancias EC2 de Windows, consulte Conéctese a su instancia de Windows.
Si se le solicita una credencial de inicio de sesión, utilice hyperpodAdmin
(dónde hyperpod
es la primera parte del nombre DNS de su directorio) como nombre de usuario y use la contraseña de administrador que configuró para el servicio de directorio.
- Cuando se abra la pantalla del escritorio de Windows, elija Administrador de servidores del desplegable Inicio .
- Elige Servidor local en el panel de navegación y confirme que el dominio es el que especificó para el servicio de directorio.
- En Gestiona menú, seleccione Agregar funciones y funciones.
- Elige Siguiente hasta que estés en el Caracteristicas .
- Ampliar la característica Herramientas de administración remota del servidor, expandir Herramientas de administración de rolesy seleccione Herramientas AD DS y AD LDS y Servicio de administración de derechos de Active Directory.
- Elige Siguiente y Instalar.Comienza la instalación de funciones.
- Cuando la instalación esté completa, elija Cerrar.
- Abierto Directorio activo de usuarios y computadoras del desplegable Inicio .
- under
hyperpod.abc123.com
, expandirhyperpod
. - Elija (clic derecho)
hyperpod
, escoger Nuevo, y elige Unidad organizacional. - Crea una unidad organizativa llamada
Groups
. - Elija (clic derecho) Grupos, escoger Nuevo, y elige Grupo procesos.
- Crea un grupo llamado
ClusterAdmin
. - Crea un segundo grupo llamado
ClusterDev
. - Elija (clic derecho) Usuarios, escoger Nuevo, y elige Usuario.
- Crea un nuevo usuario.
- Elija (haga clic derecho) el usuario y elija Agregar a un grupo.
- Añade tus usuarios a los grupos
ClusterAdmin
orClusterDev
.Usuarios agregados alClusterAdmin
el grupo tendrásudo
privilegio en el clúster.
Crear un usuario de solo lectura en AD
Crear un usuario llamado ReadOnly
bajo Users
. ReadOnly
El clúster utiliza el usuario para acceder mediante programación a usuarios y grupos en AD.
Tome nota de la contraseña para su uso posterior.
(Para autenticación de clave pública SSH) Agregar claves públicas SSH a los usuarios
Al almacenar una clave pública SSH para un usuario en AD, puede iniciar sesión sin ingresar una contraseña. Puede utilizar un par de claves existente o puede crear un nuevo par de claves con OpenSSH. ssh-keygen
dominio. Para obtener más información sobre cómo generar un par de claves, consulte Cree un par de claves para su instancia Amazon EC2.
- In Directorio activo de usuarios y computadoras, En la Ver menú, activar Características avanzadas.
- Abra la Propiedades diálogo del usuario.
- En Editor de atributos pestaña, elegir
altSecurityIdentities
escoger Editar. - Valor para agregar, escoger Añada.
- Valores, agregue una clave pública SSH.
- Elige OK.Confirme que la clave pública SSH aparezca como un atributo.
Obtenga una contraseña ofuscada para el usuario de solo lectura
Para evitar incluir una contraseña de texto sin formato en el archivo de configuración de SSSD, confunda la contraseña. Para este paso, necesita un entorno Linux (portátil local, instancia EC2 de Linux o CloudShell).
Instale la sssd-tools
paquete en la máquina Linux para instalar el módulo Python pysss
por ofuscación:
Ejecute el siguiente script Python de una línea. Introduzca la contraseña del ReadOnly
usuario. Obtendrá la contraseña ofuscada.
Cree un clúster HyperPod con un script de ciclo de vida habilitado para SSSD
A continuación, crea un clúster HyperPod con integración LDAPS/Active Directory.
- Encuentra el archivo de configuración
config.py
en el directorio de su script de ciclo de vida, ábralo con su editor de texto y edite las propiedades en elConfig
clase ySssdConfig
clase:- Set
True
paraenable_sssd
para habilitar la configuración de SSSD. - El
SssdConfig
La clase contiene parámetros de configuración para SSSD. - Asegúrese de utilizar la contraseña ofuscada para el
ldap_default_authtok
propiedad, no una contraseña de texto sin formato.
- Set
- Copie el archivo del certificado
ldaps.crt
al mismo directorio (dondeconfig.py
existe). - Cargue los archivos de script del ciclo de vida modificados en su Servicio de almacenamiento simple de Amazon (Amazon S3) y cree un clúster HyperPod con él.
- Espere hasta que el estado cambie a En servicio.
Verificación
Verifiquemos la solución iniciando sesión en el clúster con SSH. Debido a que el clúster se creó en una subred privada, no puede acceder mediante SSH directamente al clúster desde su entorno local. Puede elegir entre dos opciones para conectarse al clúster.
Opción 1: inicio de sesión SSH a través de AWS Systems Manager
Puedes usar Gerente de sistemas de AWS como proxy para la conexión SSH. Agregue una entrada de host al archivo de configuración SSH ~/.ssh/config
usando el siguiente ejemplo. Para el HostName
, especifique el nombre de destino de Systems Manager en el formato de sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]
. Para el IdentityFile
, especifique la ruta del archivo a la clave privada SSH del usuario. Este campo no es obligatorio si elige la autenticación de contraseña.
Ejecute el ssh
comando usando el nombre de host que especificó. Confirme que puede iniciar sesión en la instancia con el usuario especificado.
En este punto, los usuarios aún pueden usar la sesión de shell predeterminada de Systems Manager para iniciar sesión en el clúster como ssm-user
con privilegios administrativos. Para bloquear el acceso al shell predeterminado de Systems Manager y aplicar el acceso SSH, puede configurar su política de IAM consultando el siguiente ejemplo:
Para obtener más detalles sobre cómo imponer el acceso SSH, consulte Inicie una sesión con un documento especificando los documentos de la sesión en las políticas de IAM.
Opción 2: inicio de sesión SSH a través del host bastión
Otra opción para acceder al clúster es utilizar un anfitrión bastión como apoderado. Puede usar esta opción cuando el usuario no tiene permiso para usar sesiones de Systems Manager o para solucionar problemas cuando Systems Manager no funciona.
- Cree un grupo de seguridad bastión que permita el acceso SSH entrante (puerto TCP 22) desde su entorno local.
- Actualice el grupo de seguridad del clúster para permitir el acceso SSH entrante desde el grupo de seguridad bastión.
- Cree una instancia EC2 de Linux.
- Imagen de la máquina de Amazon, escoger Servidor Ubuntu 20.04 LTS.
- Tipo de instancia, escoger t3.pequeño.
- En Configuración de red sección, proporcione los siguientes parámetros:
- VPC, escoger SageMaker HyperPod VPC (que creó con la plantilla de CloudFormation).
- Subred, elija la subred pública que creó con la plantilla de CloudFormation.
- Grupos de seguridad comunes, elija el grupo de seguridad bastión que creó.
- Configurar almacenamiento, configure el almacenamiento en 8 GB.
- Identifique la dirección IP pública del host bastión y la dirección IP privada de la instancia de destino (por ejemplo, el nodo de inicio de sesión del clúster) y agregue dos entradas de host en la configuración SSH, consultando el siguiente ejemplo:
- Ejecute el
ssh
comando usando el nombre de host de destino que especificó anteriormente y confirme que puede iniciar sesión en la instancia con el usuario especificado:
Limpiar
Limpia los recursos en el siguiente orden:
- Elimine el clúster HyperPod.
- Elimine el equilibrador de carga de red.
- Elimine el grupo objetivo de equilibrio de carga.
- Elimine el certificado importado al Administrador de certificados.
- Elimine la instancia EC2 de Windows.
- Elimine la instancia EC2 de Linux para el host bastión.
- Elimine el Microsoft AD administrado por AWS.
- Elimine la pila de CloudFormation para la VPC, las subredes, el grupo de seguridad y el volumen FSx para Lustre.
Conclusión
Esta publicación proporcionó pasos para crear un clúster HyperPod integrado con Active Directory. Esta solución elimina la molestia del mantenimiento de usuarios en clústeres de gran escala y le permite administrar usuarios y grupos de forma centralizada en un solo lugar.
Para obtener más información sobre HyperPod, consulte el Taller de hiperpod y del Guía para desarrolladores de SageMaker HyperPod. Deje sus comentarios sobre esta solución en la sección de comentarios.
Acerca de los autores
Tomonori Shimomura es arquitecto de soluciones senior en el equipo de Amazon SageMaker, donde brinda consultas técnicas detalladas a los clientes de SageMaker y sugiere mejoras de productos al equipo de producto. Antes de unirse a Amazon, trabajó en el diseño y desarrollo de software integrado para consolas de videojuegos y ahora aprovecha sus profundas habilidades en la tecnología del lado de la nube. En su tiempo libre, le gusta jugar videojuegos, leer libros y escribir software.
Giuseppe Angelo Porcelli es un Arquitecto Principal de Soluciones Especializado en Aprendizaje Automático para Amazon Web Services. Con varios años de ingeniería de software y experiencia en ML, trabaja con clientes de cualquier tamaño para comprender sus necesidades comerciales y técnicas y diseñar soluciones de IA y ML que aprovechen al máximo la nube de AWS y la pila de Amazon Machine Learning. Ha trabajado en proyectos en diferentes dominios, incluidos MLOps, visión por computadora y NLP, que involucran un amplio conjunto de servicios de AWS. En su tiempo libre, a Giuseppe le gusta jugar al fútbol.
Monidipa Chakraborty Actualmente se desempeña como ingeniero senior de desarrollo de software en Amazon Web Services (AWS), específicamente dentro del equipo de SageMaker HyperPod. Está comprometida a ayudar a los clientes mediante el diseño e implementación de sistemas robustos y escalables que demuestren excelencia operativa. Con casi una década de experiencia en desarrollo de software, Monidipa ha contribuido a varios sectores dentro de Amazon, incluidos vídeo, venta minorista, Amazon Go y AWS SageMaker.
Satish Pasumarthi es desarrollador de software en Amazon Web Services. Con varios años de ingeniería de software y experiencia en ML, le encanta cerrar la brecha entre ML y los sistemas y le apasiona construir sistemas que hagan posible la capacitación de modelos a gran escala. Ha trabajado en proyectos en una variedad de dominios, incluidos marcos de aprendizaje automático, evaluación comparativa de modelos y creación de hiperpod beta que involucra un amplio conjunto de servicios de AWS. En su tiempo libre, a Satish le gusta jugar al bádminton.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/machine-learning/integrate-hyperpod-clusters-with-active-directory-for-seamless-multi-user-login/