ByteDance ahorra hasta un 60 % en costos de inferencia al mismo tiempo que reduce la latencia y aumenta el rendimiento utilizando AWS Inferentia PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

ByteDance ahorra hasta un 60 % en costos de inferencia mientras reduce la latencia y aumenta el rendimiento con AWS Inferentia

Esta es una publicación de blog de invitado coescrita con Minghui Yu y Jianzhe Xiao de Bytedance.

ByteDance es una empresa de tecnología que opera una variedad de plataformas de contenido para informar, educar, entretener e inspirar a las personas en todos los idiomas, culturas y geografías. Los usuarios confían y disfrutan de nuestras plataformas de contenido debido a las experiencias ricas, intuitivas y seguras que brindan. Estas experiencias son posibles gracias a nuestro motor de back-end de aprendizaje automático (ML), con modelos de ML creados para moderación de contenido, búsqueda, recomendación, publicidad y efectos visuales novedosos.

El equipo de ByteDance AML (Applied Machine Learning) proporciona sistemas de ML de alto rendimiento, confiables y escalables y servicios de ML de extremo a extremo para el negocio de la empresa. Estábamos investigando formas de optimizar nuestros sistemas de inferencia ML para reducir costos, sin aumentar los tiempos de respuesta. Cuando se lanzó AWS Inferencia de AWS, un chip de inferencia de aprendizaje automático de alto rendimiento diseñado específicamente por AWS, nos comprometimos con nuestro equipo de cuenta de AWS para probar si AWS Inferentia puede abordar nuestros objetivos de optimización. Ejecutamos varias pruebas de concepto, lo que dio como resultado un costo de inferencia hasta un 60 % menor en comparación con las instancias EC4 G2dn basadas en GPU T4 y una latencia de inferencia hasta un 25 % menor. Para realizar estos ahorros de costos y mejoras de rendimiento, decidimos implementar modelos en AWS Inferentia-based Nube informática elástica de Amazon (Amazon EC2) Instancias Inf1 en producción.

El siguiente gráfico muestra la mejora de la latencia para uno de nuestros modelos de detección de rostros que se implementó anteriormente en GPU con Tensor RT. La latencia promedio disminuyó un 20 % (de 50 milisegundos a 40 milisegundos) y la latencia p99 disminuyó un 25 % (de 200 milisegundos a 150 milisegundos).

En esta publicación, compartimos cómo ahorramos en costos de inferencia mientras redujimos las latencias y aumentamos el rendimiento con AWS Inferentia.

En busca de computación rentable y de alto rendimiento

El equipo de AML de ByteDance se centra en la investigación y la implementación de sistemas de ML de última generación y los recursos informáticos heterogéneos que requieren. Creamos sistemas de entrenamiento e inferencia a gran escala para una amplia variedad de modelos de recomendación, procesamiento de lenguaje natural (NLP) y visión artificial (CV). Estos modelos son muy complejos y procesan una gran cantidad de datos de las muchas plataformas de contenido que opera ByteDance. La implementación de estos modelos requiere importantes recursos de GPU, ya sea en la nube o en las instalaciones. Por lo tanto, los costos de cómputo para estos sistemas de inferencia son bastante altos.

Buscábamos reducir estos costos sin afectar el rendimiento o la latencia. Queríamos la flexibilidad de la nube y un ciclo de entrega más rápido, que es mucho más corto que el necesario para una configuración local. Y aunque estábamos abiertos a explorar nuevas opciones para ML acelerado, también queríamos una experiencia de desarrollador perfecta.

Aprendimos de nuestro equipo de AWS que las instancias EC2 Inf1 basadas en AWS Inferentia ofrecen inferencia de aprendizaje automático de alto rendimiento al menor costo por inferencia en la nube. Teníamos curiosidad por explorarlos y descubrimos que se adaptaban bien a nuestro caso de uso, porque ejecutamos un aprendizaje automático sustancial en grandes cantidades de datos de imágenes, objetos, voz y texto. Definitivamente encajaron bien con nuestros objetivos, porque pudimos obtener enormes ahorros de costos dada la complejidad de nuestros modelos y el volumen de predicciones diarias. Además, AWS Inferentia presenta una gran cantidad de memoria en el chip, que puede usar para almacenar en caché modelos grandes en lugar de almacenarlos fuera del chip. Reconocemos que esto puede tener un impacto significativo en la reducción de la latencia de inferencia porque los núcleos de procesamiento de AWS Inferentia, llamados NeuronCores, tienen acceso de alta velocidad a los modelos que están almacenados en la memoria del chip y no están limitados por la memoria fuera del chip. banda ancha.

Finalmente, después de evaluar varias opciones, elegimos las instancias EC2 Inf1 por su mejor relación rendimiento/precio en comparación con las instancias G4dn y NVIDIA T4 en las instalaciones. Participamos en un ciclo de iteración continua con el equipo de AWS para desbloquear los beneficios de precio y rendimiento de Inf1.

Implementación de cargas de trabajo de inferencia en AWS Inferentia

Comenzar con AWS Inferentia utilizando el SDK de AWS Neuron involucró dos fases: compilación del código del modelo e implementación en instancias Inf1. Como es común cuando se mueven modelos ML a cualquier infraestructura nueva, hubo algunos desafíos que enfrentamos. Pudimos superar estos desafíos con diligencia y el apoyo de nuestro equipo de AWS. En las siguientes secciones, compartimos varios consejos y observaciones útiles basados ​​en nuestra experiencia en la implementación de cargas de trabajo de inferencia en AWS Inferentia.

Modelo conformador para OCR

Nuestro modelo conformador de reconocimiento óptico de caracteres (OCR) detecta y lee texto dentro de imágenes. Trabajamos en varias optimizaciones para obtener un alto rendimiento (QPS) para una variedad de tamaños de lotes, manteniendo la latencia baja. Algunas optimizaciones clave se indican a continuación:

  • Optimizaciones del compilador – De forma predeterminada, Inferentia funciona mejor en entradas con una longitud de secuencia fija, lo que presentaba un desafío ya que la longitud de los datos textuales no es fija. Para superar esto, dividimos nuestro modelo en dos partes: un codificador y un decodificador. Compilamos estos dos submodelos por separado y luego los fusionamos en un solo modelo a través de TorchScript. Al ejecutar el flujo de control de bucle for en las CPU, este enfoque permitió la compatibilidad con longitudes de secuencia variables en Inferentia.
  • Rendimiento de convolución en profundidad – Encontramos un cuello de botella DMA en la operación de convolución en profundidad, que es muy utilizada por nuestro modelo conformador. Trabajamos en estrecha colaboración con el equipo de AWS Neuron para identificar y resolver el cuello de botella en el rendimiento del acceso DMA, lo que mejoró el rendimiento de esta operación y mejoró el rendimiento general de nuestro modelo de OCR.

ByteDance ahorra hasta un 60 % en costos de inferencia al mismo tiempo que reduce la latencia y aumenta el rendimiento utilizando AWS Inferentia PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Creamos dos nuevas variantes de modelo para optimizar nuestra implementación en Inferentia:

  • Codificador/decodificador combinado y desenrollado – En lugar de usar un codificador y decodificador compilados de forma independiente, combinamos el codificador y un decodificador completamente desenrollado en un solo modelo y compilamos este modelo como un solo NEFF. Al desplegar el decodificador, es posible ejecutar todo el flujo de control del decodificador en Inferentia sin usar ninguna operación de la CPU. Con este enfoque, cada iteración del decodificador usa exactamente la cantidad de cómputo necesaria para ese token. Este enfoque mejora el rendimiento porque reducimos significativamente el exceso de cómputo que se introdujo anteriormente mediante las entradas de relleno. Además, no es necesaria la transferencia de datos de Inferentia a la CPU entre las iteraciones del decodificador, lo que reduce drásticamente el tiempo de E/S. Esta versión del modelo no admite la detención anticipada.
  • Decodificador desenrollado particionado – Similar al modelo combinado completamente desenrollado, esta variante del modelo desenrolla múltiples iteraciones del decodificador y las compila como una única ejecución (pero no incluye el codificador). Por ejemplo, para una longitud de secuencia máxima de 75, podemos desenrollar el decodificador en 3 particiones que calculan los tokens 1-25, 26-50 y 51-75. En términos de E/S, esto también es significativamente más rápido porque no necesitamos transferir la salida del codificador una vez por cada iteración. En cambio, las salidas solo se transfieren una vez por cada partición del decodificador. Esta versión del modelo admite la detención anticipada, pero solo en los límites de la partición. Los límites de partición se pueden ajustar para cada aplicación específica para garantizar que la mayoría de las solicitudes ejecuten solo una partición.

Para mejorar aún más el rendimiento, realizamos las siguientes optimizaciones para reducir el uso de la memoria o mejorar la eficiencia del acceso:

  • Deduplicación de tensor y copias reducidas – Esta es una optimización del compilador que reduce significativamente el tamaño de los modelos desplegados y la cantidad de instrucciones/acceso a la memoria mediante la reutilización de tensores para mejorar la eficiencia del espacio.
  • Instrucciones reducidas – Esta es una optimización del compilador que se usa con la versión sin relleno del decodificador para reducir significativamente el número total de instrucciones.
  • Deduplicación multinúcleo – Esta es una optimización del tiempo de ejecución que es una alternativa a la deduplicación de tensor. Con esta opción, todos los modelos multinúcleo serán significativamente más eficientes en cuanto al espacio.

Modelo ResNet50 para clasificación de imágenes

ResNet-50 es un modelo de aprendizaje profundo preentrenado para la clasificación de imágenes. Es una red neuronal convolucional (CNN o ConvNet) que se aplica más comúnmente para analizar imágenes visuales. Utilizamos las siguientes técnicas para mejorar el rendimiento de este modelo en Inferentia:

  • Transformación de modelo – Muchos de los modelos de ByteDance se exportan en formato ONNX, que Inferentia actualmente no admite de forma nativa. Para manejar estos modelos ONNX, el equipo de AWS Neuron proporcionó scripts para transformar nuestros modelos del formato ONNX a modelos PyTorch, que se pueden compilar directamente para Inferentia mediante torch-neuron.
  • Optimización del rendimiento – Trabajamos en estrecha colaboración con el AWS neurona equipo para ajustar la heurística de programación en el compilador para optimizar el rendimiento de nuestros modelos ResNet-50.

Modelo multimodal para la moderación de contenido

Nuestro modelo de aprendizaje profundo multimodal es una combinación de múltiples modelos separados. El tamaño de este modelo es relativamente grande, lo que provocó fallas en la carga del modelo en Inferentia. El equipo de AWS Neuron resolvió con éxito este problema al compartir el peso para reducir el uso de la memoria del dispositivo. El equipo de Neuron lanzó esta función de eliminación de duplicados de peso en la biblioteca libnrt de Neuron y también mejoró las herramientas de Neuron para obtener métricas más precisas. La función de deduplicación de ponderación en tiempo de ejecución se puede habilitar configurando la siguiente variable de entorno antes de ejecutar la inferencia:

NEURON_RT_MULTI_INSTANCE_SHARED_WEIGHTS=1

El Neuron SDK actualizado redujo el consumo general de memoria de nuestros modelos duplicados, lo que nos permitió implementar nuestro modelo multimodal para la inferencia de varios núcleos.

Migración de más modelos a AWS Inferentia

En ByteDance, continuamos implementando modelos innovadores de aprendizaje profundo para brindar experiencias de usuario agradables a casi 2 mil millones de usuarios activos mensuales. Dada la escala masiva en la que operamos, buscamos constantemente formas de ahorrar costos y optimizar el rendimiento. Continuaremos migrando modelos a AWS Inferentia para beneficiarnos de su alto rendimiento y rentabilidad. También queremos que AWS lance más tipos de instancias basadas en AWS Inferentia, como aquellas con más vCPU para tareas de preprocesamiento. En el futuro, ByteDance espera ver más innovación de silicio de AWS para ofrecer la mejor relación precio-rendimiento para aplicaciones de aprendizaje automático.

Si está interesado en obtener más información sobre cómo AWS Inferentia puede ayudarlo a ahorrar costos mientras optimiza el rendimiento de sus aplicaciones de inferencia, visite la Instancias de Amazon EC2 Inf1 página del producto.


Acerca de los autores

ByteDance ahorra hasta un 60 % en costos de inferencia al mismo tiempo que reduce la latencia y aumenta el rendimiento utilizando AWS Inferentia PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Minghui yu es líder sénior del equipo de aprendizaje automático para inferencia en ByteDance. Su área de enfoque es la Aceleración de la Computación de IA y el Sistema de Aprendizaje Automático. Está muy interesado en la computación heterogénea y la arquitectura informática en la era posterior a Moore. En su tiempo libre le gusta el baloncesto y el tiro con arco.

ByteDance ahorra hasta un 60 % en costos de inferencia al mismo tiempo que reduce la latencia y aumenta el rendimiento utilizando AWS Inferentia PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Jianzhe Xiao es un líder del equipo de ingenieros de software sénior en el equipo AML en ByteDance. Su trabajo actual se centra en ayudar al equipo comercial a acelerar el proceso de implementación del modelo y mejorar el rendimiento de inferencia del modelo. Fuera del trabajo, le gusta tocar el piano.

ByteDance ahorra hasta un 60 % en costos de inferencia al mismo tiempo que reduce la latencia y aumenta el rendimiento utilizando AWS Inferentia PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.tian shi es arquitecto sénior de soluciones en AWS. Su área de enfoque es el análisis de datos, el aprendizaje automático y sin servidor. Le apasiona ayudar a los clientes a diseñar y crear soluciones confiables y escalables en la nube. En su tiempo libre, le gusta nadar y leer.

ByteDance ahorra hasta un 60 % en costos de inferencia al mismo tiempo que reduce la latencia y aumenta el rendimiento utilizando AWS Inferentia PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.jia dong es gerente de soluciones para clientes en AWS. Le gusta aprender sobre los servicios de IA/ML de AWS y ayudar a los clientes a lograr sus resultados comerciales mediante la creación de soluciones para ellos. Fuera del trabajo, Jia disfruta de los viajes, el yoga y las películas.

ByteDance ahorra hasta un 60 % en costos de inferencia al mismo tiempo que reduce la latencia y aumenta el rendimiento utilizando AWS Inferentia PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.jonathan lunt es ingeniero de software en Amazon con un enfoque en el desarrollo del marco ML. A lo largo de su carrera, ha trabajado en una amplia gama de roles de ciencia de datos, incluido el desarrollo de modelos, la implementación de infraestructura y la optimización específica de hardware.

ByteDance ahorra hasta un 60 % en costos de inferencia al mismo tiempo que reduce la latencia y aumenta el rendimiento utilizando AWS Inferentia PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Josué Hannan es ingeniero de aprendizaje automático en Amazon. Trabaja en la optimización de modelos de aprendizaje profundo para aplicaciones de procesamiento de lenguaje natural y visión artificial a gran escala.

ByteDance ahorra hasta un 60 % en costos de inferencia al mismo tiempo que reduce la latencia y aumenta el rendimiento utilizando AWS Inferentia PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Sruti Koparkar es gerente sénior de marketing de productos en AWS. Ayuda a los clientes a explorar, evaluar y adoptar la infraestructura informática acelerada de EC2 para sus necesidades de aprendizaje automático.

Sello de tiempo:

Mas de Aprendizaje automático de AWS