Maximice el rendimiento y reduzca el costo de la capacitación en aprendizaje profundo con AWS Trainium y Amazon SageMaker

Maximice el rendimiento y reduzca el costo de la capacitación en aprendizaje profundo con AWS Trainium y Amazon SageMaker

Nodo de origen: 2010875

En la actualidad, decenas de miles de clientes crean, entrenan e implementan modelos de aprendizaje automático (ML) utilizando Amazon SageMaker para potenciar aplicaciones que tienen el potencial de reinventar sus negocios y experiencias de clientes. Estos modelos de ML han ido aumentando en tamaño y complejidad en los últimos años, lo que ha dado lugar a precisiones de última generación en una variedad de tareas y también ha hecho que el tiempo de capacitación pase de días a semanas. Como resultado, los clientes deben escalar sus modelos en cientos o miles de aceleradores, lo que los hace más costosos de entrenar.

SageMaker es un servicio de ML completamente administrado que ayuda a los desarrolladores y científicos de datos a crear, entrenar e implementar fácilmente modelos de ML. SageMaker ya ofrece la opción más amplia y profunda de ofertas informáticas con aceleradores de hardware para la capacitación de ML, incluidos G5 (Nvidia A10G) instancias y P4d (Nvidia A100) instancias.

Los crecientes requisitos informáticos exigen una potencia de procesamiento más rápida y rentable. Para reducir aún más los tiempos de capacitación del modelo y permitir que los profesionales de ML iteren más rápido, AWS ha estado innovando en chips, servidores y conectividad de centros de datos. Las nuevas instancias Trn1 impulsadas por tren de AWS Los chips ofrecen la mejor relación precio-rendimiento y el entrenamiento de modelos de aprendizaje automático más rápido en AWS, lo que proporciona hasta un 50 % menos de costo para entrenar modelos de aprendizaje profundo que instancias comparables basadas en GPU sin ninguna disminución en la precisión.

En esta publicación, le mostramos cómo puede maximizar su rendimiento y reducir costos usando instancias Trn1 con SageMaker.

Resumen de la solución

Los trabajos de capacitación de SageMaker admiten instancias ml.trn1, con tecnología de chips Trainium, que están diseñados específicamente para aplicaciones de capacitación de aprendizaje automático de alto rendimiento en la nube. Puede usar instancias ml.trn1 en SageMaker para entrenar el procesamiento del lenguaje natural (NLP), la visión por computadora y los modelos de recomendación en un amplio conjunto de aplicaciones, como reconocimiento de voz, recomendación, detección de fraude, clasificación de imágenes y videos, y pronóstico. Las instancias ml.trn1 cuentan con hasta 16 chips Trainium, que es un chip ML de segunda generación construido por AWS después Inferencia de AWS. Las instancias ml.trn1 son las primeras Nube informática elástica de Amazon (Amazon EC2) con hasta 800 Gbps de ancho de banda de red de Elastic Fabric Adapter (EFA). Para un paralelismo de datos y modelos eficiente, cada instancia ml.trn1.32xl tiene 512 GB de memoria de gran ancho de banda, ofrece hasta 3.4 petaflops de potencia de cómputo FP16/BF16 y cuenta con NeuronLink, una interconexión sin bloqueo de gran ancho de banda dentro de la instancia. .

Trainium está disponible en dos configuraciones y se puede utilizar en las regiones EE.UU. Este (Norte de Virginia) y EE.UU. Oeste (Oregón).

La siguiente tabla resume las características de las instancias Trn1.

Tamaño de instancia trenio
Aceleradores
Acelerador
Salud Cerebral
(GB)
vCPU Ejemplo
Salud Cerebral
(Gibraltar)
Nuestra red
Ancho de banda
(Gigabits por segundo)
EPT y
RDMA
Soporte
trn1.2xgrande 1 32 8 32 Hasta 12.5 No
trn1.32xgrande 16 512 128 512 800
trn1n.32xlarge (próximamente) 16 512 128 512 1600

Comprendamos cómo usar Trainium con SageMaker con un ejemplo simple. Entrenaremos un modelo de clasificación de texto con el entrenamiento de SageMaker y PyTorch utilizando la biblioteca Hugging Face Transformers.

Utilizamos el conjunto de datos de Reseñas de Amazon, que consta de reseñas de amazon.com. Los datos abarcan un período de 18 años y comprenden aproximadamente 35 millones de reseñas hasta marzo de 2013. Las reseñas incluyen información del producto y del usuario, calificaciones y una reseña en texto sin formato. El siguiente código es un ejemplo de la AmazonPolarity equipo de prueba:

{
title':'Great CD', 'content':"My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing ""Who was that singing ?""", 'label':1
}

Para esta publicación, solo usamos los campos de contenido y etiqueta. El campo de contenido es una revisión de texto libre y el campo de etiqueta es un valor binario que contiene 1 o 0 para revisiones positivas o negativas, respectivamente.

Para nuestro algoritmo, usamos BERT, un modelo de transformador entrenado previamente en un gran corpus de datos en inglés de manera autosupervisada. Este modelo está destinado principalmente a ajustarse en tareas que usan la oración completa (potencialmente enmascarada) para tomar decisiones, como la clasificación de secuencias, la clasificación de tokens o la respuesta a preguntas.

Detalles de implementacion

Empecemos por echar un vistazo más de cerca a los diferentes componentes involucrados en el entrenamiento del modelo:

  • tren de AWS – En esencia, cada instancia de Trainium tiene dispositivos Trainium incorporados. Trn1.2xlarge tiene 1 dispositivo Trainium y Trn1.32xlarge tiene 16 dispositivos Trainium. Cada dispositivo Trainium consta de cómputo (2 NeuronCore-v2), 32 GB de memoria de dispositivo HBM y NeuronLink para una comunicación rápida entre dispositivos. Cada NeuronCore-v2 consiste en una unidad de cómputo heterogénea totalmente independiente con motores separados (Tensor/Vector/Scalar/GPSIMD). Los GPSIMD son procesadores de propósito general totalmente programables que puede usar para implementar operadores personalizados y ejecutarlos directamente en los motores NeuronCore.
  • Capacitación de Amazon SageMaker – SageMaker brinda una experiencia de capacitación totalmente administrada para entrenar fácilmente modelos sin tener que preocuparse por la infraestructura. Cuando usa SageMaker Training, ejecuta todo lo necesario para un trabajo de entrenamiento, como código, contenedor y datos, en una infraestructura informática independiente del entorno de invocación. Esto nos permite ejecutar experimentos en paralelo e iterar rápidamente. SageMaker proporciona un SDK de Python para poner en marcha puestos de formación. El ejemplo de esta publicación usa SageMaker Python SDK para activar el trabajo de entrenamiento usando Trainium.
  • AWS neurona – Debido a que Trainium NeuronCore tiene su propio motor de cómputo, necesitamos un mecanismo para compilar nuestro código de entrenamiento. El AWS neurona El compilador toma el código escrito en Pytorch/XLA y lo optimiza para ejecutarse en dispositivos Neuron. El compilador de Neuron está integrado como parte del contenedor de aprendizaje profundo que usaremos para entrenar nuestro modelo.
  • PyTorch/XLA - Esta Paquete Python utiliza el compilador de aprendizaje profundo XLA para conectar el marco de trabajo de aprendizaje profundo PyTorch y aceleradores en la nube como Trainium. Construir una nueva red PyTorch o convertir una existente para que se ejecute en dispositivos XLA requiere solo unas pocas líneas de código específico de XLA. Veremos para nuestro caso de uso qué cambios necesitamos hacer.
  • Entrenamiento distribuido – Para ejecutar el entrenamiento de manera eficiente en varios NeuronCores, necesitamos un mecanismo para distribuir el entrenamiento en los NeuronCores disponibles. SageMaker es compatible con torchrun con instancias de Trainium, que se pueden usar para ejecutar varios procesos equivalentes a la cantidad de NeuronCores en el clúster. Esto se hace pasando el parámetro de distribución al estimador de SageMaker de la siguiente manera, que inicia un entrenamiento de datos distribuidos en paralelo donde el mismo modelo se carga en diferentes NeuronCores que procesan lotes de datos separados:
distribution={"torch_distributed": {"enabled": True}}

Cambios de script necesarios para ejecutar Trainium

Veamos los cambios de código necesarios para adoptar un script PyTorch regular basado en GPU para ejecutarse en Trainium. En un nivel alto, necesitamos hacer los siguientes cambios:

  1. Reemplace los dispositivos GPU con dispositivos Pytorch/XLA. Debido a que usamos la distribución de la antorcha, debemos inicializar el entrenamiento con XLA como dispositivo de la siguiente manera:
    device = "xla"
    torch.distributed.init_process_group(device)

  2. Usamos el backend distribuido de PyTorch/XLA para unir las API distribuidas de PyTorch con la semántica de comunicación de XLA.
  3. Usamos PyTorch/XLA MpDeviceLoader para las canalizaciones de ingesta de datos. MpDeviceLoader ayuda a mejorar el rendimiento al superponer tres pasos: seguimiento, compilación y carga de lotes de datos en el dispositivo. Necesitamos envolver el cargador de datos PyTorch con MpDeviceDataLoader de la siguiente manera:
    train_device_loader = pl.MpDeviceLoader(train_loader, "xla")

  4. Ejecute el paso de optimización con la API proporcionada por XLA como se muestra en el siguiente código. Esto consolida los gradientes entre núcleos y emite el cálculo de pasos del dispositivo XLA.
    torch_xla.core.xla_model.optimizer_step(optimizer)

  5. Asigne las API de CUDA (si las hay) a las API genéricas de PyTorch.
  6. Reemplace los optimizadores fusionados de CUDA (si los hay) con alternativas genéricas de PyTorch.

El ejemplo completo, que entrena un modelo de clasificación de texto usando SageMaker y Trainium, está disponible en el siguiente Repositorio GitHub. el archivo del cuaderno Ajuste los transformadores para crear modelos de clasificación con SageMaker y Trainium.ipynb es el punto de entrada y contiene instrucciones paso a paso para ejecutar el entrenamiento.

Pruebas comparativas

En la prueba, ejecutamos dos trabajos de entrenamiento: uno en ml.trn1.32xlarge y otro en ml.p4d.24xlarge con el mismo tamaño de lote, datos de entrenamiento y otros hiperparámetros. Durante los trabajos de capacitación, medimos el tiempo facturable de los trabajos de capacitación de SageMaker y calculamos la relación precio-rendimiento multiplicando el tiempo requerido para ejecutar los trabajos de capacitación en horas por el precio por hora para el tipo de instancia. Seleccionamos el mejor resultado para cada tipo de instancia de varias ejecuciones de trabajos.

La siguiente tabla resume nuestros hallazgos de referencia.

Modelo Tipo de instancia Precio (por nodo * hora) Rendimiento (iteraciones/s) ValidaciónPrecisión Tiempo facturable (seg) Costo de capacitación en $
Clasificación básica BERT ml.trn1.32xgrande 24.725 6.64 0.984 6033 41.47
Clasificación básica BERT ml.p4d.24xgrande 37.69 5.44 0.984 6553 68.6

Los resultados mostraron que la instancia de Trainium cuesta menos que la instancia de P4d, lo que proporciona un rendimiento y una precisión similares cuando se entrena el mismo modelo con los mismos datos de entrada y parámetros de entrenamiento. Esto significa que la instancia de Trainium ofrece una mejor relación precio-rendimiento que las instancias P4D basadas en GPU. Con un ejemplo simple como este, podemos ver que Trainium ofrece un tiempo de capacitación un 22 % más rápido y un costo hasta un 50 % menor que las instancias de P4d.

Implementar el modelo entrenado

Después de entrenar el modelo, podemos implementarlo en varios tipos de instancias, como CPU, GPU o AWS Inferentia. El punto clave a tener en cuenta es que el modelo entrenado no depende de hardware especializado para implementar y hacer inferencias. SageMaker proporciona mecanismos para implementar un modelo entrenado mediante mecanismos en tiempo real o por lotes. El ejemplo del cuaderno en el repositorio de GitHub contiene código para implementar el modelo entrenado como un punto final en tiempo real usando una instancia ml.c5.xlarge (basada en CPU).

Conclusión

En esta publicación, analizamos cómo usar Trainium y SageMaker para configurar y entrenar rápidamente un modelo de clasificación que brinda hasta un 50 % de ahorro de costos sin comprometer la precisión. Puede usar Trainium para una amplia gama de casos de uso que implican el entrenamiento previo o el ajuste fino de modelos basados ​​en Transformer. Para obtener más información sobre la compatibilidad con varias arquitecturas modelo, consulte Directrices de ajuste de la arquitectura del modelo.


Acerca de los autores

Arun Kumar Lokanatha es arquitecto sénior de soluciones de aprendizaje automático en el equipo de servicios de Amazon SageMaker. Se enfoca en ayudar a los clientes a crear, entrenar y migrar cargas de trabajo de producción de ML a SageMaker a escala. Se especializa en Deep Learning especialmente en el área de PNL y CV. Fuera del trabajo, le gusta correr y caminar.

marca yu es ingeniero de software en AWS SageMaker. Se centra en la creación de sistemas de formación distribuidos a gran escala, la optimización del rendimiento de la formación y el desarrollo de hardware de formación ml de alto rendimiento, incluido SageMaker trainium. Mark también tiene un conocimiento profundo sobre la optimización de la infraestructura de aprendizaje automático. En su tiempo libre, le gusta caminar y correr.

Omri Fuchs es gerente de desarrollo de software en AWS SageMaker. Es el líder técnico responsable de la plataforma de trabajo de capacitación de SageMaker y se enfoca en optimizar el rendimiento de la capacitación de SageMaker y mejorar la experiencia de capacitación. Le apasiona la tecnología de IA y ML de vanguardia. En su tiempo libre le gusta andar en bicicleta y caminar.

gal oshri es gerente sénior de productos en el equipo de Amazon SageMaker. Tiene 7 años de experiencia trabajando en herramientas, marcos y servicios de Machine Learning.

Sello de tiempo:

Mas de Aprendizaje automático de AWS