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.
SageMaker mejores prácticas de paralelismo de modelos distribuidos
Utilice las siguientes pautas cuando ejecute un trabajo de entrenamiento distribuido con la biblioteca paralela de SageMaker modelos v2 (SMP v2).
Establecer la configuración correcta para la formación distribuida
Para estimar y encontrar el mejor punto de partida para aplicar las técnicas de formación distribuida que ofrece SMP v2, consulte la siguiente lista. Cada elemento de la lista analiza las ventajas de utilizarlas Características principales de la biblioteca de paralelismo de SageMaker modelos v2 junto con las posibles ventajas y desventajas.
Sugerencias de configuración
Esta sección proporciona pautas sobre cómo decidir cuáles son las mejores configuraciones de modelo para lograr un rendimiento óptimo con los requisitos globales de tamaño de lote.
En primer lugar, recomendamos las siguientes configuraciones, independientemente del tamaño del modelo.
-
Usa el tipo de instancia más potente que puedas usar.
-
Activa la precisión mixta en todo momento, ya que ofrece beneficios sustanciales en cuanto a rendimiento y reducción de memoria. Le recomendamos que lo utilice
bfloat16
, ya que es más preciso quefloat16
. -
Active la biblioteca de paralelismo de datos SageMaker distribuidos (en lugar de usar NCCL) siempre que sea posible, como se muestra en la siguiente imagen. Compatibilidad con la biblioteca SMDDP optimizada para la infraestructura AWS Una excepción son los casos de tensor-parallelism-only uso (y).
hybrid_shard_degree = 1
tensor_paralle_degree > 1
-
Si su modelo tiene más de 60 000 millones de parámetros, le recomendamos que lo utiliceInicialización retrasada de los parámetros. También puede utilizar la inicialización diferida de los parámetros para acelerar la inicialización de cualquier modelo.
-
Le recomendamos que la active. Puntos de control de activación
Según el tamaño del modelo, le recomendamos que comience con las siguientes instrucciones.
-
Utilice el paralelismo de datos fragmentados.
-
En función del tamaño del lote que desee incluir en la memoria de la GPU, elija el grado de paralelismo de datos fragmentados adecuado. Normalmente, deberías empezar con el grado más bajo para que el modelo quepa en la memoria de la GPU y, al mismo tiempo, minimizar la sobrecarga que supone la comunicación de red. Si ves una advertencia de que se está vaciando la memoria caché, te recomendamos que aumentes el grado de fragmentación.
-
Determine en
world_size
función del tamaño máximo del lote local y del tamaño de lote global requerido, si lo hubiera. -
Puede experimentar con la activación y la descarga. Dependiendo de las situaciones, puede satisfacer tus necesidades de memoria sin tener que aumentar el grado de fragmentación, lo que se traduce en menos comunicación.
-
-
Utilice el paralelismo de datos fragmentados del PyTorch FSDP y el paralelismo tensorial del SMP v2 de forma simultánea, tal y como se presenta en. Paralelismo de tensores
-
Cuando se entrena en clústeres grandes, solo con el FSDP, el tamaño del lote global puede llegar a ser demasiado grande y provocar problemas de convergencia para el modelo. Por lo general, la mayoría de los trabajos de investigación mantienen el tamaño del lote por debajo de los 4 millones de fichas. En este caso, puede resolver el problema componiendo el PyTorch FSDP con el paralelismo tensorial del SMP v2 para reducir el tamaño del lote.
Por ejemplo, si tiene 256 nodos y una longitud de secuencia de 4096, incluso un tamaño de lote de 1 por GPU da como resultado un tamaño de lote global de 8 millones de tokens. Sin embargo, cuando se utiliza un paralelismo tensorial de grado 2 y un tamaño de lote de 1 por grupo de tensores paralelos, se convierte en 1/2 lote por GPU, lo que se traduce en 4 millones de fichas.
-
Cuando se entrena con contextos de gran longitud, como 8 000 o 16 000, la memoria de activación puede agotarse considerablemente. El FSDP no fragmenta las activaciones, y las activaciones pueden provocar que las GPU se queden sin memoria. En estos casos, puedes entrenar de forma eficiente componiendo el PyTorch FSDP con el paralelismo tensorial del SMP v2.
-
Configuraciones de referencia
El equipo de formación en paralelismo de SageMaker modelos proporciona los siguientes puntos de referencia basados en experimentos con el modelo Llama 2 transformado en el modelo de transformador SMP utilizando ml.p4d.24xlarge
instancias con una longitud de secuencia de 4096 y precisión mixta (torch.sagemaker.transformFP16 o BF16) y entrenadas en ellas.
Modelo | Tamaño del modelo (número de parámetros del modelo) | El número de instancias | Grado de paralelismo de datos partidos | Grado de tensor paralelo | Puntos de control de activación | Descarga de activación | Tamaño de lote |
---|---|---|---|---|---|---|---|
Llama 2 | 7B | 1 | 8 | 1 | TRUE | FALSO | 4 |
70B | 32 | 256 | 1 | TRUE | FALSO | 2 | |
175B | 64 | 128 | 4 | TRUE | TRUE | 6 |
Puede extrapolar de las configuraciones anteriores para estimar el uso de la memoria de la GPU para la configuración del modelo. Por ejemplo, si aumenta la longitud de la secuencia de un modelo de 10 mil millones de parámetros o aumenta el tamaño del modelo a 20 mil millones, es posible que desee reducir primero el tamaño del lote. Si el modelo sigue sin encajar, intente aumentar el grado de paralelismo de tensores.
Supervisión y registro de un trabajo de formación mediante la SageMaker consola y Amazon CloudWatch
-
En el panel de navegación situado a la izquierda, seleccione Entrenamiento.
-
Seleccione Trabajos de entrenamiento.
-
En el panel principal, seleccione el nombre del trabajo de entrenamiento para el que quiera ver más detalles.
-
Examine el panel principal y busque la sección Monitor para ver la visualización automatizada.
-
Para ver los registros de trabajos de entrenamiento, seleccione Ver registros en la sección Monitor. Puede acceder a los registros de trabajos de formación distribuidos del trabajo de formación en. CloudWatch Si inició el entrenamiento distribuido de varios nodos, debería ver varias secuencias de registro con etiquetas en el formato de algo-n-1234567890. El flujo de registro algo-1 realiza un seguimiento de los registros de entrenamiento desde el nodo principal (0.º).
Para obtener más información, consulte Supervise y analice los trabajos de formación con Amazon CloudWatch Metrics.
Permisos
Para ejecutar un trabajo de SageMaker formación con un paralelismo de modelos, asegúrese de tener los permisos correctos en su función de IAM, como los siguientes:
-
Para utilizar FSx para Lustre
, agregue AmazonFSxFullAccess
. -
Para utilizar Amazon S3 como canal de datos, agregue
AmazonS3FullAccess
. -
Para utilizar Docker, cree su propio contenedor y enviarlo a Amazon ECR, agregue
AmazonEC2ContainerRegistryFullAccess
. -
Para tener acceso completo y utilizar todo el conjunto de SageMaker funciones, añada.
AmazonSageMakerFullAccess