Prácticas recomendadas de paralelismo de modelos distribuidos de SageMaker - Amazon SageMaker AI

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.

Prácticas recomendadas de paralelismo de modelos distribuidos de SageMaker

Utilice las siguientes pautas al ejecutar un trabajo de entrenamiento distribuido con la biblioteca de paralelismo de modelos de SageMaker 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.

  1. Use el tipo de instancia más potente que pueda usar.

  2. 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 que float16.

  3. Active la biblioteca de paralelismo de datos distribuidos de SageMaker (en lugar de usar NCCL) siempre que sea aplicable, como se muestra en Compatibilidad con la biblioteca SMDDP optimizada para la infraestructura AWS. Una excepción son los casos de uso exclusivos del paralelismo de tensores (hybrid_shard_degree = 1 y tensor_paralle_degree > 1).

  4. 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.

  5. 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.

  1. Uso de paralelismo de datos particionados

    1. 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.

    2. 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.

    3. 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.

  2. Utilice el paralelismo de datos particionados de PyTorch FSDP y el paralelismo de tensores de SMP v2 simultáneamente, como se indica en Paralelismo de tensores.

    1. 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 PyTorch FSDP con paralelismo de tensores de SMP v2 para reducir el tamaño de 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.

    2. Cuando se entrena con contextos de gran longitud, como 8000 o 16 000, la memoria de activación puede llegar a ser muy alta. FSDP no particiona activaciones y las activaciones pueden provocar que las GPU se queden sin memoria. En estos escenarios, puede entrenar de manera eficiente componiendo PyTorch FSDP con paralelismo de tensores de SMP v2.

Configuraciones de referencia

El equipo de entrenamiento de paralelismo de modelos distribuidos de SageMaker proporciona los siguientes puntos de referencia basados en experimentos con el modelo Llama 2 transformado en el modelo de transformador SMP utilizando torch.sagemaker.transform y entrenando en instancias ml.p4d.24xlarge con longitud de secuencia de 4096 y precisión mixta (FP16 o 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 entrenamiento mediante la consola de SageMaker AI y Amazon CloudWatch

Para supervisar las métricas a nivel del sistema, como la utilización de la memoria de la CPU, la utilización de la memoria de la GPU y la utilización de la GPU, utilice la visualización proporcionada a través de la consola de SageMaker AI.

  1. En el panel de navegación situado a la izquierda, seleccione Entrenamiento.

  2. Seleccione Trabajos de entrenamiento.

  3. En el panel principal, seleccione el nombre del trabajo de entrenamiento para el que quiera ver más detalles.

  4. Examine el panel principal y busque la sección Monitor para ver la visualización automatizada.

  5. Para ver los registros de trabajos de entrenamiento, seleccione Ver registros en la sección Monitor. Puede acceder a los registros de trabajos de entrenamiento distribuido del trabajo de entrenamiento 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 Métricas de Amazon CloudWatch para supervisar y analizar trabajos de entrenamiento.

Permisos

Para ejecutar un trabajo de entrenamiento de SageMaker con paralelismo de modelos, asegúrese de tener los permisos correctos en su rol de IAM, como los siguientes: