As placas de vídeo (GPUs – graphics processing units) foram criadas para processar vídeos complexos como aqueles com elementos tridimensionais, um trabalho que se mostrou grande demais para os processadores tradicionais. Os vídeos têm como característica que cada ponto da imagem é relativamente independente dos demais, o que permite que eles possam ser renderizados por computação em paralelo, e é exatamente este o diferencial das GPUs, que agem como uma série de processadores especializados funcionando ao mesmo tempo. Matematicamente, as operações necessárias podem ser descritas como uma série de multiplicações matriciais. Foi este aspecto que tornou as GPUs também excelentes alternativas para o processamento computacional de redes neurais artificiais, que dependem das mesmas estruturas e operações matemáticas. A capacidade de paralelização das GPUs faz com que o tempo de treinamento das redes neurais diminua substancialmente. A diferença é tão impactante que as maiores fabricantes de GPUs no mercado, como NVidia e AMD, cujo foco era a indústria gráfica, agora também dedicam seu trabalho fornecendo computação em GPUs na nuvem e desenvolvendo aplicações na área de inteligência artificial.
Apesar de este uso “acidental” das GPUs ter servido a um propósito com alto valor prático, ele também traz junto algumas limitações. Já que foram desenvolvidas com um objetivo específico em mente, os engenheiros na época não se preocuparam com outras potenciais aplicações. Como resultado, as GPUs consomem bastante energia, o que implica na produção de calor e necessidade de refrigeração. Elas também têm um tempo de vida máximo na faixa dos 5 anos. Se para o processamento gráfico isto não é um problema, já que estas operações são realizadas geralmente em computadores pessoais que, por sua vez, são trocados com uma certa frequência, aplicações mais amplas encontram aí alguns obstáculos. Algumas soluções em inteligência artificial, por exemplo, exigem que os processadores sejam expostos a fatores ambientais, tornando o controle da temperatura mais complicado. Outras tantas exigem maior durabilidade, como veículos autônomos que, além de terem um ciclo de vida muito maior, fariam uso de várias GPUs. Nestes casos, este tipo de processador pode ser inviável.
É por isso que algumas empresas de hardware têm trabalhado em novos tipos de processadores, como os FPGAs (field programmable gate arrays, ou arrays do tipo portão programáveis por campo). Os FGPAs são processadores que podem ser customizados após sua produção, tornando-os mais versáteis do que processadores genéricos. Esta parte customizável se deve à presença de componentes adaptáveis, que podem ser ajustados por programação. Desta forma, um FGPA pode ser programado especificamente para uma estrutura desejada como uma rede convolucional ou recorrente. Isto confere a estes processadores um funcionamento otimizado, reduzindo o consumo energético e entregando alta performance. Além disso, os FGPAs foram desenvolvidos para terem um ciclo de vida até 5 vezes mais longo que o de GPUs, e para serem mais resilientes frente a condições ambientais.
Uma desvantagem dos FGPAs é que eles são difíceis de programar, exigindo pessoal especializado em linguagens descritoras de hardware. Traduzir as principais bibliotecas de machine learning para estas linguagem de baixíssimo nível requer tempo e esforço considerável. Pode levar anos até que um código rodando em FGPAs esteja adaptado para ter valor prático. Mas algumas soluções já têm aparecido, como é o caso do Zebra, uma plataforma que permite aos desenvolvedores transferir seu código para computação em FGPAs sem qualquer conhecimento técnico. Alguns fabricantes de FGPAs, como a Xilinx, já têm integrado o Zebra em suas placas.
FGPAs não são o único processador especializado em redes neurais presente no mercado. Algumas big techs estão desenvolvendo suas próprias alternativas, como é o caso das TPUs do Google. Mas estes processadores programáveis já encontram enorme respaldo, sendo utilizados por empresas como a Microsoft em alguns de seus produtos disponíveis no serviço de nuvem Azure.
Esta é uma época interessante para ser um entusiasta de inteligência artificial, já que está havendo uma convergência entre o amadurecimento de software e de hardware necessário para a evolução exponencial da área.