¿Cómo funciona el uso de ASIC para la aceleración de la IA?

9

Podemos leer en la página de Wikipedia que Google creó un chip ASIC personalizado para aprendizaje automático y diseñado para TensorFlow que ayuda a acelerar la IA.

Dado que los chips ASIC están especialmente personalizados para un uso particular sin la capacidad de cambiar su circuito, debe haber algún algoritmo fijo que se invoque.

Entonces, ¿cómo funciona exactamente la aceleración de la IA utilizando chips ASIC si su algoritmo no se puede cambiar? ¿Qué parte de ella está acelerando exactamente?

kenorb
fuente
1
Sin corriente IA técnica que yo sepa requiere la modificación del algoritmo , aunque la mayoría son dependientes de la capacidad de modificar los datos (las fuerzas de conexión, miembros de la población), etc
NietzscheanAI
Entonces, ¿la única parte dinámica como el estado de la red se mantiene en alguna memoria flash o unidad?
kenorb
Según en.wikipedia.org/wiki/Application-specific_integrated_circuit , los ASIC modernos pueden tener RAM ...
NietzscheanAI

Respuestas:

4

Operaciones de tensor

El trabajo principal en la mayoría de las aplicaciones de ML es simplemente un conjunto de operaciones de tensor (muy grandes), por ejemplo, la multiplicación de matrices. Usted puede hacer que fácilmente en un ASIC, y todos los otros algoritmos solo puede funcionar por encima de eso.

Pedro es
fuente
1
Un punto importante es que el TPU utiliza la multiplicación de 8 bits, que puede implementarse de manera mucho más eficiente que la multiplicación más amplia que ofrece la CPU. Una precisión tan baja es suficiente y permite empaquetar muchos miles de tales multiplicadores en un solo chip.
maaartinus
3

Creo que el algoritmo ha cambiado mínimamente, pero el hardware necesario se ha recortado hasta el hueso.

El número de transiciones de compuerta se reduce (tal vez operaciones flotantes y precisión también), al igual que el número de operaciones de movimiento de datos, lo que ahorra energía y tiempo de ejecución. Google sugiere que su TPU logre un ahorro de costos 10 veces mayor para realizar el mismo trabajo.

https://cloudplatform.googleblog.com/2016/05/Google-supercharges-machine-learning-tasks-with-custom-chip.html

Cachondo
fuente
1

ASIC: significa IC específico de la aplicación. Básicamente escribes programas para diseñar un chip en HDL . Tomaré casos de cómo funcionan las computadoras modernas para explicar mi punto:

  • CPU : las CPU son básicamente un microprocesador con muchos IC auxiliares que realizan tareas específicas. En un microprocesador, solo hay una única unidad de Procesamiento Aritmético (término compuesto) llamada Acumulador en la que debe almacenarse un valor, ya que los cálculos se realizan solo y solo los valores almacenados en el acumulador. Por lo tanto, cada instrucción, cada operación, cada operación R / W debe realizarse a través del acumulador (es por eso que las computadoras más antiguas solían congelarse cuando escribía desde un archivo a algún dispositivo, aunque hoy en día el proceso ha sido refinado y puede no requerir acumulador para interponerse específicamente en DMA) Ahora, en los algoritmos de ML, debe realizar multiplicaciones de matrices que se puedan paralelizar fácilmente, pero tenemos una sola unidad de procesamiento y también llegaron las GPU.
  • GPU : las GPU tienen 100 unidades de procesamiento, pero carecen de las funciones multipropósito de una CPU. Por lo tanto, son buenos para cálculos paralelizables. Dado que no hay superposición de memoria (la misma parte de la memoria está siendo manipulada por 2 procesos) en la multiplicación de matriz, las GPU funcionarán muy bien. Aunque como la GPU no es multifuncional, funcionará tan rápido como una CPU alimente datos en su memoria.
  • ASIC : ASIC puede ser cualquier cosa que sea una GPU, CPU o un procesador de su diseño, con cualquier cantidad de memoria que desee darle. Digamos que quiere diseñar su propio procesador ML especializado, diseñe un procesador en ASIC. ¿Quieres un número FP de 256 bits? Crear procesador de 256 bits. ¿Quieres que tu resumen sea rápido? ¿Implementar sumador paralelo hasta un mayor número de bits que los procesadores convencionales? Usted quieren¿numero de nucleos? No hay problema. ¿Desea definir el flujo de datos desde diferentes unidades de procesamiento a diferentes lugares? Puedes hacerlo. Además, con una planificación cuidadosa, puede obtener una compensación entre el área ASIC y la potencia y la velocidad. El único problema es que para todo esto necesita crear sus propios estándares. En general, se siguen algunos estándares bien definidos en el diseño de procesadores, como el número de pines y su funcionalidad, el estándar IEEE 754 para la representación de punto flotante, etc. que se han presentado después de muchas pruebas y errores. Entonces, si puede superar todo esto, puede crear fácilmente su propio ASIC.

No sé qué están haciendo google con sus TPU, pero aparentemente diseñaron algún tipo de estándar Integer y FP para sus núcleos de 8 bits, dependiendo de los requisitos disponibles. Probablemente lo estén implementando en ASIC por consideraciones de potencia, área y velocidad.

DuttaA
fuente
0

La baja precisión permite el cálculo de alto paralelismo en las capas Convo y FC. Arquitectura fija de CPU y GPU, pero ASIC / FPGA puede diseñarse en función de la arquitectura de red neuronal

Mahi
fuente