El futuro del mercado de semiconductores impulsado por los aceleradores de deep learning
(facebook.com)Aquí hay algo que no debe pasarse por alto: la GUGPU sigue estando optimizada también para mejorar el rendimiento en juegos. Si se piensa que, desde un principio, la GPU tuvo un desempeño especializado en el procesamiento de matrices, esto es algo natural. En los juegos de antes de inicios de los 90, en realidad casi no existía el concepto de imagen 3D, y aun cuando existía, lo que se mostraba de forma continua era más bien una proyección 2D desde cierta dirección. Prácticamente puede considerarse 2D puro. En las operaciones de álgebra lineal relacionadas con matrices, una matriz bidimensional en realidad entra en la categoría de cálculos sencillos. Pero el problema son las operaciones con matrices tridimensionales. El mundo en el que vivimos es tridimensional, y todos los fenómenos físicos que vemos, oímos y sentimos ocurren dentro de un espacio de 3 dimensiones + 1 dimensión temporal. Cada segundo, los eventos en tres dimensiones cambian constantemente, y nuestros ojos deben reconocer esa información forzándola a mapearse en dos dimensiones. Esa es justamente la razón por la que el cerebro humano usa una enorme cantidad de recursos para procesar la información visual. Lo mismo puede aplicarse al cómputo. Pensemos en la tarea de mostrar en el espacio bidimensional que percibimos, es decir, en un monitor, la imagen de un objeto tridimensional. Por ejemplo, hay que desplegar en un monitor 2D la imagen de una figura compuesta por polígonos 3D vista desde cierto ángulo. Para lograrlo, se requieren operaciones de transformación de matrices (matrix transformation). Hay que realizar transformaciones de rotación, stretching, y procesamiento del punto de fuga. Si se quiere ir un poco más lejos, también hay que hacer ray tracing. Es decir, hay que considerar también los efectos de luz y sombra, y ese cálculo exige todavía más operaciones. Esto se debe a que las operaciones de óptica geométrica deben ejecutarse junto con cada punto de masa de todos los polígonos. Y estos cálculos descomunales no deben hacerse una vez por segundo, sino al menos entre 30 y 60 veces por segundo para que el ojo humano perciba que el fenómeno ocurre de forma natural en tiempo real. Debió de haber sido una tarea de pesadilla para los ingenieros en computación. Si a inicios de los 90 este trabajo se hubiera hecho con CPU, probablemente apenas habría sido posible mostrar una escena por minuto. Para los gamers impacientes, eso se traduce en un lag insoportable. Pero como la GPU puede procesar en paralelo estas operaciones repetitivas sobre una base matricial, la CPU ya no tiene que cargar sola con todo ese peso. La GPU se encarga de la mayor parte de las transformaciones matriciales y de las operaciones de óptica geométrica del ray tracing, y la CPU solo asume el procesamiento posterior. Es decir, desde la perspectiva del gamer, ahora parece que este cómputo está “acelerado”. De ahí también el nombre de acelerador.<br /> <br /> Si se trata de datos que pueden expresarse sobre una base matricial, ya sean imágenes 3D de alta resolución para videojuegos, datos médicos 3D de vóxeles o datos tensoriales con múltiples features para entrenamiento de deep learning, no sería exagerado decir que la era dorada de la GUGPU realmente ha alcanzado su peak. Sin embargo, el problema es que las ventajas de la GUGPU también se convierten al mismo tiempo en desventajas. La forma de mejorar la velocidad del procesamiento en paralelo es aumentar aún más el número de núcleos o acelerar la velocidad de I/O de información entre un núcleo y otro. Para ello, puede integrarse la memoria con cada núcleo o ampliarse todavía más el bandwidth. Pero hay un costo inmutable: el consumo eléctrico aumenta en la misma medida. Además de la energía que consumen los propios núcleos, también crece el consumo de energía destinado al enfriamiento, porque la energía usada por los núcleos termina transformándose en calor. Asimismo, el ciclo repetido de calentamiento y enfriamiento también afecta la vida útil del chip. La GPU también es un chip semiconductor basado en silicio, así que, al final, el uso intensivo de energía y cómputo acorta la vida útil de los materiales y dispositivos que conforman sus núcleos. Esto se debe a que pueden producirse fallas mecánicas, fallas térmicas y fallas eléctricas. No por nada se dice que la vida útil de la GUGPU usada en granjas de minería de blockchain operadas casi como fábricas no llega ni a seis meses, y las GPU de alto rendimiento usadas en cafés internet comunes también suelen durar normalmente dos años y, en el mejor de los casos, apenas entre 3 y 4 años. Claro, como durante ese tiempo sale la siguiente generación de GPU, el problema de la vida útil queda disimulado, pero sigue siendo una desventaja inevitable que su vida útil termine siendo más corta que la de una CPU.<br /> <br /> Aun así, la era de la IA apenas está empezando a crecer y florecer, y no hay manera de soportar esa enorme cantidad de operaciones sin usar aceleradores como la GPU. Pero depender solo de la GPU también es problemático, porque la cantidad de energía que consume para el entrenamiento parece ir cada vez más por las nubes. Por supuesto, se necesitaba una alternativa, y una de las soluciones que apareció entre finales de la década de 2010 y el paso a la década de 2020 fue el FPGA y la NPU. En 2019, AMD, que junto con Intel formaba el duopolio de fabricantes de CPU, adquirió de forma sorpresiva a Xilinx, la empresa número uno del mundo en FPGA. La visión de la industria fue que era algo que tarde o temprano iba a pasar, y con razón, porque su competidor Intel ya había adquirido en 2015 a Altera, el segundo jugador del mercado de FPGA, por 16.700 millones de dólares. ¿Por qué las grandes empresas tradicionales de fabricación de CPU adquirieron competitivamente FPGA, que tienen una naturaleza distinta a la de la CPU? El FPGA es, literalmente, un chip de cómputo que el usuario puede reprogramar según el propósito de cada momento. Decir que el usuario puede reprogramarlo significa que el chip conserva solo las funciones mínimas necesarias para operar, mientras que el arreglo o diseño del resto de las unidades puede ser modificado por el usuario. Entonces, naturalmente, en comparación con chips semiconductores producidos en procesos estandarizados, como CPU o DRAM, su costo no puede más que ser más alto. Esto se debe a que hay que dejar mayor degree of freedom. Antes de la era del deep learning, por esta razón los chips basados en FPGA se utilizaban sobre todo para fines especiales —como centrales nucleares o sondas de exploración espacial—, y casi nunca se usaban de forma general.<br /> <br /> Pero cuando la era del deep learning empezó de lleno, el mercado que parecía destinado a ser dominado sin límites por la GPU comenzó poco a poco a diversificarse. Y esta tendencia no terminó siendo una situación totalmente favorable para la GPU. Por ejemplo, si el deep learning hubiera sido simplemente un conjunto de operaciones que repiten cálculos de convolución, no habría habido problema. Pero a medida que se ampliaron los campos en los que se quería aplicar deep learning, también cambiaron y se diversificaron cada vez más la escala y las características de los datos que el motor de deep learning tenía que aprender. Si las aplicaciones se limitaran a reconocer números en imágenes o distinguir perros y gatos, el alcance sería restringido; pero empezó a abrirse un mercado con usos y especificaciones muy diversos: procesar lenguaje natural, detectar errores en datos complejos de procesos químicos con más de 1,000 features, diseñar redes de sensores IoT, inferir y simular flujos complejos de fluidos dentro de medios porosos que el CFD no puede cubrir, o construir en tiempo real motores de conducción autónoma. Para quienes querían aplicar deep learning en la industria, esta diversificación del mercado era algo bienvenido, pero para quienes pretendían cubrirlo todo con GPU de propósito general, esto se convirtió en un problema. En cada aplicación cambian los pesos relativos de lo que importa más: si la clasificación es lo esencial, si lo es la inferencia, la predicción o la detección, y por eso se volvió difícil seguir sosteniendo una estructura de cómputo optimizada para algoritmos de redes neuronales uniformes y repetitivos. En los primeros años de la aparición del deep learning, como prácticamente no había hardware disponible más allá de la GUGPU, los desarrolladores de algoritmos de deep learning no tuvieron otra opción que construirlos sobre las especificaciones de la GUGPU disponible. Pero a medida que el tipo y la cantidad de datos que maneja el deep learning crecieron exponencialmente, ahora ocurre cada vez más lo contrario: los algoritmos de deep learning empiezan a influir en el diseño de la arquitectura de la GPU. Casos de esto son fijar la precisión de cada núcleo individual de la GPU en FP16 (posición de punto flotante), o diseñar núcleos con tolerancia a la variación de precisión (multiplísima precisión). Sin embargo, incluso este diseño de GPU impulsado por deep learning tiene límites claros. Una vez fabricada, la GPU también hace casi imposible modificar su estructura, y no deja margen para reprogramación. Uno puede afeitarse con un hacha si insiste, pero es natural terminar extrañando una rasuradora bien adaptada a la mano.<br /> <br />
En contraste, el mercado acepta cada vez más que los FPGA pueden ser más adecuados para estos fines. Como se mencionó antes, los FPGA se entregan a los clientes cuando el diseño lógico aún no está completamente terminado. Sin embargo, sobre ellos se ofrece una especie de SDK que los clientes pueden programar según sus propios objetivos. Es decir, los clientes podrían incluso crear, por ejemplo, un chip de deep learning dedicado a simulaciones de dinámica de fluidos; e incluso si al principio hubiera errores de diseño y no funcionara correctamente, como es posible hacer reprogramming, se puede corregir cuanto sea necesario, lo que reduce la pérdida de costos en las pruebas iniciales. No puede compararse con el rendimiento de procesamiento paralelo a nivel de hardware que se logra en un GPU, pero el FPGA también puede realizar procesamiento paralelo, y esto igualmente se debe a sus características propias. En un FPGA, el procesamiento paralelo puede implementarse a nivel de software, y es posible diseñar algoritmos en los que un solo núcleo reciba múltiples instrucciones (multiple instruction) y produzca múltiples outputs. A este método se le llama Multiple instruction multiple data (MIMD). En cambio, en los núcleos individuales de un GPU, el flujo de datos está compuesto desde el inicio como single instruction multiple data (SIMD) para cumplir con condiciones óptimas de paralelización mediante tareas repetitivas. Si el set de instrucciones está bien construido y el formato de los datos está bien ordenado, un GPU puede lograr un procesamiento paralelo casi de otro mundo a nivel de hardware; pero si cambia el formato de los datos o aparecen operaciones difíciles de cubrir con el set de instrucciones disponible, inevitablemente empieza a quedarse corto. En cambio, aunque el FPGA tiene dificultades con el procesamiento paralelo a nivel de hardware, su mayor ventaja es que es flexible. Aunque cambie el formato de los datos (width), no necesita quedar atado a un set de instrucciones previamente defined, así que puede aprovechar multiple instruction set sin problema. Que tenga esta característica de ser flexible significa que, en la actual era del deep learning, donde están ganando relevancia los datasets diversificados y las aplicaciones de borde, la comercialización de los FPGA probablemente aumentará.<br />
<br />
Además, como los FPGA originalmente no necesitan hacer funcionar miles de núcleos al mismo tiempo —aunque su rendimiento sea algo inferior—, comparados con los GPU su consumo energético es muchísimo más bajo (ver tabla adjunta 1). Adicionalmente, a medida que mejoran los algoritmos de deep learning del mercado, en los FPGA también es posible modificar la forma de consumo energético, por lo que se puede optimizar la eficiencia energética en cualquier momento. Esto se debe a que basta con apagar los switches innecesarios y activar solo los que sí se requieren. Por esta razón, puede interpretarse que Intel y AMD, que no habían logrado gran cosa con los GPU antes de que comenzara de lleno la era del deep learning, se apresuraron a adquirir por grandes sumas a las empresas FPGA número 1 y 2 del sector. Por supuesto, Nvidia, que ya era una potencia consolidada en GPU, tampoco se ha quedado quieta. Por muchas ventajas que tengan los FPGA, todavía conservan una desventaja crítica frente a los GPU en deep learning: su velocidad de training es más lenta. Es una desventaja inevitable, ya que desde el principio no tienen una estructura built-in basada en aumentar sin más los núcleos disponibles a nivel de hardware. Intel y AMD trazaron una estrategia para arrebatar, mediante FPGA, una parte del mercado de aceleradores para IA que dominaban los GPU. Intel lanzó Agilex y PAC (programmable acceleration card), y AMD (Xilinx) también apostó fuerte al lanzar la tarjeta aceleradora Alveo. En particular, Xilinx incluso viró hacia productos como Versal, que integra HBM (high-bandwidth memory) directamente con el FPGA; esto también fue posible gracias a que la tecnología de patrón ultrafino para semiconductores de 10 nanómetros o menos alcanzó una etapa de madurez (en el caso de Versal, se fabrica con proceso de 7 nanómetros). Desde que Intel adquirió Altera, las ventas de aceleradores basados en FPGA de Intel no han mostrado un gran crecimiento, mientras que las ventas de Xilinx sí han mantenido un crecimiento fuerte y sostenido, lo que también indica que la estructura FPGA + HBM al estilo de Xilinx está cerrando poco a poco la brecha de rendimiento en aceleradores de deep learning. Además, Xilinx está ampliando el desarrollo con su procesador xDNN optimizado para deep neural nets, apuntando al mercado de aceleradores de deep learning flexibles.<br />
<br />
De hecho, en el proceso de entrenamiento de deep learning, tan importante como las operaciones matriciales es el proceso de integrar los resultados de aprendizaje de grandes volúmenes de datos, y para ello, cuando los datos están alineados de forma continua, se necesita reducir el tiempo de espera. Es decir, reducir la latencia de los datos se está volviendo cada vez más importante tanto en términos de consumo energético como de velocidad de entrenamiento. La carta que Nvidia sacó frente al bando de los FPGA es precisamente InfiniBand, una tecnología para reducir esta latencia de datos. Para ello, Nvidia ganó la competencia de adquisiciones frente a Intel y AMD y en 2019 compró por 6,900 millones de dólares a Mellanox, líder global en tarjetas de interfaz de red (NIC) e InfiniBand, asegurando su tecnología de optimización de NPU. La tecnología con la que Nvidia apunta, además de los GPU, al deep learning y más allá, a todo el mercado de aceleradores de IA, es el SoC Xavier, un acelerador de deep learning de propósito general, que en particular está posicionado como producto principal para el mercado de vehículos autónomos, donde la demanda de aceleradores de IA está explotando. CUDA de Nvidia también ofrece cuDNN, especializado en deep learning, y como tiene implementados de antemano casi todos los units que necesita prácticamente cualquier deep neural net, sin importar el dataset o la escala, puede decirse que también ya aseguró una cabeza de puente hacia el futuro mercado de NPU (Neural processing unit). En particular, un NPU es un chip en el que se ha implementado previamente una DNN para un dataset específico a nivel de hardware (literalmente, un chip en el que cada capa que compone una red de deep learning se implementa en correspondencia 1:1 como una unidad lógica basada en chip de silicio. Es decir, puede verse como una implementación directa de neuronas a nivel de hardware). Considerando que, por su naturaleza, se integra fácilmente en un AP móvil, es muy probable que también mantenga su dominio en el mercado de AP, que seguirá creciendo con fuerza. Puede verse al NPU como un chip en el que la función se fija a un nivel que permite realizar la “inferencia” no en un GPU, sino en dispositivos de borde (por ejemplo, un smartphone). Como no se puede meter en un smartphone un GPU que ya alcanzó el tamaño de un libro bastante grueso, el NPU se fabrica con una estructura previamente entrenada integrada al máximo en forma built-in. Si el entrenamiento del modelo lo realiza un servidor GPU y el NPU se encarga únicamente de inferir características a partir de los datos de entrada con base en el modelo entrenado, entonces ya no hace falta consumir mucha energía ni tener un gran tamaño, por lo que puede integrarse de forma personalizada junto con smartphones o chips semiconductores para vehículos. Esto también puede verse como una estrategia para rodear la flexibilidad que los FPGA han venido persiguiendo. Nvidia apuntó precisamente a este mercado de NPU y, después de Xavier, presentó la serie Jetson, además de reducir más el precio.<br />
<br />
El competidor en el mercado de NPU probablemente será Google, que presentó Coral, una serie de chips TPU (tensor processing unit) diseñados internamente, e intenta competir en costos al fijar su precio en menos de una quinta parte del de Jetson de Nvidia. Por supuesto, rendimiento y precio son proporcionales, y se sabe que el rendimiento de Coral está en torno a una quinta o una tercera parte del de Xavier o Jetson. Aun así, se prevé que los TPU que Google lance más adelante se usarán en campos un poco más amplios a partir del feedback del mercado, lo que puede inferirse como algo basado en la competitividad que Google visualiza en la velocidad de actualización de modelos de entrenamiento a través de servidores cloud con GPU. Fabricantes tradicionales de AP móviles como Samsung o Qualcomm también están adoptando la estrategia de meter NPU, ya que debido a los límites del patrón ultrafino cada vez hay menos margen para mejorar el rendimiento del propio chip AP. Qualcomm comenzó a incorporar NPU desde su serie Snapdragon 845, y Samsung comenzó a incorporarlo desde su serie Exynos 9. Las empresas que buscan integrar o usar en paralelo NPU naturalmente irán asegurando datos en chips móviles y ampliando gradualmente su rango de aplicación; el siguiente mercado probablemente será el de los semiconductores para automóviles (chips para vehículos autónomos o chips electrónicos automotrices), chips para procesamiento de señales IoT, chips compuestos de radar militar y otros campos cada vez más amplios.<br />
<br />
Pero, irónicamente, la competencia entre FPGA y el mercado de NPU/TPU/cuDNN no depende del hardware, sino del software, en particular de cómo evolucione la tendencia de los algoritmos de deep learning. Incluso ahora, en el campo de los algoritmos de deep learning surgen día tras día nuevas metodologías, nuevas teorías y nuevos modelos, y cada año se vuelve más difícil lograr que un paper sea aceptado en las cuatro principales conferencias de inteligencia artificial. Sin embargo, como ocurre con la tecnología en otros campos, si el deep learning entra gradualmente en una etapa de madurez y la velocidad de innovación de los algoritmos empieza a desacelerarse, la ventaja propia de la flexibility de los FPGA también se irá diluyendo. La ventaja de poder hacer reprogramming para adaptarse a algoritmos más rápidos y eficientes dejará de ser una ventaja clara si el ciclo de reemplazo de algoritmos se vuelve cada vez más lento. Por ejemplo, en funciones como el reconocimiento de imágenes, los algoritmos pueden considerarse ya en un estado de saturación, hasta el punto de que casi no queda margen de mejora (la tasa de reconocimiento humano fue superada hace mucho, y la mayoría de los algoritmos ya supera el 95% de acierto en reconocimiento de imágenes). Más bien, a largo plazo podría resultar más favorable seguir modificando DNN de propósito general para reducir la brecha entre el hardware y los algoritmos más recientes.<br />
El mercado de aceleradores de deep learning seguirá creciendo en el futuro, y probablemente la demanda mantendrá una tendencia al alza incluso después de 2030, pero todavía está por verse qué enfoque terminará dominando el mercado. Nadie puede predecir cuándo llegará la madurez de los algoritmos de deep learning, pero eventualmente llegará, y es difícil anticipar qué tecnología estará mejor optimizada en ese momento. Los FPGA también tienen amplio margen para innovar. Un buen ejemplo de ese potencial es la investigación de diseño de chips basada en aprendizaje por refuerzo que Google publicó en Nature en junio de este año* (https://www.nature.com/articles/s41586-021-03544-w). Diseñar la disposición de millones o decenas de millones de unidades sobre un área reducida de chip die, minimizando la latencia entre las entradas y salidas de datos de cada unidad y al mismo tiempo reduciendo el consumo energético, ha sido una de las partes más difíciles del diseño de chips semiconductores. Las empresas fabless han realizado esta optimización aprovechando el know-how acumulado, pero los resultados publicados por Google lograron mejoras tan impactantes que casi dejan sin valor toda esa experiencia previa. Es algo parecido a distribuir toda clase de muebles y electrodomésticos en el plano de un departamento complejo, encontrando al mismo tiempo el flujo de movimiento óptimo que minimice tanto los desplazamientos del cuerpo como el esfuerzo. Google consiguió este diseño optimizado en el espacio de estados de disposición de unidades (~10^2500), mucho mayor que el espacio de estados del Go (~10^360), mediante un método que hereda y desarrolla de forma mucho más avanzada el enfoque de AlphaGo. Naturalmente, este método de diseño también puede aplicarse de inmediato a la optimización de FPGA, porque optimizar un rendimiento dado considerando el grado de libertad del instruction set es una tarea alcanzable en el mismo contexto.<br />
<br />
¿Podría aparecer una tecnología que se aparte por completo del enfoque actual usado por NVIDIA, Google, Intel, AMD y Qualcomm? Por supuesto que sí. Tal como indica el nombre de red neuronal, ya se puede pensar en una tecnología que no solo imite de manera simple la red neuronal del cerebro humano, sino que la conecte directamente con chips semiconductores mediante una especie de copy & phaste. Un ejemplo de ello es la perspective publicada recientemente por científicos coreanos de Samsung y Harvard* (**https://www.nature.com/articles/s41928-021-00646-1...). La tecnología alternativa que proyecta este paper es precisamente el chip neuromórfico (neuromorphic chip). Aunque el concepto de chip neuromórfico ya era bien conocido, volvió a captar atención porque mostró, a nivel de tecnología real, que es posible conectar las señales eléctricas intercambiadas en la red neuronal del cerebro humano con nanoelectrodos, copiarlas tal cual (copy) y transferirlas (phaste) a la memoria conectada debajo. Esto significa que, salvo el propio tejido blando del cerebro, prácticamente todas las demás funciones podrían trasladarse tal cual a un chip semiconductor. La tecnología de memoria semiconductor para implementar chips neuromórficos ya existe o incluso ya se usa en la práctica mediante SRAM, RRAM, MRAM, memristor y otros, por lo que la clave pasa a ser cómo trasladar a la memoria, en tiempo real y minimizando la latencia, las señales generadas por billones de neuronas; la conexión mediante copy & phaste ya no parece ser algo técnicamente imposible. <br />
<br />
En adelante, el mercado de semiconductores impulsado por aceleradores de deep learning seguirá creciendo de formas diversas y cada vez más potentes. El tamaño de ese mercado, así como la tecnología dominante, dependerán de hasta qué punto el procesamiento de datos basado en deep learning pueda abrirse paso en mercados cada vez más diversos y manejar volúmenes mayores de datos no estructurados; y lo que hay que observar aquí, junto con el desarrollo de las tecnologías clave actuales, son nuevas tecnologías conceptuales capaces de reemplazarlas desde una dirección completamente distinta. Además de la neuromórfica, son posibles las neural network basadas en photonics, lo que significa que la propia latencia podría reducirse a la velocidad de la luz y anticipa la aparición de NPU aún más potentes. En el caso de la spintronics, podría elevarse todavía más el rendimiento del procesamiento paralelo, y algoritmos de deep learning dedicados a computación cuántica como TFQ, presentado por Google, también podrían redefinir la “inferencia” de una manera completamente distinta a todo lo visto hasta ahora. En el mercado de semiconductores del futuro también será, en última instancia, la innovación en aceleradores de IA liderados por el deep learning y en algoritmos a la altura de ellos la que genere el principal momentum, y mientras aparezcan en masa más empresas fabless con arquitecturas diversas, se espera que asegurar tecnologías de proceso capaces de distinguir cuáles realmente valen y de determinar los límites de implementación tecnológica termine definiendo el dominio del mercado que se cree en adelante.<br />
<br />
- Es una publicación de Facebook del profesor Kwon Seok-jun de la Universidad Sungkyunkwan; la traigo porque explica de forma interesante cómo ha evolucionado CPU/GPU hasta ahora.</p>
1 comentarios