SageMaker Mejores prácticas de paralelismo de modelos distribuidos - Amazon SageMaker

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.

Establecer la configuración correcta para un modelo determinado

Al escalar un modelo, le recomendamos que revise la siguiente lista en orden. Cada elemento de la lista analiza la ventaja de utilizar las técnicas de la biblioteca junto con las compensaciones que podrían surgir.

sugerencia

Si un modelo puede encajar bien utilizando un subconjunto de las funciones de la biblioteca, agregar más paralelismo de modelos o funciones de ahorro de memoria no suele mejorar el rendimiento.

Uso de tipos de instancias de GPU grandes
  • En el ámbito del paralelismo de modelos, lo mejor es utilizar instancias potentes con memorias de GPU grandes para gestionar la sobrecarga de las operaciones de paralelismo de modelos, como la partición de modelos en varias GPU. Recomendamos utilizar las instancias ml.p4d o ml.p3dn para entrenar modelos de aprendizaje profundo grandes. Estas instancias también están equipadas con Elastic Fabric Adapter (EFA), que proporciona un mayor ancho de banda de red y permite un entrenamiento a gran escala con paralelismo de modelos.

Estado del optimizador de fragmentos
  • El impacto del estado del optimizador de fragmentos depende del número de rangos del paralelismo de datos. Normalmente, un mayor grado de paralelismo de datos (proporcional al tamaño del nodo informático) puede mejorar la eficiencia del uso de la memoria.

    Cuando quiera reducir el tamaño de un clúster, asegúrese de comprobar la configuración de fragmentación de estado del optimizador. Por ejemplo, un modelo de aprendizaje profundo grande con fragmentación del estado del optimizador que cabe en un clúster de procesamiento con 16 GPU (por ejemplo, dos instancias P4d o P4de) puede que no siempre quepa en un nodo con 8 GPU (por ejemplo, una sola instancia P4d o P4de). Esto se debe a que la memoria combinada de 8 GPU es inferior a la memoria combinada de 16 GPU, y la memoria requerida por GPU para fragmentar más de 8 GPU también es mayor que la memoria por GPU para fragmentar en el escenario de 16 GPU. Como resultado, es posible que el aumento de los requisitos de memoria no quepa en un clúster más pequeño.

    Para obtener más información, consulte Partición del estado del optimizador.

Puntos de control de activación
  • La eficiencia de la memoria se puede mejorar mediante el control de activación de un grupo de módulos. Cuanto más agrupe los módulos, más eficiente será el uso de la memoria. Al seleccionar módulos secuenciales de puntos de control para capas, el argumento strategy de la función smp.set_activation_checkpointing agrupa las capas para marcar puntos de control. Por ejemplo, agrupar dos o más capas para hacer puntos de control es más eficiente en la memoria que el punto de control de una capa a la vez, y esto controla un tiempo de cálculo adicional para reducir el uso de la memoria.

    Para obtener más información, consulte Puntos de control de activación.

Paralelismo de tensores
  • El grado de paralelismo de tensores debe ser una potencia de dos (2, 4, 8, ..., 2n), donde el grado máximo debe ser igual al número de GPU por nodo. Por ejemplo, si utiliza un nodo con 8 GPU, los números posibles para el grado de paralelismo de tensores son 2, 4 y 8. No recomendamos números arbitrarios (como 3, 5, 6 y 7) para el grado de paralelismo de tensores. Cuando utiliza varios nodos, la configuración incorrecta del grado de paralelismo de tensores podría provocar la ejecución del paralelismo de tensores en los nodos; esto añade una sobrecarga significativa de la comunicación de las activaciones en los nodos y puede resultar costosa computacionalmente.

    Para obtener más información, consulte Paralelismo de tensores.

Paralelismo de canalización entre nodos
  • Puede ejecutar paralelismo de canalización tanto en un solo nodo como en varios nodos. Cuando utiliza el paralelismo de canalización en combinación con el paralelismo de tensores, le recomendamos ejecutar paralelismo de canalización en varios nodos y mantener el paralelismo de tensores dentro de nodos individuales.

  • El paralelismo de canalización viene con los tres mandos siguientes: microbatches, active_microbatches y prescaled_batch.

    • Cuando utiliza paralelismo de tensores con paralelismo de canalización, le recomendamos activar prescaled_batch de modo que se pueda aumentar el tamaño del lote por grupo de paralelismo de modelos para una canalización eficiente. Al activar prescaled_batch, el tamaño de lote establecido en el script de entrenamiento pasa a ser tp_size veces el tamaño del lote establecido para cada rango sin prescaled_batch.

    • Aumentar el número de microbatches ayuda a lograr una canalización eficiente y un mejor rendimiento. Tenga en cuenta que el tamaño efectivo del microlote es el tamaño del lote dividido por el número de microlotes. Si aumenta el número de microlotes manteniendo constante el tamaño del lote, cada microlote procesa menos muestras.

    • El número de active_microbatches es el número máximo de microlotes que están en proceso simultáneamente durante la canalización. Para cada microlote activo en proceso, sus activaciones y degradados ocupan memoria de la GPU. Por lo tanto, un aumento de active_microbatches ocupa más memoria de la GPU.

  • Si la memoria de la GPU y la GPU están infrautilizadas, aumenteactive_microbatches para una mejor paralelización durante la canalización.

  • Para obtener más información sobre cómo utilizar el paralelismo de tensores con paralelismo de canalización, consulte Paralelismo tensorial combinado con paralelismo de canalización.

  • Para encontrar descripciones de los parámetros antes mencionados, consulte Parámetros de smdistributed en la documentación del SDK de SageMaker Python.

Descarga de activaciones a la CPU
  • Asegúrese de que se utilice en combinación con el punto de control de activación y el paralelismo de canalización. Para garantizar que la descarga y la precarga se produzcan en segundo plano, especifique un valor superior a 1 para el parámetro microlotes.

  • Al descargar activaciones, es posible que pueda aumentar active_microbatches y, a veces, coincide con el número total de microlotes. Esto depende de qué módulos estén marcados y de cómo se divide el modelo.

    Para obtener más información, consulte Descarga de activación.

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 GPT-2, cuya longitud de secuencia es de 512 y un tamaño de vocabulario de 50 000.

El número de parámetros de modelos Tipo de instancia Paralelismo de canalización Paralelismo de tensores Partición de estado del optimizador Puntos de control de activación Lote preescalado BatchSize
50 mil millones 16 ml.p4d.24xlarge 1 4 True Cada capa de transformador True batch_size=40
30 mil millones 16 ml.p4d.24xlarge 1 8 True Cada capa de transformador True batch_size=32
60 mil millones 32 ml.p4d.24xlarge 2 8 True Cada capa de transformador True batch_size=56, microbatches=4, active_microbatches=2

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.

Modificación del script de entrenamiento

  • Antes de utilizar las funciones de la biblioteca paralela de SageMaker modelos en su guion de entrenamiento, revíselasConsejos y dificultades de configuración de la biblioteca de paralelismo de modelos SageMaker distribuidos.

  • Para iniciar un trabajo de entrenamiento más rápido, utilice el modo SageMaker local. Esto le ayuda a ejecutar rápidamente un trabajo de formación de forma local en una instancia de SageMaker notebook. Según la escala de la instancia de aprendizaje automático en la que se ejecute la instancia de su SageMaker notebook, es posible que necesite ajustar el tamaño del modelo cambiando las configuraciones del modelo, como el ancho oculto, el número de capas de transformadores y los cabezales de atención. Valide si el modelo reducido funciona bien en la instancia de cuaderno antes de utilizar un clúster grande para entrenar el modelo completo.

Supervisión y registro de un trabajo de formación mediante la SageMaker consola 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 SageMaker consola.

  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 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 o con los cuadernos de ejemplos de formación SageMaker distribuidos, asegúrese de tener los permisos correctos en su función de IAM, como los siguientes: