¿Cuáles son las diferencias funcionales entre un procesador de computadora diseñado para IA (por ejemplo, Tensor / TPU) y un procesador ordinario (CPU) o GPU?

Como Trideep Rath ya mencionó, la principal diferencia es el paralelismo de los procesos, pero me gustaría dar algunos detalles más.

En los procesadores tradicionales, tiene la CPU, uno o varios núcleos, cada uno con su propia unidad de control, unidad de lógica aritmética (ALU) y archivo de registro, conectado a la memoria RAM de programa / datos y un contador de programa que ejecuta secuencialmente las instrucciones almacenadas. En un procesador de inteligencia artificial, generalmente se encuentra una cuadrícula de elementos de procesamiento (PE), podría ser docenas, cientos o miles, cada uno con su propio banco de operadores (ALU), memoria (generalmente un archivo de registro) y una interfaz para los elementos fuera del PE (en la mayoría de las implementaciones que conozco, un bus FIFO); los PE están conectados localmente entre ellos, en la mayoría de los casos a sus cuatro vecinos más cercanos, y globalmente a la red a través de enrutadores, implementando lo que se llama una red en chip (NoC). Puede ver un ejemplo de dicha arquitectura en la imagen a continuación, tomada de la arquitectura Eyeriss [1] que están desarrollando los investigadores del MIT con la colaboración de Nvidia.

La red se configura en tiempo de ejecución, configurando los enrutadores a un cierto cableado entre las PE que implementan el flujo de datos requerido (por ejemplo, una sucesión de operaciones de multiplicación y acumulación para realizar una convolución), no hay contador de programa, al menos a nivel de red, porque los datos entrantes , y los recursos disponibles (disponibilidad de ALU y memoria del búfer FIFO en las PE) determinan qué proceso se ejecuta en un determinado momento, esto es lo que se llama una arquitectura de flujo de datos que no es de von Neumann (al menos en concepto). Por lo tanto, los datos se envían a la cuadrícula secuencialmente a través de buses globales, luego se distribuyen espacialmente en la matriz PE por los enrutadores, se transforman a medida que fluyen a través de varios PE y, finalmente, los resultados se almacenan en alguna memoria externa. Hay varios procesos que se ejecutan simultáneamente, ya que hay varios flujos de datos en la red.

Otra característica importante es el diseño de ALU, en los procesadores regulares, la ALU generalmente consiste en operadores simples, como sumadores, funciones lógicas o desplazadores, mientras que en los procesadores AI puede encontrar funciones más exóticas, como Multiplicar y Acumular (unidades MAC), típicas de Digital Procesadores de señal pero ideales para la multiplicación de vectores, o circuitos complejos que mapean la entrada a alguna función no lineal (sigmoide, tanh, softmax, ReLU, etc.). Este banco de operadores se puede ver en la siguiente imagen, de la arquitectura NeuFlow [2] desarrollada por Yann LeCun, Clément Farabet, et. Alabama

Supuse que por “procesador diseñado para IA” se refería a los aceleradores de aprendizaje profundo, sin embargo, esta arquitectura NoC también se puede encontrar con mucha frecuencia en chips neuromórficos, donde los PE son algún modelo (analógico o digital) de neuronas biológicas que implementan -sinápticas y funciones de umbral [3] con los enrutadores que gestionan la transmisión de espiga. En la IA simbólica clásica, solo conozco los procesadores Fuzzy, que logran una gran cantidad de inferencias paralelas mediante el uso de un banco de PE canalizados, siendo estos algún circuito que implementa un motor de inferencia difusa [4].

Referencias

[1] Yu-Hsin Chen, Joel Emer y Vivienne Sze, “Eyeriss: una arquitectura espacial para el flujo de datos energéticamente eficiente para redes neuronales convolucionales”: http://people.csail.mit.edu/emer…

[2] Clement Farabet, Berin Martini, Benoit Corda, Polina Akselrod, Eugenio Culurciello, Yann LeCun, “NeuFlow: un procesador de flujo de datos reconfigurable en tiempo de ejecución para la visión”: https: //pdfs.semanticscholar.org…

[3] Ning Qiao, Hesham Mostafa, Federico Corradi, Marc Osswald, Fabio Stefanini, Dora Sumislawska y Giacomo Indiveri, “Un procesador neuromórfico de aprendizaje en línea reconfigurable que comprende 256 neuronas y 128K sinapsis”: http: //journal.frontiersin. org / a …

[4] Miguel Melgarejo, Carlos Andrés Peña Reyes, “Implementación de procesadores difusos tipo 2 de intervalo”: https://www.researchgate.net/pub…

PD: Disculpe cualquier posible error gramatical, no soy un hablante nativo de inglés, y si hay algún error, estaría muy agradecido si algún compañero Quoran lo edita.

Esta no es una pregunta muy precisa, pero creo que entiendo lo que estás intentando hacer. El mayor problema con la pregunta es que la IA es un campo muy amplio con muchos algoritmos populares, y cada algoritmo tiene requisitos ligeramente diferentes para la aceleración de hardware especializada. Supongamos que solo está interesado en un algoritmo particular, por ejemplo, redes neuronales. Sin embargo, incluso dentro de las redes neuronales, existen variaciones, cada una con sus pros y sus contras y cada una con diferentes requisitos para una aceleración óptima. Por ejemplo, investigaciones recientes sugieren que es posible que pueda reducir la precisión de una sola “neurona” a un solo bit.

Ignorando todo eso, respondamos la pregunta general que está tratando de hacer, que es “¿Cuáles son las diferencias funcionales entre el hardware diseñado para acelerar un algoritmo único y un procesador ordinario?” Al igual que con todas esas respuestas, la respuesta es “ depende “. Más precisamente, existe una escala móvil: cuanto más especializado diseñe el hardware para el algoritmo particular, mayor será el rendimiento y la eficiencia energética.

Aquí está mi versión de la escala móvil, desde la más general (rendimiento más lento, peor eficiencia energética) hasta la menos general. Subir cada nivel en la escala generalmente da como resultado ~ 2x mejoras en el rendimiento y la potencia; si no le da al menos 2x, probablemente no valga la pena el esfuerzo.

  1. Procesadores estándar de uso general. Estos son sus procesadores Intel y AMD estándar. Para dispositivos móviles, puede agrupar los SoC estándar de teléfonos inteligentes en esta categoría. Los procesadores de propósito general pueden ejecutar cualquier cosa razonablemente bien, pero tienen la eficiencia energética más baja.
  2. SoC Especializados. Muchas empresas ahora ofrecen SoC especializados diseñados para ciertas aplicaciones, como Tilera. Los núcleos de Intel Knights Landing (Xeon Phi) también entran en esta categoría. Todavía usan procesadores de propósito general, pero están optimizados para aplicaciones altamente multiproceso, generalmente con cientos de núcleos de bajo rendimiento en lugar de menos núcleos de alto rendimiento.
  3. GPGPU . Las GPU son ASIC especializadas con miles de ALU optimizadas para gráficos. La gente ha descubierto que también se pueden usar para ejecutar de manera eficiente otras aplicaciones altamente multiproceso. Sin embargo, están optimizados para gráficos primero y tienen muchos, muchos problemas (divergencia de subprocesos, divergencia de memoria).
  4. SoC especializado con aceleradores de hardware especializados . Para obtener los beneficios del hardware dedicado y al mismo tiempo mantener los beneficios de los procesadores de propósito general, puede agregar un bloque de hardware dedicado a un chip estándar de varios núcleos o personalizado de varios núcleos. Esto es muy común para cosas como el cifrado, la codificación / decodificación de video y los gráficos.
  5. Hardware especializado asignado a FPGA. Los FPGA se han utilizado durante décadas para la creación de prototipos de hardware o para diseños de chips de bajo volumen, pero la industria (por ejemplo, Microsoft Catapult, Amazon F1) ahora está comenzando a adoptarlos por su combinación inusual de rendimiento, eficiencia energética y programabilidad. Los FPGA permiten un desarrollo ágil (iteración rápida) de hardware y una reorientación rápida para múltiples clases de algoritmos. Además, a diferencia de un ASIC verdadero, dado que un FPGA es programable, puede desarrollar hardware que esté puramente optimizado para una sola aplicación / carga de trabajo sin tener en cuenta ninguna otra carga de trabajo. Sin embargo, el desarrollo de FPGA es mucho más difícil que el desarrollo de software.
  6. ASIC especializado. Este es un chip de hardware que solo puede ejecutar una determinada clase de aplicación o una determinada aplicación. Un ASIC especializado solo puede hacer una cosa bien, pero si está bien diseñado, puede hacerlo muy bien. La sabiduría convencional afirma que los ASIC especializados ofrecen una ventaja de rendimiento 10 veces superior a los FPGA. Sin embargo, en la práctica, eso no siempre es cierto. El problema principal es que la mayoría de las empresas no son muy buenas para diseñar ASIC, especialmente si tienen una amplia gama de clientes objetivo. Estos clientes terminarán queriendo diferentes características, lo que termina aumentando la generalidad del ASIC y reduciendo el rendimiento general y la eficiencia energética.

Los diversos algoritmos de aprendizaje automático / aprendizaje profundo intentan optimizar una función, es decir, encontrar los parámetros óptimos para ajustarse mejor a los datos. Algunos métodos de optimización, por ejemplo, gradiente decente, requiere una gran computación. Estos cálculos podrían hacerse en paralelo. Por lo tanto, los requisitos principales de la arquitectura de la computadora deben ser la computación paralela masiva y no otras cosas. Por lo tanto, las GPU se usan mucho en donde 5000 núcleos podrían ejecutarse en paralelo.

Hay un par de enfoques para la computación de IA, uno hace muchos cálculos de matriz (el enfoque más estadístico) y el otro (redes neuronales) es un modelo impulsado por eventos escasamente conectado que es más probable que sea simulado que ejecutado directamente.

GP-GPU son razonablemente buenos en matemáticas de matriz. Las cosas NN parecen circuitos analógicos, y no hay mucho que se parezca arquitectónicamente, pero las GPU-GPU y FPGA pueden funcionar.

Hay empresas que trabajan en procesadores especiales, pero diría que el jurado aún no sabe qué tan buenas son.

More Interesting

¿Está explorando diferentes algoritmos de aprendizaje automático y qué tipo de conjunto de datos funcionan mejor con un buen tema de Math HL IA?

¿Puede la IA ayudarnos a conocer mejor los agujeros negros, la energía oscura y la materia oscura? Si es así, ¿cómo?

¿Cuál de los temas entre Big Data, Machine Learning e Inteligencia Artificial tendrá un futuro prometedor?

¿Pueden las máquinas (o cualquier IA actual) producir ideas?

¿Cómo reemplaza una red neuronal un modelo acústico para aplicaciones de reconocimiento de voz?

¿Qué es la clasificación en el aprendizaje automático?

¿Hay alguna forma, método o plan para poder controlar una IA superinteligente?

¿Cómo impactará la inteligencia artificial en el mercado laboral y la economía estadounidense?

¿Cuál es la mejor manera de aprender Inteligencia Artificial para un principiante?

¿Cuáles son los algoritmos de aprendizaje automático relativamente simples pero efectivos para que el reconocimiento de imágenes se implemente desde cero para una tesis de licenciatura?

¿Es una buena idea tomar cursos de aprendizaje automático y aprendizaje profundo simultáneamente para alguien nuevo en el aprendizaje automático?

¿Quora intenta convertirse en un motor de conocimiento de inteligencia artificial como la próxima evolución de un motor de búsqueda?

¿Qué es el sesgo en la red neuronal artificial?

¿Cuál es la diferencia entre AI y Machine Learning Nanodegrees en Udacity?

¿Cómo se enseña la Inteligencia Artificial (IA) y el Aprendizaje automático (ML) en las universidades de 2/3 niveles en la India?