Se existe um tipo de unidade de processamento que entendo muito bem, estas são as CPUs (Central Processing Unit), em vista do seu grande impacto na performance de todo sistema computacional e a sua ampla utilização. Já em relação as GPUs (Graphics Processing Unit), elas deixaram de ser o foco das minhas atenções há muito tempo (quando optei pelos consoles como plataforma de jogos) e somente nestes últimos tempos passou a receber uma atenção especial, em vista da sua utilização em diferentes aplicações (além de jogos). Por fim, confesso que não entendo (quase) nada sobre as NPUs (Neural Processing Unit)…
“A neural processing unit (NPU is a special kind of processor that handles tasks related to artificial intelligence (AI) and machine learning. In devices like smartphones and laptops, an NPU makes processor-intensive tasks such as image processing, real-time video filters, voice recognition, augmented reality, and object recognition much more efficient. You can find NPUs on some of the most popular handheld devices today. For example, Apple’s latest iPhones and M-Series laptops all come integrated with their own NPU called ANE (Apple Neural Engine). Google uses a proprietary NPU called TPU (Tensor Processing Unit) on its Pixel devices and Coral prototyping kits, and Qualcomm is integrating its ARM NPUs into their latest SoCs for smartphones and laptops.”
— by Make Use Of.
Por isto, a publicação de Jayric Maning (editor do portal Make Use Of) se tornou um material particularmente interessante para mim (e acredito que não deverá ser diferente para vocês), pois além de prover uma boa compreensão sobre a natureza destas unidades de processamento, ela também traz informações gerais sobre a sua aplicação e uso, com ênfase nos serviços que fazem o uso de Inteligência Artificial. Graças as NPUs, podemos executar em nossas máquinas (localmente, via hardware) as instruções que fazem o uso de recursos baseados em IA, destacando-se as soluções providas pela Apple (ANE – Apple Neural Engine), Google (TPU – Tensor Processing Unit) e Qualcomm (Snapdragon).
Tal como as CPUs e GPUs, as NPUs possuem as seguintes especificações:
- TOPS (Tera Operations Per Second): mensura a quantidade de operações por segundo, que as NPUs conseguem realizar (medida em trilhões);
- Eficiência energética: medida em TOPS por watt, esta especificação informa a eficiência do NPU em termos de consumo de energia.
- Precisão: NPUs podem lidar com diferentes níveis de precisão, como operações de 8, 16 e 32 bits e apesar da precisão mais baixa poder acelerar os cálculos e economizar energia, ela pode reduzir a precisão.
- Largura de banda de memória: mede a quantidade de dados que o NPU pode ler ou gravar por segundo, o que pode afetar na velocidade de processamento.
- Estruturas suportadas: NPUs devem oferecer suporte a estruturas de IA populares como TensorFlow, PyTorch e Caffe, garantindo que os desenvolvedores possam implantar facilmente seus modelos de IA.
O impacto que estas unidades de processamento trazem para os sistemas em que elas equipam, são enormes e trazem muitas melhorias em diversos aspectos. Além da maior performance para as aplicações que fazem o uso de IA (óbvio), elas também possuem uma grande influência no baixo consumo de energia (em vista da sua otimização de hardware), o que acaba promovendo uma vida útil maior. E até mesmo as demais unidades de processamento (CPUs e GPUs) irão trabalhar melhor, já que estarão livres para executar outras instruções. Por fim, com a tendência das aplicações e serviços utilizarem cada vez mais a IA, a disponibilidade de uma NPU também irá garantir uma maior longevidade do equipamento como um todo!
E aos poucos, a Skynet vai tomando forma… &;-D