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).
Configuración de la configuración correcta para entrenamiento distribuido
Para estimar y buscar el mejor punto de partida para aplicar las técnicas de entrenamiento distribuido que ofrece SMP v2, consulte la siguiente lista. Cada elemento de la lista analiza la ventaja de utilizar las Características principales de la biblioteca de paralelismo de SageMaker modelos v2 junto con compensaciones potenciales.
Sugerencias de configuración
En esta sección se proporcionan directrices 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 los lotes.
En primer lugar, recomendamos las siguientes configuraciones, independientemente del tamaño del modelo.
-
Use el tipo de instancia más potente que pueda usar.
-
Active precisión mixta en todo momento, ya que ofrece beneficios sustanciales en cuanto a rendimiento y reducción de memoria. Le recomendamos que utilice
bfloat16
, ya que es más preciso quefloat16
. -
Active la biblioteca de paralelismo de datos SageMaker distribuidos (en lugar de utilizar la 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 el modelo tiene más de 60 000 millones de parámetros, le recomendamos que utilice Inicialización diferida de parámetros. También puede utilizar inicialización diferida de parámetros para acelerar la inicialización de cualquier modelo.
-
Le recomendamos que habilite Puntos de control de activación.
Según el tamaño del modelo, le recomendamos que empiece con las siguientes instrucciones.
-
Uso de paralelismo de datos particionados
-
En función del tamaño de lote que desee incluir en la memoria de la GPU, elija el grado de paralelismo de datos particionados adecuado. Normalmente, debería 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 ve una advertencia de que se está vaciando la caché, le recomendamos que aumente el grado de particionamiento.
-
Determine
world_size
en 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 descarga de activaciones. Dependiendo de los escenarios, puede satisfacer sus necesidades de memoria sin tener que aumentar el grado de particionamiento, 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 indica en. Paralelismo de tensores
-
Cuando realice entrenamiento con clústeres grandes, solo con FSDP el tamaño del lote global puede llegar a ser demasiado grande y provocar problemas de convergencia para el modelo. En general, la mayoría de los trabajos de investigación mantienen el tamaño de lote por debajo de los 4 millones de tokens. En este caso, puede resolver el problema componiendo el PyTorch FSDP con el paralelismo tensorial de 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 produce un tamaño de lote global de 8 millones de tokens. Sin embargo, cuando se utiliza un paralelismo de tensores de grado 2 y un tamaño de lote de 1 por grupo de tensores paralelos, se convierte en un tamaño de 1/2 lote por GPU, lo que se traduce en 4 millones de tokens.
-
Cuando se entrena con contextos de gran longitud, como 8000 o 16 000, la memoria de activación puede llegar a ser muy alta. El FSDP no fragmenta las activaciones y las activaciones pueden provocar que se agote la memoria. GPUs 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 torch.sagemaker.transform mixta (o) y entrenadas en ellas. FP16 BF16
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 consola de SageMaker IA y Amazon CloudWatch
Para monitorear las métricas a nivel del sistema, como el uso de la memoria de la CPU, el uso de la memoria de la GPU y el uso de la GPU, utilice la visualización proporcionada a través de la consola de SageMaker IA
-
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 Amazon CloudWatch Metrics para supervisar y analizar los trabajos de formación.
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 usar Lustre, FSx añada
. 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 funciones de SageMaker IA, añada
AmazonSageMakerFullAccess
.