Que arquitetura as CPUs para IA, como núcleos tensores ou NPUs usam?

Processadores ou CPUs dedicados para inteligência artificial ou AI têm feito uma diferença nos últimos anos, embora com nomes diferentes. Nós os vimos aparecer na forma de Unidade de Processamento de Tensor do Google ou TPU, os Núcleos de Tensor de NVIDIA GPUs, ou as diferentes unidades de processador neural ou NPUs de várias marcas. Mas todos eles têm um ponto em comum: são arranjos sistólicos. Neste artigo iremos explicar como esses processadores muito específicos trabalha .

Com a chegada da inteligência artificial, nos últimos anos vimos quão diferente CPU fabricantes e designers nos falaram sobre diferentes tipos de unidades para realizar esta função. O que aconteceria se disséssemos que todos esses nomes são realmente nomenclaturas comerciais diferentes para o mesmo tipo de unidade?

O que a arquitetura faz CPUs para IA

A CPU básica para IA: o array sistólico

Arrays sistólicos são a base para entender como as CPUs funcionam para IA; Eles consistem em uma cadeia ou matriz de elementos de processamento, e cada um deles está diretamente conectado a outros elementos de processamento por meio de uma interface que os comunica de maneira ordenada entre si.

O primeiro elemento da cadeia é aquele que recebe os primeiros dados e, portanto, tem contato com a interface de E / S; a referida interface pode ser uma memória, outro processador do qual a matriz sistólica é um coprocessador ou outra matriz sistólica. No outro extremo, o último elemento na matriz será aquele que se comunica com o elemento ao qual a matriz sistólica está conectada e grava de volta o resultado de toda a operação conjunta.

IA Array Sistólico

Ao contrário dos processadores não sistólicos, onde os dados não são transmitidos entre os diferentes elementos, mas sempre passam pelos registradores, em um sistema sistólico os dados são transmitidos diretamente de um elemento de processamento ou célula para os elementos de processamento ou células mais próximas.

A vantagem de todos os sistemas sistólicos é que a comunicação entre os elementos de processamento é mais rápida do que o elemento de processamento de comunicação → registro → elemento de processamento → registro, etc.

São chamados de sistólicos devido ao fato de que cada elemento interconectado realiza sua operação correspondente em um ciclo de clock e “bombeia” o resultado para células vizinhas ou elementos de processamento.

Matrizes Sistólicas e Tensores

Da mesma forma, também podemos conectar os elementos de processamento de forma matricial e ter uma matriz sistólica, cujo diagrama é o que você vê abaixo:

IA Matriz Sistólica

Podemos até ter uma configuração tridimensional que chamamos de Tensor.

Processador de tensor IA

A operação em todos eles é a mesma, a diferença é que em sistemas matriciais e tensores podemos mover os dados não apenas horizontalmente, mas também verticalmente e até mesmo diagonalmente para realizar diferentes tipos de operações em paralelo.

De onde vem o nome Tensor?

Núcleo Tensorial

Matrizes tridimensionais regulares são chamadas de tensor, embora sejam usadas em todos os tipos de processadores de tensores, sejam eles do tipo matriz ou tensor.

Elemento de processamento (PE)

Os elementos de processamento geralmente são ALUs com a capacidade de fazer adição e multiplicação em paralelo e simultaneamente, mas podemos usar outros elementos como elementos de processamento, até núcleos completos e até mesmo colocar um processador sistólico dentro de outro.

Utilidade dos sistemas sistólicos

Embora tenham se tornado famosos pelo uso desse tipo de processadores para acelerar algoritmos de inteligência artificial, eles têm outros usos, como:

  • Filtros de imagem (interpolação).
  • Procure por padrões.
  • Correlação.
  • Avaliação polinomial.
  • Transformações de Fourier.
  • Multiplicação da matriz.
  • etc.

Por exemplo, as unidades de textura das GPUs, embora sejam unidades de função fixas, são realmente configuradas como uma matriz sistólica, sim, não são programáveis, pois sua funcionalidade é micro-conectada, mas é para que você possa ver que sua utilidade não se trata apenas de IA.

Quanto à IA, sua implementação se deve ao fato de que a multiplicação da matriz é muito lenta, mesmo nas unidades SIMD utilizadas nas GPUs ou nas próprias CPUs (AVX, SSE ...), portanto, um tipo especial de unidade é necessário para realizar essa operação como o mais rápido possível e, portanto, a adoção de matrizes sistólicas nas diferentes CPUs para acelerar a IA.