Formación distribuida en Amazon SageMaker - 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.

Formación distribuida en Amazon SageMaker

SageMaker proporciona bibliotecas de formación distribuidas y admite diversas opciones de formación distribuida para tareas de aprendizaje profundo, como la visión artificial (CV) y el procesamiento del lenguaje natural (NLP). Con las bibliotecas SageMaker de formación distribuidas, puede ejecutar en paralelo datos personalizados altamente escalables y rentables y modelar trabajos de formación en deep learning en paralelo. También puede utilizar otros marcos y paquetes de formación distribuidos, como PyTorch DistributedDataParallel (DDP),torchrun, MPI (mpirun) y el servidor de parámetros. La siguiente sección proporciona información sobre los conceptos fundamentales de la formación distribuida. A lo largo de la documentación, las instrucciones y los ejemplos se centran en cómo configurar las opciones de formación distribuidas para las tareas de aprendizaje profundo mediante SageMaker PythonSDK.

sugerencia

Para obtener información sobre las prácticas recomendadas para la computación distribuida de los trabajos de entrenamiento y procesamiento de machine learning (ML) en general, consulte Computación distribuida con SageMaker mejores prácticas.

Conceptos de formación distribuida

SageMakerLas bibliotecas de formación distribuidas utilizan los siguientes términos y funciones de formación distribuida.

Conjuntos de datos y lotes

  • Conjunto de datos de entrenamiento: todos los datos utilizados para entrenar el modelo.

  • Tamaño del lote global: el número de registros seleccionados del conjunto de datos de entrenamiento en cada iteración para enviarlos GPUs al clúster. Es el número de registros sobre los que se calcula el gradiente en cada iteración. Si se utiliza el paralelismo de datos, es igual al número total de réplicas del modelo multiplicado por el tamaño del lote por réplica: global batch size = (the number of model replicas) * (per-replica batch size). En la literatura sobre machine learning, a un solo lote del tamaño de un lote global se le suele denominar minilote.

  • Tamaño de lote por réplica: cuando se utiliza el paralelismo de datos, es el número de registros que se envían a cada réplica del modelo. Cada réplica del modelo realiza una pasada hacia adelante y hacia atrás con este lote para calcular las actualizaciones de las ponderaciones. Las actualizaciones de ponderaciones resultantes se sincronizan (se promedian) en todas las réplicas antes de procesar el siguiente conjunto de lotes por réplica.

  • Microlote: un subconjunto del minilote o, si se utiliza un modelo híbrido y un paralelismo de datos, es un subconjunto del lote del tamaño de cada réplica. Cuando utilizas SageMaker la biblioteca de paralelismo de modelos distribuidos, cada microlote se introduce en el proceso de entrenamiento one-by-one y sigue un programa de ejecución definido por el tiempo de ejecución de la biblioteca.

Entrenamiento

  • Época: un ciclo de entrenamiento que recorre todo el conjunto de datos. Es común tener varias iteraciones por época. El número de épocas que utilice en el entrenamiento es único en su modelo y caso de uso.

  • Iteración: una única pasada hacia adelante y hacia atrás realizada con un lote global (un minilote) de datos de entrenamiento. El número de iteraciones realizadas durante el entrenamiento viene determinado por el tamaño del lote global y el número de épocas utilizadas para el entrenamiento. Por ejemplo, si un conjunto de datos incluye 5000 muestras y utiliza un tamaño de lote global de 500, se necesitarán 10 iteraciones para completar una sola época.

  • Tasa de aprendizaje: variable que influye en la cantidad en que se cambian las ponderaciones en respuesta al error calculado del modelo. La tasa de aprendizaje desempeña un papel importante en la capacidad del modelo para converger, así como en la velocidad y la optimización de la convergencia.

Instancias y GPUs

  • Instancias: una instancia de computación de aprendizaje AWS automático. También se denominan nodos.

  • Tamaño del clúster: cuando se utiliza SageMaker una biblioteca de formación distribuida, es el número de instancias multiplicado por el número GPUs de cada instancia. Por ejemplo, si utilizas dos instancias ml.p3.8xlarge en un trabajo de formación, que tienen 4 GPUs cada una, el tamaño del clúster es 8. Si bien aumentar el tamaño del clúster puede reducir los tiempos de entrenamiento, la comunicación entre las instancias debe optimizarse; de lo contrario, la comunicación entre los nodos puede aumentar la sobrecarga y reducir los tiempos de entrenamiento. La biblioteca de formación SageMaker distribuida está diseñada para optimizar la comunicación entre las instancias informáticas de Amazon EC2 ML, lo que permite una mayor utilización de los dispositivos y tiempos de entrenamiento más rápidos.

Soluciones de entrenamiento distribuido

  • Paralelismo de datos: estrategia de entrenamiento distribuido en la que un conjunto de datos de entrenamiento se divide GPUs en varios en un clúster de cómputo, que consta de varias instancias de Amazon EC2 ML. Cada uno GPU contiene una réplica del modelo, recibe diferentes lotes de datos de entrenamiento, realiza un pase hacia adelante y hacia atrás y comparte las actualizaciones de peso con los demás nodos para sincronizarlas antes de pasar al siguiente lote y, finalmente, a otra época.

  • Paralelismo de modelos: estrategia de entrenamiento distribuido en la que el modelo se divide en varias de ellas GPUs en un clúster de cómputo, que consta de varias instancias de Amazon ML. EC2 El modelo puede ser complejo y tener un gran número de capas y ponderaciones ocultas, por lo que no cabe en la memoria de una sola instancia. Cada uno GPU incluye un subconjunto del modelo, a través del cual los datos fluyen y las transformaciones se comparten y compilan. La eficiencia del paralelismo del modelo, en términos de GPU uso y tiempo de entrenamiento, depende en gran medida de cómo se divida el modelo y del programa de ejecución utilizado para realizar las pasadas hacia adelante y hacia atrás.

  • Programa de ejecución de canalización (canalización): el programa de ejecución de canalización determina el orden en que se realizan los cálculos (microlotes) y se procesan los datos en todos los dispositivos durante el entrenamiento de modelos. La canalización es una técnica que permite lograr una verdadera paralelización en el paralelismo del modelo y superar la pérdida de rendimiento debida a la computación secuencial al realizar el procesamiento simultáneo en diferentes muestras de datos. GPUs Para obtener más información, consulte el programa de ejecución de canalización.

Conceptos avanzados

Los profesionales de Machine Learning (ML) suelen enfrentarse a dos desafíos de escalado cuando entrenan modelos: escalar el tamaño del modelo y escalar los datos de entrenamiento. Si bien el tamaño y la complejidad del modelo pueden mejorar la precisión, existe un límite en cuanto al tamaño del modelo que puede caber en una sola CPU oGPU. Además, escalar el tamaño del modelo puede resultar en más cálculos y tiempos de entrenamiento más largos.

No todos los modelos gestionan el escalado de los datos de entrenamiento igual de bien, ya que necesitan ingerir todos los datos de entrenamiento en memoria para el entrenamiento. Solo se escalan verticalmente y se adaptan a tipos de instancias cada vez más grandes. En la mayoría de los casos, escalar los datos de entrenamiento da como resultado tiempos de entrenamiento más largos.

El aprendizaje profundo (DL) es una familia específica de algoritmos de machine learning que consta de varias capas de redes neuronales artificiales. El método de entrenamiento más común es el Stochastic Gradient Descent () en minilotes. SGD En el caso de los minilotesSGD, el modelo se entrena realizando pequeños cambios iterativos de sus coeficientes en la dirección que reduce su error. Dichas iteraciones se llevan a cabo en submuestras del mismo tamaño del conjunto de datos de entrenamiento, denominadas minilotes. Para cada minilote, el modelo se ejecuta en cada registro del minilote, se mide su error y se estima el gradiente del error. A continuación, se mide el gradiente medio en todos los registros del minilote y se proporciona una dirección de actualización para cada coeficiente del modelo. Una revisión completa del conjunto de datos de entrenamiento se denomina época. Los entrenamientos con modelos suelen constar de docenas a cientos de épocas. El minilote SGD tiene varias ventajas: en primer lugar, su diseño iterativo hace que el tiempo de entrenamiento sea teóricamente lineal en relación con el tamaño del conjunto de datos. En segundo lugar, en un minilote dado, el modelo procesa cada registro de forma individual sin necesidad de ninguna comunicación entre registros que no sea la media del gradiente final. Por lo tanto, el procesamiento de un minilote es especialmente adecuado para la paralelización y la distribución. 

La SGD formación en paralelo mediante la distribución de los registros de un minilote en diferentes dispositivos informáticos se denomina entrenamiento distribuido en paralelo de datos y es el paradigma de distribución de DL más utilizado. El entrenamiento de paralelismo de datos es una estrategia de distribución relevante para escalar el tamaño del minilote y procesar cada minilote más rápido. Sin embargo, el entrenamiento de paralelismo de datos conlleva la complejidad adicional de tener que calcular el promedio de gradiente en minillotes con gradientes procedentes de todos los trabajadores y comunicárselo a todos los trabajadores, un paso llamado allreduce que puede representar una sobrecarga creciente, a medida que se escala el grupo de entrenamiento, y que también puede penalizar drásticamente el tiempo de entrenamiento si se implementa o implementa incorrectamente sobre sustracciones de hardware inadecuadas. 

Los datos paralelos SGD aún requieren que los desarrolladores puedan incluir al menos el modelo y un único registro en un dispositivo informático, como un único CPU oGPU. Al entrenar modelos muy grandes, como transformadores de gran tamaño en el procesamiento del lenguaje natural (NLP), o modelos de segmentación sobre imágenes de alta resolución, puede haber situaciones en las que esto no sea posible. Una forma alternativa de dividir la carga de trabajo es partir el modelo en varios dispositivos informáticos, un enfoque denominado entrenamiento distribuido con una estrategia paralela modelo.