Inteligencia de datos generativa

Logre un rendimiento de inferencia de ML cuatro veces mayor a un costo por inferencia tres veces menor con instancias Amazon EC2 G5 para modelos NLP y CV PyTorch

Fecha:

Nube informática elástica de Amazon (Amazon EC2) Instancias G5 son las primeras y únicas instancias en la nube que cuentan con GPU NVIDIA A10G Tensor Core, que puede usar para una amplia gama de casos de uso de aprendizaje automático (ML) y uso intensivo de gráficos. Con las instancias G5, los clientes de ML obtienen un alto rendimiento y una infraestructura rentable para entrenar e implementar modelos más grandes y sofisticados para el procesamiento del lenguaje natural (NLP), la visión artificial (CV) y los casos de uso del motor de recomendación.

El propósito de esta publicación es mostrar los beneficios de rendimiento de las instancias G5 para cargas de trabajo de inferencia de ML a gran escala. Hacemos esto comparando el precio-rendimiento (medido como $ por millón de inferencias) para modelos NLP y CV con instancias G4dn. Comenzamos describiendo nuestro enfoque de evaluación comparativa y luego presentamos curvas de rendimiento frente a latencia en tamaños de lote y precisión de tipo de datos. En comparación con las instancias G4dn, encontramos que las instancias G5 ofrecen un costo por millón de inferencias consistentemente más bajo para los modos de precisión total y precisión mixta para los modelos NLP y CV, al mismo tiempo que logran un mayor rendimiento y una latencia más baja.

Enfoque de evaluación comparativa

Para desarrollar un estudio de precio-rendimiento entre G5 y G4dn, necesitamos medir el rendimiento, la latencia y el costo por millón de inferencias en función del tamaño del lote. También estudiamos el impacto de la precisión total frente a la precisión mixta. Tanto el gráfico del modelo como las entradas se cargan en CUDA antes de la inferencia.

Como se muestra en el siguiente diagrama de arquitectura, primero creamos imágenes de contenedor base respectivas con CUDA para la instancia EC2 subyacente (G4dn, G5). Para construir las imágenes del contenedor base, comenzamos con Contenedores de aprendizaje profundo de AWS, que utilizan imágenes de Docker preempaquetadas para implementar entornos de aprendizaje profundo en minutos. Las imágenes contienen las bibliotecas y herramientas PyTorch de aprendizaje profundo requeridas. Puede agregar sus propias bibliotecas y herramientas además de estas imágenes para un mayor grado de control sobre el monitoreo, el cumplimiento y el procesamiento de datos.

Luego, construimos una imagen de contenedor específica del modelo que encapsula la configuración del modelo, el seguimiento del modelo y el código relacionado para ejecutar pases hacia adelante. Todas las imágenes del contenedor se cargan en ECR de Amazon para permitir la escala horizontal de estos modelos para varias configuraciones de modelo. Usamos Servicio de almacenamiento simple de Amazon (Amazon S3) como un almacén de datos común para descargar la configuración y cargar los resultados de referencia para resumir. Puede usar esta arquitectura para recrear y reproducir los resultados de las pruebas comparativas y reutilizar para comparar varios tipos de modelos (como modelos Hugging Face, modelos PyTorch, otros modelos personalizados) en tipos de instancias EC2 (CPU, GPU, Inf1).

Con este experimento configurado, nuestro objetivo es estudiar la latencia en función del rendimiento. Esta curva es importante para que el diseño de la aplicación llegue a una infraestructura rentable para la aplicación de destino. Para lograr esto, simulamos diferentes cargas poniendo en cola consultas de varios subprocesos y luego midiendo el tiempo de ida y vuelta para cada solicitud completa. El rendimiento se mide en función del número de solicitudes completadas por unidad de tiempo de reloj. Además, puede variar los tamaños de los lotes y otras variables como la longitud de la secuencia y la precisión total frente a la precisión media para barrer de manera integral el espacio de diseño para llegar a métricas de rendimiento indicativas. En nuestro estudio, a través de un barrido paramétrico del tamaño del lote y consultas de clientes de subprocesos múltiples, se determina la curva de rendimiento frente a latencia. Cada solicitud se puede agrupar por lotes para garantizar la utilización completa del acelerador, especialmente para solicitudes pequeñas que pueden no utilizar completamente el nodo de cómputo. También puede adoptar esta configuración para identificar el tamaño del lote del lado del cliente para un rendimiento óptimo.

En resumen, podemos representar este problema matemáticamente como: (Rendimiento, Latencia) = función de (Tamaño del lote, Número de subprocesos, Precisión).

Esto significa que, dado el espacio exhaustivo, el número de experimentos puede ser grande. Afortunadamente, cada experimento se puede ejecutar de forma independiente. Recomendamos usar Lote de AWS para realizar esta evaluación comparativa de escala horizontal en tiempo comprimido sin un aumento en el costo de la evaluación comparativa en comparación con un enfoque lineal de prueba. El código para replicar los resultados está presente en el Repositorio GitHub preparado para AWS Re:Invent 2021. El repositorio es completo para realizar evaluaciones comparativas en diferentes aceleradores. Puede consultar el aspecto GPU del código para construir el contenedor (Dockerfile-gpu) y luego consulte el código dentro Container-Root para ver ejemplos específicos de BERT y ResNet50.

Utilizamos el enfoque anterior para desarrollar estudios de rendimiento en dos tipos de modelos: Bert-base-uncased (110 millones de parámetros, NLP) y ResNet50 (25.6 millones de parámetros, CV). La siguiente tabla resume los detalles del modelo.

Tipo de modelo Modelo Detalles
PNL twmkn9/bert-base-uncased-squad2 110 millones de parámetros Longitud de secuencia = 128
CV ResNet50 25.6 millones de parámetros

Además, para comparar tipos de datos (total, media precisión), usamos torch.cuda.amp, que proporciona métodos convenientes para manejar precisión mixta donde algunas operaciones usan el torch.float32 (flotante) tipo de datos y otras operaciones de uso torch.float16 (mitad). Por ejemplo, los operadores como capas lineales y convoluciones son mucho más rápidos con float16, mientras que otros como las reducciones a menudo requieren el rango dinámico de float32. La precisión mixta automática intenta hacer coincidir cada operador con su tipo de datos apropiado para optimizar el tiempo de ejecución y la huella de memoria de la red.

Resultados de la evaluación comparativa

Para una comparación justa, seleccionamos G4dn.4xgrande y G5.4xgrande instancias con atributos similares, como se muestra en la siguiente tabla.

Ejemplo GPU Memoria GPU (GiB) vCPU Memoria (GiB) Almacenamiento de instancias (GB) Rendimiento de la red (Gbps) Ancho de banda de EBS (Gbps) Precios de Linux bajo demanda (us-east-1)
G5.4xgrande 1 24 16 64 1 unidad de estado sólido de 600 NVMe hasta 25 8 $ 1.204 / hora
G4dn.4xgrande 1 16 16 64 1 unidad de estado sólido de 225 NVMe hasta 25 4.75 $ 1.624 / hora

En las siguientes secciones, comparamos el rendimiento de la inferencia de ML de los modelos BERT y RESNET50 con un enfoque de barrido de cuadrícula para tamaños de lote específicos (32, 16, 8, 4, 1) y precisión del tipo de datos (precisión completa y media) para llegar al rendimiento. frente a la curva de latencia. Además, investigamos el efecto del rendimiento en comparación con el tamaño del lote para precisión completa y media. Por último, medimos el costo por millón de inferencias en función del tamaño del lote. Los resultados consolidados de estos experimentos se resumen más adelante en esta publicación.

Rendimiento frente a latencia

Las siguientes figuras comparan instancias G4dn y G5 para cargas de trabajo de NLP y CV con precisión completa y media. En comparación con las instancias G4dn, la instancia G5 ofrece un rendimiento aproximadamente cinco veces mayor (precisión total) y aproximadamente 2.5 veces mayor (media precisión) para un modelo base BERT, y aproximadamente 2 a 2.5 veces mayor para un modelo ResNet50. En general, G5 es una opción preferida, con tamaños de lote cada vez mayores para ambos modelos para precisión total y mixta desde una perspectiva de rendimiento.

Los siguientes gráficos comparan el rendimiento y la latencia P95 con precisión completa y media para BERT.

Los siguientes gráficos comparan el rendimiento y la latencia P95 con precisión completa y media para ResNet50.

Rendimiento y latencia frente al tamaño del lote

Los siguientes gráficos muestran el rendimiento en función del tamaño del lote. En tamaños de lote bajos, el acelerador no funciona a su máxima capacidad y, a medida que aumenta el tamaño del lote, el rendimiento aumenta a costa de la latencia. La curva de rendimiento muestra asíntotas a un valor máximo que es una función del rendimiento del acelerador. La curva tiene dos características distintas: una sección ascendente y una sección asintótica plana. Para un modelo dado, un acelerador de rendimiento (G5) puede estirar la sección ascendente a tamaños de lote más altos que G4dn y asíntota con un rendimiento más alto. Además, existe una compensación lineal entre la latencia y el tamaño del lote. Por lo tanto, si la aplicación está limitada por la latencia, podemos usar la latencia P95 frente al tamaño del lote para determinar el tamaño óptimo del lote. Sin embargo, si el objetivo es maximizar el rendimiento con la latencia más baja, es mejor seleccionar el tamaño de lote correspondiente a la "rodilla" entre las secciones ascendente y asintótica, porque cualquier aumento adicional en el tamaño del lote daría como resultado el mismo rendimiento en un peor latencia. Para lograr la mejor relación precio-rendimiento, apuntando a un mayor rendimiento con la latencia más baja, es mejor escalar horizontalmente este óptimo a través de múltiples servidores de inferencia en lugar de simplemente aumentar el tamaño del lote.

Costo versus tamaño de lote

En esta sección, presentamos los resultados comparativos de los costos de inferencia ($ por millón de inferencias) versus el tamaño del lote. En la siguiente figura, podemos observar claramente que el costo (medido como $ por millón de inferencias) es consistentemente más bajo con G5 que con G4dn (precisión completa y media).

La siguiente tabla resume las comparaciones de rendimiento, latencia y costo ($ por millón de inferencias) para los modelos BERT y RESNET50 en ambos modos de precisión para tamaños de lote específicos. A pesar de un mayor costo por instancia, G5 supera constantemente a G4dn en todos los aspectos de latencia de inferencia, rendimiento y costo ($ por millón de inferencia), para todos los tamaños de lote. Combinando las diferentes métricas en un costo ($ por millón de inferencias), el modelo BERT (tamaño de lote 32, precisión completa) con G5 es 3.7 veces más favorable que G4dn, y con el modelo ResNet50 (tamaño de lote 32, precisión completa), es 1.6 veces más favorable que G4dn.

Modelo Tamaño del lote Precisión

rendimiento

(Tamaño de lote X Solicitudes/seg)

Latencia (ms)

$/millón

Inferencias (bajo demanda)

Coste-beneficio

(G5 sobre G4dn)

. . . G5 G4dn G5 G4dn G5 G4dn
Bert-base-sin carcasa 32 Full 723 154 44 208 $0.6 $2.2 3.7X
Mixto 870 410 37 79 $0.5 $0.8 1.6X
16 Full 651 158 25 102 $0.7 $2.1 3.0X
Mixto 762 376 21 43 $0.6 $0.9 1.5X
8 Full 642 142 13 57 $0.7 $2.3 3.3X
Mixto 681 350 12 23 $0.7 $1.0 1.4X
. 1 Full 160 116 6 9 $2.8 $2.9 1.0X
Mixto 137 102 7 10 $3.3 $3.3 1.0X
ResNet50 32 Full 941 397 34 82 $0.5 $0.8 1.6X
Mixto 1533 851 21 38 $0.3 $0.4 1.3X
16 Full 888 384 18 42 $0.5 $0.9 1.8X
Mixto 1474 819 11 20 $0.3 $0.4 1.3X
8 Full 805 340 10 24 $0.6 $1.0 1.7X
Mixto 1419 772 6 10 $0.3 $0.4 1.3X
. 1 Full 202 164 5 6 $2.2 $2 0.9X
Mixto 196 180 5 6 $2.3 $1.9 0.8X

Puntos de referencia de inferencia adicionales

Además de la base BERT y los resultados de ResNet50 en las secciones anteriores, presentamos resultados de evaluación comparativa adicionales para otros modelos grandes de NLP y CV comúnmente utilizados en PyTorch. El beneficio de rendimiento de G5 sobre G4dn se ha presentado para los modelos BERT Large con varias precisiones y los modelos Yolo-v5 para varios tamaños. Para obtener el código para replicar el punto de referencia, consulte Ejemplos de aprendizaje profundo de NVIDIA para núcleos tensoriales. Estos resultados muestran el beneficio de usar G5 sobre G4dn para una amplia gama de tareas de inferencia que abarcan diferentes tipos de modelos.

Modelo Precisión Tamaño del lote Duración de la secuencia Rendimiento (enviado/s) Rendimiento: G4dn Aceleración sobre G4dn
BERT-grande FP16 1 128 93.5 40.31 2.3
BERT-grande FP16 4 128 264.2 87.4 3.0
BERT-grande FP16 8 128 392.1 107.5 3.6
BERT-grande FP32 1 128 68.4 22.67 3.0
BERT-grande 4 128 118.5 32.21 3.7
BERT-grande 8 128 132.4 34.67 3.8
Modelo GFLOPS Número de parámetros Preprocesamiento (ms) Inferencia (ms) Inferencia (no máxima supresión) (NMS/imagen)
yolv5s 16.5 7.2 m 0.2 3.6 4.5
YOLOv5m 49.1 21 m 0.2 6.5 4.5
yolv5l 109.3 46 m 0.2 9.1 3.5
yolv5x 205.9 86 m 0.2 14.4 1.3

Conclusión

En esta publicación, mostramos que para la inferencia con grandes modelos NLP y CV PyTorch, las instancias EC2 G5 son una mejor opción en comparación con las instancias G4dn. Aunque el costo por hora bajo demanda para las instancias G5 es más alto que el de las instancias G4dn, su mayor rendimiento puede alcanzar de 2 a 5 veces el rendimiento con cualquier precisión para los modelos NLP y CV, lo que hace que el costo por millón de inferencias sea 1.5 a 3.5 veces más favorable que Instancias de G4dn. Incluso para aplicaciones limitadas por latencia, G5 es entre 2.5 y 5 veces mejor que G4dn para modelos NLP y CV.

En resumen, las instancias de AWS G5 son una excelente opción para sus necesidades de inferencia, tanto desde el punto de vista del rendimiento como del costo por inferencia. La universalidad del marco CUDA y la escala y profundidad del grupo de instancias G5 en AWS le brindan una capacidad única para realizar inferencias a escala.


Sobre los autores

Ankur Srivastava es Arquitecto de Soluciones Sr. en el equipo de ML Frameworks. Se enfoca en ayudar a los clientes con capacitación distribuida autoadministrada e inferencia a escala en AWS. Su experiencia incluye mantenimiento predictivo industrial, gemelos digitales, optimización de diseño probabilístico y completó sus estudios de doctorado en Ingeniería Mecánica en la Universidad de Rice e investigación posdoctoral en el Instituto de Tecnología de Massachusetts.

Sundar Ranganatán es el jefe de desarrollo comercial, marcos de ML en el equipo de Amazon EC2. Se enfoca en cargas de trabajo de aprendizaje automático a gran escala en servicios de AWS como Amazon EKS, Amazon ECS, Elastic Fabric Adapter, AWS Batch y Amazon SageMaker. Su experiencia incluye roles de liderazgo en gestión y desarrollo de productos en NetApp, Micron Technology, Qualcomm y Mentor Graphics.

Mahadevan Balasubramaniam es Arquitecto Principal de Soluciones para Computación Autónoma con casi 20 años de experiencia en el área de aprendizaje profundo infundido en física, construcción e implementación de gemelos digitales para sistemas industriales a escala. Mahadevan obtuvo su doctorado en Ingeniería Mecánica del Instituto Tecnológico de Massachusetts y tiene más de 25 patentes y publicaciones en su haber.

amr ragab es Arquitecto Principal de Soluciones para EC2 Accelerated Platforms for AWS, dedicado a ayudar a los clientes a ejecutar cargas de trabajo computacionales a escala. En su tiempo libre le gusta viajar y encontrar nuevas formas de integrar la tecnología en la vida diaria.

punto_img

Información más reciente

punto_img

Habla con nosotros!

¡Hola! ¿Le puedo ayudar en algo?