18 de jun de 2018

GPU: o processador que domina o mercado de inteligência artificial

Udacity Brasil

A sigla GPU, que em inglês significa “graphics processing unit”, ou unidade de processamento gráfico, normalmente é associada a games. Se você quiser montar um computador capaz de rodar os lançamentos mais recentes da indústria de jogos em altas resoluções e com boas taxas de quadro, vai precisar de uma GPU (ou “placa de vídeo”) potente.

Mas recentemente as GPUs vêm ganhando uma relevância no mercado que vai muito além desse setor. Com o crescimento das pesquisas e aplicações em inteligência artificial, esses componentes têm se mostrado bem mais eficientes na realização de tarefas que envolvam cálculos complexos do que os processadores tradicionais.

E com o incrível crescimento que a Bitcoin e as outras criptomoedas tiveram no final de 2017, as GPUs chegaram a outro mercado. Acontece que, para “minerar” criptomoedas, as placas de vídeo também são muito boas. E, nesse caso, trata-se de uma aplicação capaz de dar dinheiro ao dono da placa, o que gera ainda mais interesse nela.

E por que foram especificamente as placas de vídeo, e não as novas linhas de processadores da Intel ou da AMD, por exemplo, que tiveram protagonismo nesses setores? Segundo o gerente comercial da Nvidia na América Latina, Marcio Aguiar, isso se dá porque as GPUs inauguram “um novo modelo de computação” que é mais adequado a essas tarefas do que o modelo que costumamos usar.

Essa diversificação da clientela tem tido resultados impressionantes no mercado: só em 2018, as ações da Nvidia subiram 33%.

Em uma entrevista ao TechCrunch, Jen-Hsun Huang, CEO da Nvidia, resumiu a situação atual: a demanda do mercado é muito superior à quantidade de placas disponíveis. "Precisamos nos aproximar da demanda. E nesse exato momento não estamos nem perto – então vamos precisar continuar correndo."

Leia: O que é inteligência artificial? As perguntas mais frequentes

As vantagens das GPUs

De acordo com Aguiar, a grande diferença das GPUs para os processadores tradicionais é que as GPUs são melhores em processamento paralelo, enquanto os processadores são focados em processamento serial.

Isso significa que elas são melhores em realizar várias tarefas ao mesmo tempo, enquanto eles podem até realizar tarefas mais complexas, mas completam menos tarefas por vez. “Elas conseguem fazer mais coisas, no mesmo período de tempo, e consumindo menos energia, do que uma CPU”, diz Aguiar.

Além disso, segundo ele, as CPUs, ou unidades de processamento central, precisam ser capazes de realizar uma série de tarefas diferentes. São elas, afinal, as responsáveis pela grande maioria das tarefas que o seu computador realiza. Isso exige que sejam programadas de uma maneira um pouco mais “generalista”, que as capacite a todas essas tarefas, mas acaba não otimizando-as para nenhuma.

Embora haja outras empresas produzindo placas de vídeo, como a AMD, Aguiar considera que são empresas como a Intel que são as verdadeiras concorrentes da Nvidia. Isso porque a placa de vídeo, em muitas aplicações, acaba sendo uma plataforma de processamento mais adequada do que os processadores.

Segundo Raphael Campos, cientista de dados na Hekima e mestre em machine learning pela UFMG, as GPUs “são projetadas para computação paralela de uma mesma instrução sobre múltiplos dados” –uma arquitetura conhecida como SIMD, do inglês “single instruction, multiple data”. Raphael teve mais de três anos de experiência usando GPUs para problemas de astrofísica e bioinformática durante a graduação, e usou-as durante seu mestrado também.

Em outras palavras, elas conseguem realizar o mesmo conjunto de operações sobre uma grande quantidade de dados diferentes ao mesmo tempo. Isso porque elas possuem muito mais unidades de processamento: uma CPU muito avançada pode ter até 16 núcleos, mas uma placa de vídeo em geral tem milhares de núcleos (conhecidos como CUDA cores).

Leia: Machine Learning: entenda as oportunidades profissionais dessa área

Redes neurais profundas

De acordo com Raphael, isso as torna ideal para o processamento de uma determinada técnica de aprendizagem de máquina chamada de Deep Neural Network, ou redes neurais profundas. Essas redes “são estruturadas bem uniformemente, de modo que cada camada da rede contenha milhares de ‘neurônios artificiais’ que executam a mesma computação”. Ou seja, a mesma instrução para múltiplos dados.

“Treinar um modelo em aprendizagem de máquina é um processo muito empírico, que exige muitos ajustes e várias camadas de treino”, diz. “Agora imagine esperar meses para ter o resultado do treino e fazer outro ajuste”, complementa.

Esse prazo, para a maioria das aplicações, não é conveniente ou aceitável. “Você quer rodar o treino o mais rapidamente possível para que possa encontrar um modelo bom. A resposta para esse problema está nas GPUs”, conta.

Segundo Raphael, o treinamento de uma rede neural profunda em uma GPU “roda várias vezes mais rápido do que em uma CPU, reduzindo o esforço de treinamento de meses para semanas ou até mesmo dias”.

Como Aguiar complementa, trata-se de uma situação semelhante a renderizar um vídeo. Imagine deixar um vídeo renderizando a noite toda apenas para descobrir, no dia seguinte, que ele não estava do jeito que você queria. E então precisar esperar mais uma noite para que ele seja renderizado novamente. É esse tipo de espera improdutiva que as GPUs conseguem acelerar.

De fato, as placas de vídeo, como o próprio nome diz, têm uma arquitetura voltada para o aceleramento gráfico. E isso também as torna muito adequadas para o processamento de outra técnica de machine learning, chamada de redes neurais convolucionais, geralmente usadas em reconhecimento e classificação de imagens, por exemplo.

As limitações das GPUs

Há métodos de machine learning que não se beneficiam tanto de GPUs por conta de algumas limitações que esses componentes têm na comparação com outras unidades de processamento.

Uma delas é a frequência: um processador Core i9 7980 XE (um dos mais potentes da Intel) tem um clock máximo (ou frequência máxima de operação) de 4,2 GHz; a placa de vídeo Nvidia Titan V, que segundo a empresa é a “GPU mais potente já criada”, chega a no máximo 1,45 GHz. Por isso, segundo Raphael, “em tarefas sequenciais as GPUs não se saem tão bem”.

As placas de vídeo também controlam menos memória do que os processadores. Enquanto um processador consegue controlar até 1 TB de RAM, as placas de vídeo mais avançadas do mundo contém 32 GB de RAM.

Fora isso, a GPU precisa de um processador para transferir os dados para a sua própria memória. Isso é feito por meio de uma interface PCI-Express, que é muito mais lenta do que a maneira como a própria CPU se comunica com a memória. Dessa maneira, a interface PCI-Express acaba “gargalando” o desempenho das placas.

Operações de pontos flutuantes

No entanto, as GPUs ainda conseguem ser mais rápida nas operações com “números de ponto flutuante”, termo usado para se referir a números racionais não-inteiros, como 6,2 ou 1,5. Uma medida da velocidade dos componentes é a quantidade de operações com número de ponto flutuante que eles fazem por segundo. Essa medida é dada em FLOP/s (ou “flops”) sigla que, em inglês, significa “floating point operations per second”.

Pois bem. Um processador como o Intel Core i7 7700K – um dos mais potentes da sétima geração da Intel – tem uma capacidade de 45 Gigaflop/s: quarenta e cinco bilhões de operações desse tipo por segundo. Mas a mesma placa Titan V citada acima consegue fazer 110 teraflop/s, ou 110 trilhões de operações por segundo: são mais de 2000 vezes mais operações por segundo. Isso graças à arquitetura “paralela” das GPUs.

Segundo Aguiar, a Nvidia vem trabalhando em maneiras de superar algumas das limitações que o modelo de computação atual gera às GPUs. Uma delas é um novo tipo de memória, chamado de HBM (de “High Bandwidth Memory”), que se comunica de maneira ainda mais rapida com o restante do sistema, ajudando a superar o gargalo da interface PCI-Express.

Mas ele ressalta que, para que toda a potência das placas seja aproveitada, “as aplicações têm que ser otimizadas para a arquitetura da GPU”. Isso significa mudar seus código para que se beneficiem da estrutura de processamento paralelo das placas. Segundo Aguiar, uma mudança em 5% do código pode aumentar de maneira muito expressiva o desempenho.

A Nvidia tem alguns recursos que ajudam nesse sentido. Eles estão disponíveis no site developer.nvidia.com, uma página dedicada a ajudar desenvolvedores a extrair o máximo de desempenho dos componentes. Por lá, há informações sobre as placas e os drivers da empresa, e até mesmo alguns cursos interativos para programadores.

A Udacity também oferece cursos gratuitos sobre o assunto. O curso High Performance Computing, em parceria com a Georgia Tech, ensina fundamentos para desenvolver, analisar e implementar algoritmos paralelos e traz exercícios práticos com GPUs.

O futuro além das GPUs

Mesmo com a incrível capacidade das GPUs, usá-las para tarefas de aprendizagem de máquina e mineração de criptomoedas ainda é, muitas vezes, dar a elas um uso que não aquele para o qual não foram projetadas inicialmente.

Com relação ao caso das criptomoedas, Aguiar considera que a competências das GPUs para essa tarefa foi um “bom problema”. Embora ela tenha demonstrado a capacidade de cálculo dos componentes, ela também acabou elevando o preço das placas de vídeo no mercado, o que, no final das contas, prejudicou alguns gamers e pesquisadores que seguem sendoo público-alvo da empresa.

Por isso, outras empresas estão investindo na pesquisa de componentes de hardware que seriam ainda mais adequados do que as GPUs para tarefas de aprendizagem de máquina. E não são empresas de fundo de quintal que estão apostando nessa ideia.

Uma delas é o Google. Desde 2016, a empresa vem empregando em seus sistemas de aprendizagem de máquina um componente chamado TPU, ou “tensor processing unit” na sigla em inglês. Clientes do serviço de computação na nuvem da empresa podem usar esses componentes para acelerar seus softwares de machine learning.

A empresa chinesa Alibaba – que é uma espécie de “Google da China” – também está realizando pesquisa nesse setor. A solução da empresa será uma NPU, ou “Neural Processing Unit”, supostamente capaz de entregar mais de dez vezes a performance de uma GPU para tarefas de aprendizagem de máquina, consumindo apenas metade da energia, e com um custo-benefício 40% melhor.

Mesmo empresas que não têm uma pesquisa direta nesse sentido vem realizando parcerias para fortalecer seus produtos nesse mercado. É o caso da IBM, que incorporou GPUs aos seus servidores de computação na nuvem para atrair clientes interessados em soluções de machine learning à sua plataforma.

Dessa forma, por mais que outros componentes possam oferecer melhor desempenho que GPUs para algumas tarefas, as placas de vídeo ainda devem manter sua relevância no mercado de inteligência artificial .

E mesmo que elas venham a ser suplantadas, haverá uma legião de pessoas positivamente surpresa: desenvolvedores e gamers. A enorme demanda atual "é um bom problema para se ter", disse o CEO. "Mas eu ainda queria poder colocar mais GPUs nas mãos de jogadores que querem jogar PUBG."

Leia também:

Udacity Brasil