Cómo Amazon Escaló Rufus mediante la Construcción de Inferencias Multi-Nodo Usando Chips AWS Trainium
En Amazon, nuestro equipo ha desarrollado Rufus, un asistente de compras potenciado por IA generativa que atiende a millones de clientes a gran escala. Sin embargo, desplegar Rufus a gran escala presenta desafíos significativos que deben ser cuidadosamente gestionados. Rufus está alimentado por un modelo de lenguaje grande (LLM) construido a medida. A medida que la complejidad del modelo aumentó, priorizamos el desarrollo de capacidades de inferencia multi-nodo escalables que mantengan interacciones de alta calidad mientras ofrecen baja latencia y eficiencia de costos.
En este artículo, compartimos cómo desarrollamos una solución de inferencia multi-nodo utilizando AWS Trainium y vLLM, una biblioteca de código abierto diseñada para el servicio eficiente y de alto rendimiento de LLMs. También discutimos cómo construimos una capa de gestión sobre Amazon Elastic Container Service (ECS) para alojar modelos a través de múltiples nodos, facilitando implementaciones robustas, fiables y escalables.
Desafíos de la Inferencia Multi-Nodo
A medida que nuestro modelo Rufus creció en tamaño, necesitamos múltiples instancias de aceleradores, ya que ningún chip o instancia tenía suficiente memoria para el modelo completo. Primero, necesitamos diseñar nuestro modelo para ser dividido entre múltiples aceleradores. Técnicas como el paralelismo de tensores pueden utilizarse para lograr esto, lo que también puede impactar métricas como el tiempo hasta el primer token. A gran escala, los aceleradores en un nodo pueden no ser suficientes, y se requiere utilizar múltiples hosts o nodos. En este punto, también debemos abordar la gestión de nuestros nodos y cómo se fragmenta nuestro modelo entre ellos y sus respectivos aceleradores. Necesitamos abordar dos áreas principales:
- Rendimiento del modelo – Maximizar la utilización de recursos de cómputo y memoria a través de múltiples nodos para servir modelos con alta capacidad, sin sacrificar la baja latencia. Esto incluye diseñar estrategias efectivas de paralelismo y enfoques de fragmentación de pesos del modelo para particionar la computación y la huella de memoria tanto dentro del mismo nodo como entre múltiples nodos.
- Infraestructura de inferencia multi-nodo – Diseñar una abstracción de inferencia multi-nodo que represente un solo modelo ejecutándose en múltiples nodos. Esta infraestructura subyacente necesita soportar una comunicación rápida entre nodos, mantener la consistencia entre componentes distribuidos y permitir el despliegue y escalado como una unidad desplegable única.
Descripción de la Solución
Considerando estos requisitos, construimos una solución de inferencia multi-nodo diseñada para superar los desafíos de escalabilidad, rendimiento y fiabilidad inherentes a servir LLMs a escala de producción utilizando decenas de miles de instancias TRN1.
Para crear una infraestructura de inferencia multi-nodo, implementamos una arquitectura de inferencia multi-nodo líder/seguidor en vLLM. En esta configuración, el nodo líder utiliza vLLM para la programación de solicitudes, agrupamiento y orquestación, y los nodos seguidores ejecutan cálculos de modelo distribuidos. Ambos nodos comparten la misma implementación de NeuronWorker en vLLM, proporcionando un camino de ejecución de modelo consistente a través de la integración sin fisuras con el SDK de AWS Neuron.
Estrategias de Paralelismo de Modelo
Adoptamos estrategias de paralelismo de modelo híbrido a través de la integración con el SDK de Neuron para maximizar la utilización del ancho de banda de memoria entre nodos y la utilización de FLOPs del modelo, al tiempo que reducimos la presión de memoria en cada nodo individual. Por ejemplo, durante la fase de codificación de contexto, utilizamos paralelismo de contexto dividiendo las entradas a lo largo de la dimensión de la secuencia, facilitando el cálculo paralelo de las capas de atención entre nodos. En la fase de decodificación, adoptamos paralelismo de datos al particionar la entrada a lo largo de la dimensión del lote, de modo que cada nodo pueda servir a un subconjunto de solicitudes de lote de manera independiente.
Infraestructura de Inferencia Multi-Nodo
También diseñamos una abstracción de inferencia LLM distribuida: la unidad de inferencia multi-nodo, que sirve como unidad de despliegue para el servicio de inferencia, apoyando implementaciones consistentes y fiables en cada celda a lo largo de la flota de producción. Esto es importante para que solo tengas un número mínimo de nodos fuera de línea durante las actualizaciones sin impactar todo tu servicio.
Un aspecto crucial para lograr una inferencia LLM distribuida de alto rendimiento es minimizar la latencia de las operaciones colectivas entre nodos, que dependen del Acceso Remoto a la Memoria (RDMA). Para habilitar esto, la colocación optimizada de nodos es esencial: el sistema de gestión de despliegues debe componer una celda emparejando nodos según su ubicación física y proximidad.
Al combinar un modelo de orquestación líder/seguidor, estrategias de paralelismo híbrido y una capa de abstracción de unidad de inferencia multi-nodo construida sobre Amazon ECS, esta arquitectura despliega una única réplica de modelo para ejecutarse sin problemas a través de múltiples nodos, soportando grandes despliegues de producción.
Con esta solución de inferencia multi-nodo, lanzamos con éxito un modelo mucho más grande a través de decenas de miles de chips AWS Trainium para los clientes de Rufus, soportando el tráfico del Prime Day. Esta capacidad de modelo aumentada ha permitido nuevas experiencias de compra y ha mejorado significativamente la interacción del usuario.
Nota: Este contenido original ha sido modificado con IA y revisado por un especialista.












