Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Solución de problemas para entrenamiento distribuido en Amazon SageMaker AI.
Si tiene problemas para ejecutar un trabajo de entrenamiento cuando utiliza la biblioteca, utilice la siguiente lista para intentar solucionar el problema. Si necesita más ayuda, póngase en contacto con el equipo de SageMaker AI a través del Centro de soporte de AWS
Temas
Uso del paralelismo de datos distribuidos de SageMaker AI con el depurador y los puntos de comprobación de Amazon SageMaker
Para monitorizar los cuellos de botella del sistema, las operaciones del marco de perfiles y los tensores de salida del modelo de depuración para trabajos de entrenamiento con el paralelismo de datos distribuidos de SageMaker AI, utilice el depurador de Amazon SageMaker.
Sin embargo, cuando utilice el depurador de SageMaker, el paralelismo de datos distribuidos de SageMaker AI y los puntos de control de SageMaker AI, es posible que aparezca un error similar al siguiente ejemplo.
SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled
Esto se debe a un error interno entre el depurador y los puntos de control, que se produce cuando habilita el paralelismo de datos distribuidos de SageMaker AI.
-
Si habilita las tres funciones, SageMaker Python SDK desactiva automáticamente el depurador al pasar
debugger_hook_config=False, que equivale al siguiente ejemploestimatordel marco.bucket=sagemaker.Session().default_bucket() base_job_name="sagemaker-checkpoint-test" checkpoint_in_bucket="checkpoints" # The S3 URI to store the checkpoints checkpoint_s3_bucket="s3://{}/{}/{}".format(bucket, base_job_name, checkpoint_in_bucket) estimator = TensorFlow( ... distribution={"smdistributed": {"dataparallel": { "enabled": True }}}, checkpoint_s3_uri=checkpoint_s3_bucket, checkpoint_local_path="/opt/ml/checkpoints", debugger_hook_config=False ) -
Si desea seguir utilizando el paralelismo de datos distribuidos de SageMaker AI y el depurador de SageMaker, una solución alternativa consiste en agregar manualmente funciones de punto de control a su script de entrenamiento en lugar de especificar los parámetros
checkpoint_s3_uriycheckpoint_local_pathdel estimador. Para obtener más información sobre cómo configurar los puntos de control manuales en un script de entrenamiento, consulte Guardar puntos de control.
Un prefijo inesperado adjunto a las claves de parámetros del modelo
Para los trabajos de entrenamiento distribuido de PyTorch, es posible asociar un prefijo inesperado (model por ejemplo) a las claves state_dict (parámetros de modelo). La biblioteca de paralelismo de datos de SageMaker AI no altera ni antecede directamente ningún nombre de parámetro de modelo cuando los trabajos de entrenamiento de PyTorch guardan artefactos de modelo. El entrenamiento distribuido de PyTorch cambia los nombres en el state_dict para pasar por la red, anteponiendo el prefijo. Si se produce algún problema de fallo del modelo debido a diferentes nombres de parámetros mientras utiliza la biblioteca de paralelismo de datos y los puntos de control de SageMaker AI para el entrenamiento de PyTorch, adapte el siguiente código de ejemplo para eliminar el prefijo en el paso en el que se cargan los puntos de control en el script de entrenamiento.
state_dict = {k.partition('model.')[2]:state_dict[k] for k in state_dict.keys()}
Esto lleva cada clave state_dict como valor de cadena, separa la cadena en la primera aparición de 'model.' y toma el tercer elemento de lista (con el índice 2) de la cadena particionada.
Para obtener más información sobre el problema de los prefijos, consulte un hilo de discusión en¿Nombres de parámetros de prefijo en el modelo guardado si está entrenado por varias GPU?
Para obtener más información sobre los métodos de PyTorch para guardar y cargar modelos, consulte Guardar y cargar modelo en todos los dispositivos
Estancamiento del trabajo de entrenamiento distribuido de SageMaker AI durante la inicialización
Si el trabajo de entrenamiento paralelo de datos distribuidos de SageMaker AI se detiene durante la inicialización al utilizar instancias habilitadas para EFA, esto podría deberse a una configuración incorrecta en el grupo de seguridad de la subred de VPC que se utiliza para el trabajo de entrenamiento. EFA requiere una configuración de grupo de seguridad adecuada para habilitar el tráfico entre los nodos.
Reglas de entrada y de salida para los grupos de seguridad
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/
. -
En el panel de navegación izquierdo, elija Grupos de seguridad.
-
Seleccione el grupo de seguridad vinculado a la subred de VPC que utiliza para el entrenamiento.
-
En la sección Detalles, copie el ID del grupo de seguridad.
-
En la pestaña Reglas de entrada, seleccione Editar reglas de entrada.
-
En la página Editar reglas de entrada, haga lo siguiente:
-
Seleccione Agregar regla.
-
En Tipo, seleccione Todo el tráfico.
-
En Fuente, seleccione Personalizado, pegue el ID del grupo de seguridad en el cuadro de búsqueda y, a continuación, seleccione el grupo de seguridad que aparece.
-
-
Seleccione Guardar reglas para finalizar la configuración de la regla de entrada para el grupo de seguridad.
-
En la pestaña Reglas de salida, seleccione Editar reglas de salida.
-
Repita los pasos 6 y 7 para añadir la misma regla que una regla saliente.
Después de completar los pasos anteriores para configurar el grupo de seguridad con las reglas de entrada y salida, vuelva a ejecutar el trabajo de entrenamiento y verifique si se ha resuelto el problema de retraso.
Para obtener más información sobre la configuración de grupos de seguridad para VPC y EFA, consulte Grupos de seguridad para la VPC y Elastic Fabric Adapter.
Estancamiento del trabajo de entrenamiento distribuido de SageMaker AI durante la inicialización
Una de las causas fundamentales de los problemas de estancamiento al final del entrenamiento es la falta de coincidencia en el número de lotes que se procesan por época en diferentes rangos. Todos los trabajadores (GPU) sincronizan sus degradados locales en la pasada hacia atrás para asegurarse de que todos tienen la misma copia del modelo al final de la iteración por lotes. Si los tamaños de los lotes se asignan de forma desigual a diferentes grupos de trabajadores durante la última época del entrenamiento, el trabajo de entrenamiento se detiene. Por ejemplo, mientras un grupo de trabajadores (grupo A) termina de procesar todos los lotes y sale del ciclo de entrenamiento, otro grupo de trabajadores (grupo B) comienza a procesar otro lote y espera la comunicación del grupo A para sincronizar los degradados. Esto hace que el grupo B espere al grupo A, que ya ha completado el entrenamiento y no tiene degradados que sincronizar.
Por lo tanto, al configurar el conjunto de datos del entrenamiento, es importante que cada trabajador obtenga el mismo número de muestras de datos para que cada trabajador pase por el mismo número de lotes durante el entrenamiento. Asegúrese de que cada rango obtenga el mismo número de lotes para evitar este problema de estancamiento.
Observación de la degradación de la eficiencia de escalado debido a los cuellos de botella en el rendimiento de Amazon FSx
Una posible causa de la disminución de la eficiencia de escalado es el límite de rendimiento de los FSx. Si observa una caída repentina en la eficiencia de escalado al cambiar a un clúster de entrenamiento más grande, intente utilizar un sistema de archivos FSx para Lustre más grande con un límite de rendimiento superior. Para obtener más información, consulte el rendimiento agregado del sistema de archivos y la administración de la capacidad de almacenamiento y rendimiento en la Guía del usuario de Amazon FSx para Lustre.
El trabajo de entrenamiento distribuido de SageMaker AI con PyTorch devuelve advertencias de obsolescencia
Desde la versión 1.4.0, la biblioteca de paralelismo de datos distribuidos de SageMaker AI funciona como un backend de PyTorch distribuido. Debido al cambio radical que supone el uso de la biblioteca con PyTorch, es posible que aparezca un mensaje de advertencia que indique que las API smdistributed del paquete distribuido de PyTorch están en desuso. El mensaje de advertencia debería ser similar al siguiente:
smdistributed.dataparallel.torch.dist is deprecated in the SageMaker AI distributed data parallel library v1.4.0+. Please use torch.distributed and specify 'smddp' as a backend when initializing process group as follows: torch.distributed.init_process_group(backend='smddp') For more information, see the library's API documentation at https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html
En la versión 1.4.0 y versiones posteriores, la biblioteca solo necesita importarse una vez en la parte superior del script de entrenamiento y configurarse como backend durante la inicialización distribuida de PyTorch. Con la única línea de especificaciones de backend, puede mantener su script de entrenamiento de PyTorch sin cambios y utilizar directamente los módulos distribuidos de PyTorch. Consulte Uso de la biblioteca de SMDDP en el script de entrenamiento de PyTorch para obtener más información sobre los cambios más importantes y la nueva forma de utilizar la biblioteca con PyTorch.