Logotipo de Zephyrnet

Invirtiendo el diseño del procesador en su cabeza

Fecha:

La IA está cambiando el diseño de los procesadores de manera fundamental, combinando elementos de procesamiento personalizados para cargas de trabajo de IA específicas con procesadores más tradicionales para otras tareas.

Pero las compensaciones son cada vez más confusas, complejas y difíciles de gestionar. Por ejemplo, las cargas de trabajo pueden cambiar más rápido que el tiempo que lleva generar diseños personalizados. además, el AI-Procesos específicos pueden exceder los presupuestos energéticos y térmicos, lo que puede requerir ajustes en las cargas de trabajo. Y la integración de todas estas piezas puede crear problemas que deben resolverse a nivel del sistema, no sólo en el chip.

"Las cargas de trabajo de IA han puesto patas arriba la arquitectura del procesador", afirmó Steven Woo, colega y distinguido inventor de Rambus. “Estaba claro que las arquitecturas existentes no funcionaban muy bien. Una vez que la gente comenzó a darse cuenta en el período de 2014 de que se podían usar GPU y obtener enormes ganancias en el rendimiento comercial, la IA recibió un gran impulso. Fue entonces cuando la gente empezó a decir: 'Una GPU es una especie de arquitectura especializada'. ¿Podemos hacer más?' En aquel entonces estaba claro que las acumulaciones múltiples, que son muy comunes en la IA, eran el cuello de botella. Ahora tienes todo este fantástico hardware. Tenemos las cosas que se multiplican y acumulan en el clavo. Entonces, ¿qué más tenemos que poner en el hardware? De eso se trata realmente la arquitectura. Se trata de encontrar la estaca alta o el palo largo en la tienda y derribarlo”.

Otros están de acuerdo. "La IA simplemente se presta a la arquitectura de GPU y es por eso que NVIDIA tiene una capitalización de mercado de un billón de dólares", dijo Ansys director Rich Goldman. “Curiosamente, Intel ha estado fabricando GPU durante mucho tiempo, pero dentro de sus CPU para impulsar los procesadores de video. Ahora están fabricando GPU independientes. Además, AMD tiene una arquitectura muy interesante, donde la GPU y la CPU comparten memoria. Sin embargo, la CPU sigue siendo importante. Grace Hopper de NVIDIA es la combinación CPU-GPU, porque no todo se presta a una arquitectura GPU. Incluso en aplicaciones que lo hacen, hay partes que ejecutan solo CPU pequeñas. Durante décadas, hemos estado ejecutando todo en una arquitectura CPU x86, tal vez arquitectura RISC, pero es una CPU. Diferentes aplicaciones funcionan mejor en diferentes arquitecturas, y casualmente NVIDIA se centró primero en los videojuegos, y eso se tradujo en animación y películas. Esa misma arquitectura se presta muy bien a la inteligencia artificial, que hoy lo impulsa todo”.

El desafío ahora es cómo desarrollar plataformas más eficientes que puedan optimizarse para casos de uso específicos. "Cuando implementas esto en hardware escalable real, no solo en casos de uso únicos, entonces el desafío es cómo ejecutar esto". dijo Suhas Mitra, director de marketing de productos de Tensilica AI Products en Cadencia. “Tradicionalmente, en los procesadores teníamos una CPU. Y si tenías una plataforma móvil, tenías una GPU, DSP, etc. Todo esto se puso nervioso porque la gente vio que estas cargas de trabajo a veces son vergonzosamente paralelas. Y con la llegada de la computación paralela, que es la razón por la que las GPU se hicieron tan populares (tenían muy buenos motores de hardware que podían realizar procesamiento paralelo), los proveedores sacaron provecho fácilmente de inmediato”.

Esto funciona mejor cuando las cargas de trabajo se entienden bien definidas, dijo Sharad Chole, científico jefe de Expedera. “En ese tipo de arquitecturas, digamos que se intenta integrar un ISP y una NPU de forma estrechamente acoplada en arquitecturas de borde. Los líderes de SoC están investigando cómo pueden reducir el área y la potencia del diseño”.

El desafío aquí es comprender las implicaciones de latencia de la parte de memoria de la arquitectura, dijo Chole. “Si una NPU es lenta, ¿cómo sería la memoria? Cuando la NPU es rápida, ¿cómo se verá la memoria? Finalmente, las preguntas entre equilibrar las MAC versus equilibrar la memoria provienen de donde estamos tratando de reducir tanto como sea posible el almacenamiento en búfer de entrada y salida”.

El ancho de banda de la memoria externa también es una parte clave de esto, particularmente para los dispositivos periféricos. "Nadie tiene suficiente ancho de banda", añadió. “Entonces, ¿cómo dividimos la carga de trabajo o programamos la red neuronal para que el ancho de banda de la memoria externa se mantenga y sea lo más bajo posible? Eso es básicamente algo que hacemos paquetizando o dividiendo la red neuronal en partes más pequeñas e intentando ejecutar ambas partes”.

Diseñar para un futuro que cambia rápidamente
Uno de los grandes problemas de la IA es que los algoritmos y los modelos informáticos están evolucionando y cambiando más rápido de lo que pueden diseñarse desde cero.

"Si dices que vas a construir una CPU que sea realmente excelente en estos modelos LSTM (memoria a corto plazo), ese ciclo es de un par de años", dijo Woo de Rambus. “Luego te das cuenta de que, en dos años, los modelos LSTM iban y venían como lo dominante. Quieres hacer hardware especializado, pero tienes que hacerlo más rápido para mantenerte al día. El santo grial sería si pudiéramos crear hardware tan rápido como podamos cambiar los algoritmos. Sería fantástico, pero no podemos hacerlo aunque se presione a la industria para que lo haga”.

Esto también significa que la arquitectura del procesador que maneja cargas de trabajo de IA será diferente a la de un procesador que no se centra en cargas de trabajo de IA. "Si nos fijamos en estos motores para realizar capacitación, no ejecutarán Linux o Word, porque no están diseñados para ramificaciones de propósito general, una amplia gama de instrucciones o para admitir una amplia gama de lenguajes". dijo Woo. “Son motores prácticamente básicos que están diseñados para funcionar muy rápido en una pequeña cantidad de tipos de operaciones. Están altamente sintonizados con los patrones de movimiento de datos específicos necesarios para realizar los cálculos. En Google TPU, por ejemplo, la arquitectura de matriz sistólica existe desde la década de 1980. Es muy bueno para realizar un tipo particular de trabajo distribuido de manera muy uniforme en grandes conjuntos de datos, por lo que es perfecto para estas redes neuronales densas. Pero ejecutar código de propósito general no es para lo que están diseñadas estas cosas. Son más como coprocesadores masivos que hacen muy bien la mayor parte del cálculo, pero aún necesitan conectarse a algo más que pueda gestionar el resto del cálculo”.

Incluso la evaluación comparativa es difícil, porque no siempre es una comparación de manzanas con manzanas, y eso dificulta el desarrollo de la arquitectura. "Este es un tema difícil porque diferentes personas usan diferentes herramientas para navegar", dijo Chole de Expedera. “La apariencia de esta tarea en el día a día del ingeniero de diseño es una evaluación comparativa a nivel de sistema. Cada parte del SoC se compara individualmente y se intenta extrapolar en función de esos números cuál es el ancho de banda requerido. "Este es el rendimiento, esta es la latencia que voy a obtener". En base a eso, estás tratando de estimar cómo se vería todo el sistema. Pero a medida que avanzamos más durante el proceso de diseño, estamos buscando algún tipo de enfoque basado en simulación en el que no sea una simulación completa, como una simulación de transacciones precisas dentro de esa simulación para llegar al rendimiento exacto y a la precisión. Requisito de ancho de banda para diferentes bloques de diseño. Por ejemplo, hay un RISC-V y una NPU, y tienen que trabajar juntos y coexistir plenamente. ¿Hay que canalizarlos? ¿Se puede canalizar su carga de trabajo? ¿Cuántos ciclos exactos requiere el RISC? Para eso, tenemos que compilar el programa en RISC-V, compilar nuestro programa en la NPU y luego co-simularlo”.

Impacto de las cargas de trabajo de IA en el diseño de procesadores
Todas estas variables impactan la potencia, el rendimiento y el área/costo del diseño.

Según Ian Bratt, miembro y director senior de tecnología de Brazo, “Las compensaciones de PPA para las cargas de trabajo de ML son similares a las compensaciones que enfrentan todos los arquitectos cuando analizan la aceleración: eficiencia energética versus área. En los últimos años, las CPU han mejorado significativamente en las cargas de trabajo de ML con la adición de instrucciones de aceleración específicas de ML. Muchas cargas de trabajo de ML se ejecutarán admirablemente en una CPU moderna. Sin embargo, si se encuentra en un entorno energético muy limitado, puede valer la pena pagar el costo adicional del área de silicio para agregar NPU dedicadas, que son más eficientes energéticamente que una CPU para la inferencia de ML. Esta eficiencia tiene el costo de un área de silicio adicional y sacrifica la flexibilidad; NPU IP a menudo solo puede ejecutar redes neuronales. Además, una unidad dedicada como una NPU también puede ser capaz de lograr un rendimiento general más alto (menor latencia) que un componente más flexible como una CPU”.

Russell Klein, director de programa de Siemens EDA La División de Software Catapult explicó: “Hay dos aspectos principales del diseño que afectarán de manera más significativa sus características operativas, o PPA. Uno es la representación de los datos utilizados en los cálculos. Los números de coma flotante son bastante ineficientes para la mayoría de los cálculos de aprendizaje automático. Usar una representación más apropiada puede hacer que el diseño sea más rápido, más pequeño y con menor potencia”.

El otro factor importante es la cantidad de elementos informáticos en el diseño. "Básicamente, cuántos multiplicadores se incorporarán en el diseño", dijo Klein. “Esto aporta paralelismo, que es necesario para ofrecer rendimiento. Un diseño puede tener una gran cantidad de multiplicadores, lo que lo hace grande, necesita mucha energía y es rápido. O puede tener sólo unos pocos, lo que lo hace pequeño y de bajo consumo, pero mucho más lento. Una métrica adicional, más allá de la potencia, el rendimiento y el área, que es muy importante es la energía por inferencia. Cualquier cosa que funcione con baterías o que recolecte energía probablemente será más sensible a la energía por inferencia que a la potencia”.

La representación numérica de características y pesos también puede tener un impacto significativo en el PPA del diseño.

“En el centro de datos, todo es un número de coma flotante de 32 bits. Las representaciones alternativas pueden reducir el tamaño de los operadores y la cantidad de datos que deben moverse y almacenarse”, señaló. “La mayoría de los algoritmos de IA no necesitan el rango completo que admiten los números de punto flotante y funcionan bien con números de punto fijo. Los multiplicadores de punto fijo suelen tener aproximadamente la mitad del área y la potencia de un multiplicador de punto flotante correspondiente y funcionan más rápido. A menudo tampoco se necesitan 32 bits de representación de punto fijo. Muchos algoritmos pueden reducir el ancho de bits de las características y los pesos a 16 bits o, en algunos casos, a 8 bits o incluso menos. El tamaño y la potencia de un multiplicador son proporcionales al cuadrado del tamaño de los datos con los que opera. Entonces, un multiplicador de 16 bits es ¼ del área y la potencia de un multiplicador de 32 bits. Un multiplicador de punto fijo de 8 bits consume aproximadamente el 3% del área y energía que un multiplicador de punto flotante de 32 bits. Si el algoritmo puede usar números de punto fijo de 8 bits en lugar de punto flotante de 32 bits, solo se necesita ¼ de la memoria para almacenar los datos y ¼ del ancho de banda del bus para mover los datos. Se trata de ahorros importantes en superficie y energía. Al realizar un entrenamiento consciente cuantificado, los anchos de bits requeridos se pueden reducir aún más. Normalmente, las redes que se entrenan de forma consciente cuantificada necesitan aproximadamente la mitad del ancho de bits que una red cuantificada posterior al entrenamiento. Esto reduce los costos de almacenamiento y comunicación a la mitad y el área multiplicadora y la potencia a ¾. Las redes entrenadas con reconocimiento de cuantificación generalmente requieren solo de 3 a 8 bits de representación de punto fijo. En ocasiones, algunas capas pueden ser de un solo bit. Y un multiplicador de 1 bit es una puerta "y".

Además, cuando se cuantifica agresivamente una red, el desbordamiento se convierte en un problema importante. “Con números de coma flotante de 32 bits, los desarrolladores no necesitan preocuparse de que los valores excedan la capacidad de la representación. Pero con números de punto fijo pequeños esto debe solucionarse. Es probable que se produzcan desbordes con frecuencia. Usar operadores de saturación es una forma de solucionar este problema. En lugar de desbordarse, la operación almacenará el mayor valor posible para la representación. Resulta que esto funciona muy bien para los algoritmos de aprendizaje automático, ya que la magnitud exacta de una suma intermedia grande no es significativa, solo el hecho de que se haya vuelto grande es suficiente. El uso de matemáticas de saturación permite a los desarrolladores reducir uno o dos bits adicionales del tamaño de los números de punto fijo que están utilizando. Algunas redes neuronales necesitan el rango dinámico que ofrecen las representaciones de punto flotante. Simplemente pierden demasiada precisión cuando se convierten a punto fijo o requieren más de 32 bits de representación para ofrecer una buena precisión. En este caso existen varias representaciones de punto flotante que se pueden utilizar. B-float16 (o “brain float”) desarrollado por Google para su NPU, es un float de 16 bits que se convierte fácilmente desde y hacia el punto flotante tradicional. Al igual que con los números de punto fijo más pequeños, el resultado son multiplicadores más pequeños y menos almacenamiento y movimiento de datos. También hay un número de punto flotante IEEE-754 de 16 bits y Tensorfloat de NVIDIA”, añadió Klein.

El uso de cualquiera de estos daría como resultado un diseño más pequeño, más rápido y de menor potencia.

Además, Woo dijo: “Si tienes un núcleo de propósito general, es realmente bueno para hacer muchas cosas, pero ninguna de ellas será excelente. Es simplemente general. En cualquier momento en el que esté realizando su carga de trabajo, habrá partes de ese núcleo de propósito general que estarán en uso y partes que no. Se necesita espacio, se necesita poder para tener estas cosas. Lo que la gente empezó a darse cuenta es que la Ley de Moore todavía nos proporciona más transistores, por lo que tal vez lo correcto sea construir estos núcleos especializados que sean buenos en ciertas tareas a lo largo del proceso de IA. A veces los apagarás y a veces los encenderás. Pero eso es mejor que tener estos núcleos de uso general en los que siempre estás desperdiciando algo de área y energía, y nunca obtienes el mejor rendimiento. Junto con un mercado que está dispuesto a pagar (un mercado de muy alto margen y alto valor en dólares), es una gran combinación”.

También es un enfoque relativamente bien comprendido en el mundo de la ingeniería de hardware. "Abres la versión 1 y, una vez instalada, descubres qué funciona y qué no, e intentas solucionar los problemas", dijo Marc Swinnen. , director de marketing de productos de Ansys. “Las aplicaciones que ejecuta son vitales para comprender cuáles deben ser estas compensaciones. Si puede hacer que su hardware coincida con las aplicaciones que desea ejecutar, obtendrá un diseño mucho más eficiente que usar material disponible en el mercado. El chip que fabrica usted mismo es ideal para exactamente lo que quiere hacer”.

Esta es la razón por la que algunos desarrolladores de IA generativa están explorando la posibilidad de construir su propio silicio, lo que sugiere que, en su opinión, incluso los semiconductores actuales no son lo suficientemente buenos para lo que quieren hacer en el futuro. Es un ejemplo más de cómo la IA está cambiando el diseño de los procesadores y la dinámica del mercado circundante.

Es probable que la IA también tenga un papel importante en el mundo de los chiplets, donde los bloques de hardware personalizados y semipersonalizados se pueden caracterizar y agregar a los diseños sin la necesidad de crear todo desde cero. Los grandes fabricantes de chips como Intel y AMD llevan tiempo haciendo esto internamente, pero las empresas sin fábrica están en desventaja.

"El problema es que sus chiplets tienen que competir con las soluciones existentes", dijo Andy Heinig, jefe del departamento de electrónica eficiente de Fraunhofer IIS ' División de Ingeniería de Sistemas Adaptativos. “Y si actualmente no te concentras en el rendimiento, no puedes competir. La gente está centrada en poner en funcionamiento este ecosistema. Pero desde nuestra perspectiva, es un problema del huevo y la gallina. Necesitas rendimiento, especialmente porque los chips son más caros que una solución SoC. Pero actualmente no puedes centrarte realmente en el rendimiento porque primero tienes que poner en funcionamiento este ecosistema”.

El comienzo correcto
A diferencia del pasado, cuando muchos chips se diseñaban para un socket, con la IA todo gira en torno a la carga de trabajo.

"Cuando se producen estas compensaciones, es muy importante tener una noción de cuál es el objetivo en mente", dijo Chole de Expedera. “Si simplemente dices: 'Quiero hacer todo y apoyar todo', entonces en realidad no estás optimizando nada. Básicamente, simplemente está colocando una solución de uso general allí y esperando que cumpla con sus requisitos de energía. Eso, a nuestro entender, rara vez ha funcionado. Cada red neuronal y cada caso de implementación en dispositivos perimetrales es único. Si su chip va a unos auriculares y ejecuta un RNN, en lugar de estar en un chip ADAS y ejecutar transformadores, es un caso de uso completamente diferente. Las NPU, los sistemas de memoria, la configuración y el consumo de energía son totalmente diferentes. Por eso es muy importante que comprendamos cuál es el conjunto importante de cargas de trabajo que queremos probar. Pueden ser varias redes. Debes llegar al punto en que el equipo se ponga de acuerdo sobre las redes que son importantes y optimice en base a ellas. Eso falta cuando los equipos de ingeniería piensan en las NPU. Simplemente piensan que quieren conseguir lo mejor del mundo, pero no se puede tener lo mejor sin sacrificar algo. Puedo darte lo mejor, pero ¿en qué área quieres lo mejor?

Mitra de Cadence señaló que todo el mundo piensa en PPA de manera similar, pero luego la gente enfatiza qué parte de potencia, rendimiento, área/costo (PPAC) les importa. "Si eres un experto en centros de datos, puede que te parezca bien sacrificar un poco de área, porque lo que estás buscando son máquinas de muy alto rendimiento porque necesitas hacer miles de millones de inferencias de IA o cosas de IA, que al mismo tiempo están negociando cuotas de mercado mientras ejecutan enormes modelos que generan enormes cantidades de datos. Atrás quedaron los días en los que se podía pensar en una computadora de escritorio ejecutando cosas para el trabajo de desarrollo de modelos de IA para la inferencia, pero incluso la inferencia para algunos de estos grandes modelos de lenguaje se está volviendo bastante complicada. Significa que se necesita un clúster de datos masivo y una computación de datos masiva a escala del centro de datos en los hiperescaladores”.

También hay otras consideraciones. "Las decisiones sobre la arquitectura del hardware impulsan esto, pero el papel del software también es fundamental", afirmó William Ruby, director de gestión de productos de Sinopsis EDA Group, señalando que el rendimiento frente a la eficiencia energética es clave. “¿Cuánta memoria se necesita? ¿Cómo se dividiría el subsistema de memoria? ¿Se puede optimizar el código del software para lograr eficiencia energética? (Sí, puede ser así). La elección de la tecnología de proceso también es importante, por todas las razones del PPAC”.

Además, si la eficiencia energética no es una prioridad, se puede utilizar una GPU integrada, según Gordon Cooper, gerente de producto para procesadores AI/ML en Synopsys. “Le brindará la mayor flexibilidad en la codificación, pero nunca será tan eficiente en cuanto a energía y área como los procesadores especializados. Si está diseñando con una NPU, todavía hay que hacer concesiones en términos de equilibrio entre área y potencia. Minimizar la memoria en el chip debería reducir significativamente el presupuesto total del área, pero aumentará las transferencias de datos desde la memoria externa, lo que aumenta significativamente la energía. Aumentar la memoria en el chip disminuirá la energía de las lecturas y escrituras de la memoria externa”.

Conclusión
Todos estos problemas se están convirtiendo cada vez más en problemas de sistemas, no sólo en problemas de chips.

“La gente ve la parte del entrenamiento de la IA como, 'Oh, vaya, eso es muy pesado desde el punto de vista computacional. Es mucho movimiento de datos'”, dijo Woo. “Y una vez que quieres lanzarle todo este hardware de aceleración, el resto del sistema comienza a interponerse en el camino. Por esta razón, vemos cada vez más estas plataformas de compañías como NVIDIA y otras, que tienen motores de entrenamiento de IA elaborados, pero también pueden tener chips Intel Xeon. Esto se debe a que existe otra parte del cálculo para la que los motores de IA simplemente no son adecuados. No están diseñados para ejecutar código de propósito general, por lo que cada vez más se trata de un problema de sistema heterogéneo. Tienes que lograr que todo funcione en conjunto”.

La otra pieza del rompecabezas está en el lado del software, que se puede hacer más eficiente mediante una variedad de métodos, como la reducción. "Esta es la comprensión de que dentro de la IA, hay una parte específica del algoritmo y un cálculo específico llamado reducción, que es una manera elegante de tomar muchos números y reducirlos a un número o un pequeño conjunto de números", dijo Woo. explicado. “Podría ser sumarlos todos juntos o algo así. La forma convencional de hacer esto es si tienes todos estos datos provenientes de todos estos otros procesadores, enviarlos a través de la red de interconexión a un procesador y hacer que ese procesador simplemente agregue todo. Todos estos números pasan a través de esta red a través de conmutadores para llegar a este procesador. Entonces, ¿por qué no simplemente los agregamos en el interruptor, porque todos pasan por el interruptor? La ventaja es que es similar al procesamiento en línea. Lo fascinante es que una vez que haya terminado de agregar todo en el conmutador, solo necesita entregar un número, lo que significa que la cantidad de tráfico de la red disminuye”.

Vale la pena considerar consideraciones de arquitectura como esta porque abordan varios problemas a la vez, dijo Woo. En primer lugar, el movimiento de datos a través de las redes es increíblemente lento y eso le indica que debe mover la menor cantidad de datos posible. En segundo lugar, elimina el trabajo redundante de entregar los datos a un procesador sólo para que el procesador haga todos los cálculos y luego entregue el resultado. Todo se hace en la red. Y tercero, es muy paralelo, por lo que cada conmutador puede hacer parte de ese cálculo.

Asimismo, Chole de Expedera dijo que las cargas de trabajo de IA ahora se pueden definir mediante un único gráfico. “Tener ese gráfico no es para un pequeño conjunto de instrucciones. No estamos haciendo una adición. Estamos haciendo millones de sumas a la vez, o estamos haciendo 10 millones de operaciones de multiplicación de matrices a la vez. Eso cambia el paradigma de lo que piensas sobre la ejecución, cómo piensas sobre las instrucciones, cómo puedes comprimir las instrucciones, cómo puedes predecir y programar las instrucciones. Hacer esto en una CPU de uso general no es práctico. Hay demasiado costo para poder hacer esto. Sin embargo, como red neuronal, donde la cantidad de MAC que están activas simultáneamente es enorme, la forma en que se pueden generar las instrucciones, crear las instrucciones, comprimir las instrucciones, programar las instrucciones, cambia mucho en términos de utilización y ancho de banda. Ese ha sido el gran impacto de la IA en el lado de la arquitectura del procesador”.

Lectura relacionada
Procesadores de partición para cargas de trabajo de IA
El procesamiento de propósito general y la falta de flexibilidad están lejos de ser ideales para cargas de trabajo de IA/ML.
Compensaciones de procesador para cargas de trabajo de IA
Las brechas entre los avances y las demandas tecnológicas se están ampliando, y cerrarlas es cada vez más difícil.
Especialización vs. Generalización en procesadores
¿Qué se necesitará para lograr una personalización masiva en el borde, con alto rendimiento y bajo consumo?

punto_img

Información más reciente

punto_img