¿Qué es la inferencia distribuida?
La inferencia distribuida permite que los modelos de inteligencia artificial procesen las cargas de trabajo de manera más eficiente al dividir la tarea de inferencia entre un grupo de dispositivos interconectados. Se puede interpretar como el equivalente en software del dicho "dos cabezas piensan más que una".
La inferencia distribuida implica un sistema que divide las solicitudes en una flota de hardware, que puede incluir servidores físicos y de nube. Luego, cada servidor de inferencia procesa su parte asignada simultáneamente para generar un resultado: un sistema observable y con capacidad de recuperación que permite prestar servicios basados en la inteligencia artificial, uniformes y adaptables.
La analogía de la cena
Imagínate que organizas una cena para diez personas. Tienes que ofrecer cuatro platos a cada uno: una entrada, una ensalada, un plato principal y un postre. Pero solo tienes dos horas para preparar la comida, lo que sería prácticamente imposible de lograr por cuenta propia, ya que el resultado final (la calidad de la comida) se vería afectado o se tardaría más tiempo del esperado.
Para resolver este problema, pides ayuda a algunos amigos y asignas a cada persona la preparación de un plato según su experiencia. Por ejemplo, tu amigo que no sabe cocinar puede preparar la ensalada, mientras que tu amigo que se graduó en la escuela de cocina se encarga del plato principal, que es más complejo. Al aprovechar las habilidades de cada uno y trabajar en tareas individuales de manera simultánea, la cena está lista a tiempo y tiene un sabor fantástico.
En la analogía de la cena, el hecho de que tus amigos trabajen juntos es una inferencia distribuida, cada plato es una solicitud y cada amigo es un tipo diferente de servidor de inferencia.
Velocidad, capacidad de ajuste y ahorro con la inferencia distribuida
Los modelos de inteligencia artificial crecen a medida que se vuelven más sofisticados. Por ejemplo, un modelo de lenguaje de gran tamaño (LLM) puede contener cientos de miles de millones de parámetros. Los parámetros determinan la forma en que un LLM comprende el lenguaje, por lo que, cuantos más parámetros tenga un modelo, más complejas serán las tareas que podrá realizar con mayor precisión.
Algunos modelos de inteligencia artificial (como DeepSeek con 671 000 millones de parámetros) son demasiado grandes para caber en una sola unidad de procesamiento gráfico (GPU). Entonces, para funcionar, estos modelos requieren una intervención como la inferencia distribuida.
Si aumenta la cantidad de parámetros, también aumenta la cantidad de recursos de hardware necesarios.
Almacenar estos modelos gigantes y realizar los cálculos de inferencia requiere mucha memoria y capacidad de procesamiento. Hay distintas opciones para abordar este desafío:
- Incorpora más GPU a un servidor para aumentar la capacidad de tus máquinas actuales. Una mayor cantidad de GPU equivale a mayor capacidad de procesamiento, pero las GPU son costosas. Además, corres el riesgo de crear un punto único de fallo, es decir, si falla una instancia (una copia de tu aplicación de inferencia), todo el sistema puede verse afectado.
- Optimiza tus modelos con la cuantización de modelos. Esta técnica de optimización simplifica los parámetros de un modelo al reducir la precisión numérica de estos, lo que permite disminuir el tamaño general del modelo. La cuantización de los modelos es la primera estrategia que recomendamos para optimizar el procesamiento de los modelos de gran tamaño, ya que es menos compleja de implementar que la inferencia distribuida.
- Aumenta la eficiencia de tu hardware actual al promover una distribución de cargas de trabajo más colaborativa con la inferencia distribuida. Este enfoque ofrece la velocidad, la confiabilidad y la capacidad de ajuste necesarias para cumplir con las exigencias empresariales. La inferencia distribuida puede utilizarse como estrategia complementaria a la cuantización de modelos.
¿Qué es un servidor de inferencia?
Un servidor de inferencia es un software esencial que ayuda a un modelo de inteligencia artificial a obtener conclusiones nuevas a partir de su entrenamiento previo. Estos servidores procesan las solicitudes de entrada (como una consulta o una petición) a través de un modelo de machine learning (aprendizaje automático) y devuelven un resultado.
La inferencia es el proceso de obtener conclusiones basadas en pruebas. Imagínate que la luz de la sala de estar de tu amigo está encendida, pero no la ves. Puedes inferir que está en casa, pero no tienes pruebas fehacientes que lo demuestren.
Un modelo de lenguaje tampoco dispone de pruebas definitivas sobre el significado de una palabra o una frase, ya que es un sistema de software, por lo que utiliza su entrenamiento como evidencia. A partir de una serie de cálculos basados en datos, el modelo genera una conclusión.
Cuatro aspectos clave para la implementación de la tecnología de inteligencia artificial
Funcionamiento de la inferencia distribuida
La inferencia distribuida implica proporcionar a los modelos de inteligencia artificial un único coordinador inteligente que actúa como el cerebro de las cargas de trabajo. Cuando se recibe una solicitud nueva, la inferencia distribuida permite analizarla y dirigirla a la parte del sistema de hardware más adecuada para la tarea, tal como en la analogía de la cena.
Los modelos de gran tamaño, una cantidad excesiva de usuarios o los problemas de latencia pueden afectar el rendimiento. En la inferencia distribuida, se aplican varias estrategias según el problema que causa el bloqueo:
- División del modelo. Cuando el modelo es demasiado grande para una GPU, la inferencia distribuida aplica el paralelismo de modelos para dividirlo en varias GPU.
- División de los datos. Para poder atender a muchos usuarios a la vez, divide los datos de entrada entre los servidores mediante el paralelismo de datos y el equilibrio de carga inteligente. De esta manera, podrás gestionar las solicitudes simultáneas con eficiencia.
- División del proceso de inferencia. Para optimizar el flujo de trabajo completo, utiliza el desglose de procesos. Esta estrategia separa las dos fases informáticas que crean la respuesta de la inferencia (prellenado y decodificación) y las ejecuta en distintos entornos.
Programación inteligente de inferencias
La inferencia distribuida requiere un plano de control o un programador que sepa cómo coordinar la información y transferirla para completar las tareas. La programación inteligente es un proceso que se ejecuta de forma permanente en los sistemas de inferencia distribuida para lograr esta coordinación.
Imagínate que la programación inteligente es un administrador de proyectos. En lugar de enviar una solicitud al siguiente servidor, la programación inteligente considera estos aspectos:
- los servidores que ya tienen información relevante sobre la solicitud en caché;
- los servidores que tienen capacidad para gestionar la solicitud;
- los servidores más adecuados para completar la tarea de la solicitud.
La programación inteligente se implementa a través de algoritmos de software y funciona durante la inferencia para optimizar el flujo de datos.
Desglose con prellenado y decodificación
Para generar una respuesta a una consulta, se requieren dos fases: el prellenado y la decodificación. Al dividir una consulta de usuario en estas fases, los sistemas distribuidos pueden asignar cada parte al sistema de hardware más adecuado, lo que aumenta la eficiencia.
El prellenado (o prellenado de la memoria caché de clave-valor) hace referencia al paso inicial con un alto consumo de recursos informáticos en el que el modelo procesa la petición del usuario. Piensa en esta fase como el modelo que "lee" y "comprende" tu consulta.
La decodificación es el siguiente paso con un alto consumo de memoria, en el que el modelo genera la respuesta token por token. En esta fase, el modelo accede a la memoria caché de clave-valor para recopilar la información almacenada que considera relevante para la consulta.
Al separar la fase de prellenado de la de decodificación, el sistema puede programar sus recursos de manera más eficiente. Para unir todos los elementos, se necesita la memoria caché de clave-valor.
¿Qué es la memoria caché de clave-valor?
La sigla "KV" corresponde a "clave-valor" y hace referencia al modo en que un LLM expresa el significado de una palabra o una frase. Supongamos que procesas la clave-valor de un artículo de un menú: las papas fritas (clave) cuestan USD 3,99 (valor). Cuando el cajero registra un pedido de este producto, el valor calculado de esa clave es de USD 3,99. Los LLM procesan las KV de manera similar, ya que almacenan el valor correspondiente a cada clave (o token) en su caché.
El término "caché" hace referencia al almacenamiento de memoria a corto plazo. Piensa en tu computadora personal: cuando funciona lento, es probable que borres la memoria caché para liberar espacio y lograr un procesamiento mejor y más rápido.
Con la memoria caché de clave-valor, el modelo recuerda la palabra anterior que generó, lo que permite crear contexto para la siguiente palabra y agilizar el procesamiento. Sin la memoria caché de clave-valor, el modelo tendría que volver a procesar la consulta palabra por palabra.
Inferencia distribuida con vLLM
La principal tarea de los modelos de lenguaje de gran tamaño virtuales (vLLM) es aumentar la eficiencia de la memoria caché de clave-valor.
El vLLM es el "cerebro" del software que permite que las GPU distribuyan las tareas y trabajen juntas en paralelo. Funciona como un conjunto de instrucciones para que la memoria caché de clave-valor genere optimizaciones mediante el procesamiento por lotes permanente de las respuestas de los usuarios.
Paralelismo del modelo con vLLM
Cuando un modelo es demasiado grande para tu GPU, puedes usar el paralelismo de tensores, el paralelismo de canales, la mezcla de expertos (MoE) o una combinación de las tres opciones:
Paralelismo de tensores. Un equipo de GPU aborda una tarea grande dividiéndola en partes idénticas más pequeñas. En este caso, el vLLM funciona como coordinador al organizar la comunicación constante que se necesita para mantener sincronizados todos los elementos del sistema.
Paralelismo de canales. Al igual que en una cadena de montaje, el paralelismo de canales divide una tarea en etapas secuenciales. El procesamiento se lleva a cabo al pasar de una etapa a otra hasta que se completa la tarea. El paralelismo de canales permite conectar varios servidores para ejecutar un solo modelo que, de otro modo, sería demasiado grande para cargarse en un almacén de memoria. En este caso, el vLLM gestiona la línea de montaje hipotética: analiza los pasos y se asegura de que la tarea pase de un servidor a otro a medida que se completa cada etapa.
Mezcla de expertos (MoE). En este contexto, los "expertos" son partes especializadas del modelo entrenadas para ocuparse de ciertos tipos de entradas. En esta arquitectura, un elemento llamado "red de enrutamiento" dirige las tareas a la parte del modelo más adecuada para obtener resultados más rápidos y precisos. Esta red integrada del vLLM organiza el proceso leyendo cada solicitud a medida que se recibe y activando la parte del modelo que puede gestionarla.
Paralelismo de los datos con vLLM
Cuando tienes que atender a muchos usuarios a la vez, puedes utilizar la técnica de paralelismo de datos, que consiste en dividir los datos de entrada (solicitudes de carga de trabajo) en lugar del modelo.
El paralelismo de datos es una técnica informática que distribuye el trabajo de una gran cantidad de tareas entre un equipo de servidores. Funciona colocando una copia del modelo en cada GPU y distribuyendo las tareas entre el equipo de servidores para ejecutar las solicitudes simultáneamente.
Imagínate que una aplicación de inteligencia artificial tiene 1000 usuarios que realizan consultas en tu LLM a la vez. El paralelismo de datos permite colocar las copias del LLM en 10 servidores y, luego, asignar 100 solicitudes a cada uno. Al dividir la carga de trabajo en lotes más pequeños, la aplicación puede procesar más solicitudes casi sin demoras.
El vLLM puede sumarse para mejorar el rendimiento y crea un entorno que permita lograr un procesamiento aún más rápido y eficiente.
¿Qué es llm-d?
El llm-d es un marco open source para los modelos de lenguaje de gran tamaño distribuidos. Un marco open source es un conjunto de herramientas y códigos escritos previamente y disponibles para el público en general, que los desarrolladores pueden usar, modificar y distribuir con total libertad.
El marco llm-d estandariza la manera recomendada de crear inferencias distribuidas a gran escala. Aporta un diseño, técnicas de comunicación y un manual de entrenamiento, de manera que las empresas puedan seguir los pasos necesarios para crear una arquitectura distribuida.
Al remplazar los procesos manuales y fragmentados por planes integrados y bien definidos, las empresas pueden implementar y ajustar los sistemas con mayor rapidez, lo que les permite acelerar la transición de la fase de prueba piloto a la de producción.
La instalación se basa en los charts de Helm para ofrecer un procedimiento conocido y personalizable. Gracias a la interfaz de línea de comandos (CLI) de inicio rápido, se simplifica la implementación, que incluye dependencias, requisitos previos y funciones de observabilidad.
El marco llm-d está diseñado para extenderse y funcionar junto con vLLM, y se ejecuta en cualquier clúster de Kubernetes, incluido Red Hat® OpenShift®.
Desafíos de la inferencia distribuida
La inferencia distribuida permite que los sistemas de inteligencia artificial procesen las solicitudes más rápido y se expandan en mayor medida, pero la coordinación necesaria para llevar a cabo estas tareas es compleja. Estos son algunos de los desafíos que se deben tener en cuenta:
Latencia y ancho de banda
La inferencia distribuida reparte tu modelo y procesa las solicitudes en varios servidores y dispositivos ubicados en distintos lugares. Esto significa que la información y los datos tienen un largo camino por recorrer antes de que el usuario obtenga una respuesta. Si las conexiones de red entre los servidores son lentas o están atascadas, el proceso se ralentiza, tal como le sucede a un automóvil cuando está atascado en el tráfico.
Ineficiencias en la asignación de recursos
Es importante equilibrar la distribución de la inferencia entre los servidores para evitar que algunos se sobrecarguen mientras otros permanecen inactivos.
Recuperación ante fallas
Al igual que se necesita un actor suplente en una obra de teatro, es importante contar con un plan alternativo. En los sistemas distribuidos, las conexiones pueden interrumpirse, los servidores pueden fallar y los centros de datos pueden desconectarse. Asegúrate de que, cuando una parte del sistema deje de funcionar, otra pueda ocuparse de sus tareas.
Complejidad de la depuración y la resolución de problemas
Los servidores interconectados, como los que se utilizan en la inferencia distribuida, funcionan con mayor rapidez y eficiencia que si estuvieran desconectados. Sin embargo, su desventaja es que, al estar interconectados, es más difícil encontrar la causa raíz de un problema, como ocurre al tratar de diagnosticar la causa de un dolor de cabeza.
Sobrecarga de la sincronización
Imagínate que estás en una llamada con 300 personas. Para seguir el ritmo del video y el sonido en tiempo real, los sistemas deben trabajar más de lo habitual. A veces, el video de una persona se bloquea o su voz se retrasa. La coordinación sincronizada puede suponer un desafío complejo que requiere una infraestructura preparada.
Gestión e implementación del modelo
¿Todo listo para actualizar tu modelo? Con la inferencia distribuida, implementar ese cambio requiere una estrategia y una coordinación cuidadosa por parte de los especialistas, lo que puede resultar complejo y llevar mucho tiempo.
Gestión de los costos
Los sistemas distribuidos tienen una arquitectura de costos más compleja que una sola computadora. Los costos pueden variar en función de los patrones de uso, la transferencia de datos entre las ubicaciones y las necesidades de ajuste. Por lo tanto, es importante establecer un enfoque basado en los indicadores para obtener un rendimiento óptimo, capacidad de recuperación y una gestión eficaz de los costos.
Seguridad
La distribución de los servidores en varias ubicaciones implica la adopción de medidas para protegerlas. Debes contar con la experiencia necesaria para cifrar las comunicaciones, gestionar los controles de acceso y protegerte contra los ataques.
Ventajas de la inferencia distribuida
La inferencia distribuida te permite aplicar los LLM a una mayor variedad de casos. Esto se debe a que reduce las limitaciones de tamaño y velocidad de los modelos en ejecución en un solo elemento de hardware. Por lo tanto, la inferencia distribuida reduce la latencia (retraso) y aumenta el ancho de banda (capacidad) para admitir diversos casos prácticos en la infraestructura actual.
Rendimiento uniforme y predecible
La inferencia tradicional de la inteligencia artificial suele ser una "caja negra" que puede generar tiempos de respuesta impredecibles y una mala experiencia de usuario. Con la inferencia distribuida, la programación inteligente analiza las solicitudes entrantes y las dirige al hardware óptimo, lo cual brinda una experiencia de usuario más confiable y estable.
Gestión de los costos
El costo puede suponer un desafío para la inferencia distribuida, pero también puede representar una ventaja. A medida que los modelos crecen, también aumenta la necesidad de contar con aceleradores de hardware costosos, como las GPU. Cuando la inferencia distribuida se gestiona correctamente, permite reducir los costos, ya que el hardware se utiliza de la manera más eficiente posible.
Observabilidad mejorada
A medida que los modelos de inteligencia artificial generativa pasan de la fase de prueba piloto a la de producción, la supervisión del estado, del rendimiento y de los costos de los servicios de inteligencia artificial se convierte en un nuevo desafío. La inferencia distribuida proporciona un sistema avanzado de observabilidad que te permite supervisar de manera preventiva las cargas de trabajo de inteligencia artificial, desde el procesamiento de tokens hasta la latencia y el rendimiento. Esta función te ayuda a identificar los bloqueos y solucionar los problemas para que puedas mantener un rendimiento predecible y controlar los costos.
Normas de privacidad
Las leyes de privacidad de datos, como el Reglamento General de Protección de Datos (RGPD) y la Ley de Privacidad del Consumidor de California (CCPA), establecen normas estrictas sobre la recopilación y la transferencia de los datos personales. La inferencia distribuida cumple con estas normas, ya que procesa los datos de forma local y envía solo las partes no confidenciales a un servidor central. De esta manera, los datos personales se mantienen en ciertas jurisdicciones geográficas y se garantiza la soberanía de los datos.
Permanencia de los datos en entornos locales
La inferencia distribuida envía el proceso de inferencia (computación) a muchos servidores, pero los datos permanecen en los entornos locales. Como los datos se procesan donde se crearon, en lugar de enviarse a un servidor distante, las aplicaciones funcionan más rápido.
Red Hat puede ayudarte
Red Hat AI es una plataforma de productos que utiliza la tecnología de open source para superar los desafíos de la inteligencia artificial empresarial a gran escala. La inferencia distribuida es una herramienta fundamental en nuestro conjunto de herramientas.
Red Hat OpenShift AI, que forma parte de Red Hat AI, permite gestionar los costos de la inferencia con la puesta a disposición distribuida de los modelos en la etapa de producción a través de una versión de vLLM para empresas. Para simplificar las operaciones, ofrece herramientas avanzadas que permiten automatizar las implementaciones y el acceso de autoservicio a los modelos, las herramientas y los recursos.
Todos los productos de Red Hat AI proporcionan flexibilidad y uniformidad para que puedas diseñar, implementar y ejecutar modelos de inteligencia artificial en cualquier plataforma de hardware y entorno de nube híbrida a gran escala.
¿Qué es la inferencia de la inteligencia artificial?
La inferencia de la inteligencia artificial ocurre cuando un modelo de inteligencia artificial proporciona una respuesta a partir de datos. Es la fase final de un proceso complejo de tecnología de machine learning (aprendizaje automático).