Preguntas frecuentes sobre la biblioteca de paralelismo de datos distribuidos de Amazon SageMaker AI - Amazon SageMaker AI

Preguntas frecuentes sobre la biblioteca de paralelismo de datos distribuidos de Amazon SageMaker AI

Utilice lo siguiente para buscar respuestas a las preguntas más frecuentes sobre la biblioteca de SMDDP.

P: Cuando utiliza la biblioteca, ¿cómo se gestionan las instancias de CPU compatibles con allreduce? ¿Tengo que crear clústeres de CPU-GPU heterogéneos o el servicio de SageMaker AI crea C5 adicionales para trabajos que utilizan la biblioteca de SMDDP?

La biblioteca de SMDDP solo admite instancias de GPU, más específicamente, instancias P4d y P4de con GPU NVIDIA A100 y EFA. No se inicializan instancias C5 o CPU adicionales; si su trabajo de entrenamiento de SageMaker AI es en un clúster P4d de 8 nodos, solo se utilizan 8 instancias de ml.p4d.24xlarge. No se aprovisionan instancias adicionales.

P: Tengo un trabajo de entrenamiento que tarda 5 días en una sola instancia de ml.p3.24xlarge con un conjunto de hiperparámetros H1 (tasa de aprendizaje, tamaño de lote, optimizador, etc.). ¿Usar la biblioteca de paralelismo de datos de SageMaker AI y un clúster cinco veces más grande es suficiente para lograr una aceleración aproximada multiplicada por cinco? ¿O tengo que revisar sus hiperparámetros de entrenamiento después de activar la biblioteca de SMDDP?

La biblioteca cambia el tamaño total del lote. El nuevo tamaño general del lote se escala linealmente con la cantidad de instancias de entrenamiento utilizadas. Como resultado de esto, hay que cambiar los hiperparámetros, como la tasa de aprendizaje, para garantizar la convergencia.

P: ¿La biblioteca de SMDDP admite Spot?

Sí. Cómo utilizar el entrenamiento puntual gestionado. Usted debe especificar la ruta al archivo de punto de control en el trabajo de entrenamiento de SageMaker. Se habilitan los puntos de control para guardar y restaurar en su script de entrenamiento, tal como se menciona en los últimos pasos de Uso de la biblioteca de SMDDP en un script de entrenamiento de TensorFlow (obsoleto) y Uso de la biblioteca de SMDDP en el script de entrenamiento de PyTorch.

P: ¿Es relevante la biblioteca de SMDDP en la configuración de un solo host y varios dispositivos?

Es posible utilizar la biblioteca en el entrenamiento con un solo host y varios dispositivos, pero solo ofrece mejoras de rendimiento en el entrenamiento con varios hosts.

P: ¿Dónde debe almacenarse el conjunto de datos de entrenamiento?

El conjunto de datos de entrenamiento puede almacenarse en un bucket de Amazon S3 o en una unidad de Amazon FSx. Consulte este documento para conocer varios sistemas de archivos de entrada compatibles para un trabajo de entrenamiento.

P: Al utilizar la biblioteca de SMDDP, ¿es obligatorio tener datos de entrenamiento en FSx para Lustre? ¿Se pueden utilizar Amazon EFS y Amazon S3?

Por lo general, le recomendamos que utilice Amazon FSx debido a su menor latencia y mayor rendimiento. Si lo prefiere, puede utilizar Amazon EFS o Amazon S3.

P: ¿Se puede utilizar la biblioteca con nodos de CPU?

No. Para buscar tipos de instancias compatibles con la biblioteca SMDDP, consulte Tipos de instancias admitidas.

P: ¿Qué marcos y versiones de marco admite actualmente la biblioteca de SMDDP en la inicialización?

La biblioteca de SMDDP admite actualmente PyTorch v1.6.0 o versiones posteriores y TensorFlow v2.3.0 o versiones posteriores. No es compatible con TensorFlow 1.x. Para obtener más información sobre qué versión de la biblioteca de SMDDP está empaquetada en los contenedores de aprendizaje profundo de AWS, consulte Notas de versión para los contenedores de aprendizaje profundo.

P: ¿La biblioteca admite AMP?

Sí, la biblioteca de SMDDP admite precisión mixta automática (AMP) desde el primer momento. No se necesita ninguna acción adicional para habilitar AMP que no sean las modificaciones a nivel de marco de su script de entrenamiento. Si los gradientes están en FP16, la biblioteca de paralelismo de datos de SageMaker AI ejecuta su operación AllReduce en FP16. Para obtener más información sobre la implementación de API de AMP en su script de entrenamiento, consulte los siguientes recursos:

P: ¿Cómo identifico si mi trabajo de entrenamiento distribuido se ralentiza debido a un cuello de botella de E/S?

Con un clúster más grande, el trabajo de entrenamiento requiere más rendimiento de E/S y, por lo tanto, el rendimiento del entrenamiento podría tardar más (más épocas) en aumentar el rendimiento máximo. Esto indica que E/S está teniendo cuellos de botella y que el caché es más difícil de crear a medida que aumenta la escala de los nodos (mayor requerimiento de rendimiento, topología de red más compleja). Para obtener más información sobre la supervisión del rendimiento de Amazon FSx en CloudWatch, consulte Monitorización de FSx para Lustre en la Guía del usuario de FSx para Lustre.

P: ¿Cómo puedo resolver los cuellos de botella de E/S al ejecutar un trabajo de entrenamiento distribuido con paralelismo de datos?

Le recomendamos encarecidamente que utilice Amazon FSx como canal de datos si utiliza Amazon S3. Si ya utiliza Amazon FSx pero sigue teniendo problemas de cuello de botella de E/S, es posible que haya configurado el sistema de archivos Amazon FSx con un bajo rendimiento de E/S y una pequeña capacidad de almacenamiento. Para obtener más información sobre cómo estimar y elegir el tamaño correcto de la capacidad de rendimiento de E/S, consulteUtilice Amazon FSx y configure una capacidad óptima de almacenamiento y rendimiento.

P: (Para la biblioteca v1.4.0 o versiones posteriores) ¿Cómo puedo resolver el error Invalid backend al inicializar el grupo de procesos?

Si aparece el mensaje de error ValueError: Invalid backend: 'smddp' al llamar a init_process_group, se debe a un cambio radical en la biblioteca de SMDDP v1.4.0 y versiones posteriores. Debe importar el cliente PyTorch de la biblioteca, smdistributed.dataparallel.torch.torch_smddp, que registra smddp como backend de PyTorch. Para obtener más información, consulte Uso de la biblioteca de SMDDP en el script de entrenamiento de PyTorch.

P: (Para la biblioteca de SMDDP v1.4.0 o versiones posteriores) Me gustaría llamar a las primitivas colectivas de la interfaz torch.distributed. ¿Qué primitivas admite el backend de smddp?

En v1.4.0, la biblioteca de SMDDP admite all_reduce, broadcast, reduce, all_gather y barrier de la interfaz de torch.distributed.

P: (Para la biblioteca de SMDDP v1.4.0 o versiones posteriores) ¿Funciona esta nueva API con otras clases o bibliotecas de DDP personalizadas, como Apex DDP?

La biblioteca de SMDDP se ha probado con otras bibliotecas de paralelismo de datos distribuidos por terceros e implementaciones de marcos que utilizan los módulos torch.distribtued. El uso de la biblioteca de SMDDP con clases de DDP personalizadas funciona siempre que la biblioteca de SMDDP admita las operaciones colectivas utilizadas por las clases de DDP personalizadas. Consulte la pregunta anterior para ver una lista de los colectivos compatibles. Si necesita más ayuda, póngase en contacto con el equipo de SageMaker AI a través del Centro de soporte de AWS o Foros para desarrolladores de AWS para Amazon SageMaker AI.

P: ¿La biblioteca de SMDDP admite la opción de traer su propio contenedor (BYOC)? Si es así, ¿cómo instalo la biblioteca y ejecuto un trabajo de entrenamiento distribuido escribiendo un Dockerfile personalizado?

Si quiere integrar la biblioteca de SMDDP y sus dependencias mínimas en su propio contenedor de Docker, BYOC es el enfoque correcto. Puede crear su propio contenedor utilizando el archivo binario de la biblioteca. El proceso recomendado consiste en escribir un Dockerfile personalizado con la biblioteca y sus dependencias, crear el contenedor de Docker, alojarlo en Amazon ECR y utilizar el URI de la imagen ECR para lanzar un trabajo de entrenamiento con la clase de estimador genérico de SageMaker AI. Para obtener más instrucciones sobre cómo preparar un Dockerfile personalizado para un entrenamiento distribuido en SageMaker AI con la biblioteca de SMDDP, consulte Creación de contenedor de Docker propio con la biblioteca de paralelismo de datos distribuidos de SageMaker AI.