13 pontos por xguru 2021-10-02 | 1 comentários | Compartilhar no WhatsApp
<p>Se fosse para escolher as empresas de TI com maior valorização das ações no mundo nos últimos 10 anos, Apple e Nvidia certamente estariam entre elas. A Apple vem dominando o mercado de smartphones premium há mais de uma década desde o surgimento do iPhone, enquanto a Nvidia tem visto suas ações dispararem com o crescimento explosivo do mercado de GPUs de alto desempenho para jogos e, desde meados dos anos 2010, também de aceleradores para deep learning e mineração de criptomoedas. <br /> <br /> A Nvidia foi a empresa que apresentou ao mundo, em 1999, a primeira GPU no verdadeiro sentido do termo (com a marca GeForce). Claro que, do fim dos anos 1990 até o fim dos anos 2000, o foco principal da Nvidia era o mercado de GPUs de alto desempenho para jogos. Mas, como se tivesse previsto a chegada da era da IA, a Nvidia apresentou em 2007 o GUGPU (or GPGPU) ao mundo. O mercado que a Nvidia buscava criar não era apenas o de placas gráficas de alto desempenho para jogos, mas sim o de aceleradores de propósito geral (general purpose). Para impulsionar esse mercado, a estratégia da empresa foi lançar junto o CUDA, um SDK que permitia a desenvolvedores de projeto de chips no mundo inteiro usar seu GUGPU, e isso deu muito certo. Somado a isso, com o openCL avançando em paralelo, as GPUs realmente entraram na era do GUGPU, e a Nvidia começou aos poucos a sair do mercado de placas de vídeo para jogos e a entrar de vez no mercado de aceleradores.<br /> <br /> Como é bem conhecido, a maior diferença entre CPU e GPU é serial vs parallel. Em uma GPU, integra-se um número muito maior de cores do que em uma CPU. E operações como multiplicação e soma, que se deseja processar em paralelo, são distribuídas entre esses cores e executadas “num instante”. Já a CPU, por causa de sua arquitetura, é obrigada a receber os dados em serial e produzir o resultado dessa forma, então naturalmente sua velocidade de cálculo é incomparavelmente mais lenta do que o processamento paralelo da GPU. Mas há algo que não se deve entender errado aqui. Pode surgir a dúvida: “Então por que pagar caro por uma CPU? Não daria para fazer tudo só com GPU?” Na verdade, isso pode ser comparado ao trabalho de um artesão. Se compararmos a CPU a um mestre artesão que passa um mês inteiro esculpindo, pintando e refinando a madeira sozinho, a GPU seria como esse artesão distribuindo tarefas para 10 aprendizes e produzindo 10 esculturas em um mês. É, de certa forma, a diferença entre artesanato doméstico e divisão do trabalho. Vamos a uma comparação um pouco mais precisa. Na verdade, a razão de a GPU ter ganhado destaque por seu desempenho em computação paralela desde meados e o fim dos anos 2000 foi o projeto do chip, que permite que cada core distribuído na GPU execute cálculos semelhantes ao mesmo tempo e depois reúna tudo de uma vez para saída. Por exemplo, pense na operação de multiplicar a matriz B = [5*5] pela matriz C = [5*1]. Para fazer isso em uma CPU, seria preciso <br /> <br /> for ii=1:número de linhas<br /> for jj=1:número de colunas<br /> A = B(ii,jj)*C(jj);<br /> A(ii) = A(ii) + A;<br /> end<br /> end<br /> <br /> rodar dois `for loop`. Já para fazer essa operação em uma GPU, basta distribuir para os cores da GPU os índices de cada elemento da matriz B e de cada elemento da matriz C. Por exemplo, a multiplicação da matriz B*C exige 5*5 = 25 operações de multiplicação dos elementos correspondentes, e os elementos B(i,j) e C(k) podem ser previamente atribuídos, dentro da GPU, ao core de número [número de linhas*(i-1) + j]. Então, cada core executa apenas a operação de multiplicação que recebeu, e depois basta reunir os resultados na memória e fazer adicionalmente a operação de soma. Em outras palavras, se a ordem de como distribuir e como reunir for bem definida de antemão, a GPU será muito mais rápida em operações repetitivas simples de multiplicação/soma. Em comparação com a GPU, a CPU quase não consegue fazer esse tipo de computação paralela, mas pode trabalhar com mais casas de ponto flutuante. Ou seja, ela consegue fazer cálculos precisos melhor do que os cores individuais da GPU, e por isso cálculos de ALU que exigem precisão são naturalmente muito melhor executados pela CPU do que pela GPU. Porém, a maioria dos cálculos repetitivos não exige precisão tão alta, então a computação paralela da GPU é muito mais vantajosa.<br /> <br /> Por que, então, os GPGPUs, otimizados para paralelização, passaram a ser ainda mais valorizados a partir de meados dos anos 2010, quando a era da IA, especialmente do deep learning, entrou para valer? Fica fácil entender isso quando se sabe como o deep learning funciona. Uma das operações básicas ensinadas no início do aprendizado de deep learning é justamente a convolução (convolution). A convolução é uma operação matricial em que um kernel, que também é uma matriz, é aplicado em diferentes posições sobre os dados de entrada em forma de matriz. Mas, olhando bem, isso nada mais é do que a repetição de operações de multiplicar e somar os elementos das matrizes. Claro, o resultado da matriz de entrada muda dependendo do kernel utilizado. Por exemplo, como também se vê em aulas de processamento de imagem, ao usar um kernel laplaciano, surge a capacidade de distinguir bordas da imagem, gradientes de borda ou padrões. Seja qual for o tipo de kernel, no processo de passar por essa convolução, no fim das contas repetem-se multiplicações e somas simples, então é natural que o GUGPU, cuja arquitetura já era especializada exatamente nisso, ficasse em posição muito mais vantajosa. Além disso, se pensarmos em como o treinamento e a inferência acontecem no deep learning, também dá para entender por que deep learning baseado em CPU é quase impossível desde o início. Como já foi dito, a GPU não exige nem foi projetada para o mesmo nível de precisão de uma CPU. O processo de aprender com training data em deep learning é parecido com uma pessoa vendada tentando encontrar o caminho usando apenas mãos e pés. Se tiver sorte, pode tocar em algum objeto que sirva de referência; se não tiver sorte, pode pisar em uma armadilha. Ou seja, em cada tentativa inevitavelmente haverá erro, e a exatidão ou a precisão desse erro não é tão importante para começar. Na verdade, se a preocupação ficar apenas na precisão desse erro, a velocidade de aprendizado vai cair. Basta comparar: quem encontra o caminho mais rápido, alguém que faz 100 tentativas de trial-and-error por segundo ou alguém que faz apenas 1 tentativa bem cuidadosa e bem-sucedida por segundo? A resposta é clara. Esse modo de aprendizado do deep learning combinou perfeitamente com a arquitetura para a qual a GPU foi projetada e, por isso, a GPU passou a ser vista não mais como hardware para jogos de alto desempenho, mas como uma máquina aceleradora para deep learning.<br /> <br />

Há um ponto que não se pode ignorar aqui: a GUGPU continua otimizada também para melhorar o desempenho em jogos. Se pensarmos que, desde o início, a GPU foi especializada em desempenho voltado ao processamento de matrizes, isso é algo natural. Nos jogos anteriores ao começo dos anos 1990, na verdade quase não existia o conceito de imagem 3D e, mesmo quando existia, em geral mostrava-se continuamente apenas uma projeção 2D em uma direção específica. Na prática, não seria exagero dizer que era algo exclusivamente 2D. Em operações de álgebra linear envolvendo matrizes, matrizes bidimensionais são, na verdade, cálculos relativamente simples. O problema são as operações com matrizes tridimensionais. O mundo em que vivemos é tridimensional, e todos os fenômenos físicos que vemos, ouvimos e sentimos acontecem em um espaço 3D + 1 dimensão temporal. A cada segundo, os eventos no espaço tridimensional mudam a todo instante, e nossos olhos precisam mapear essas informações à força para duas dimensões para poder percebê-las. É justamente por isso que o cérebro humano usa uma quantidade enorme de recursos para processar informação visual. O mesmo raciocínio pode ser aplicado ao processamento computacional. Pensemos no trabalho de exibir, em um espaço bidimensional que possamos reconhecer — isto é, em um monitor — a imagem de algum objeto tridimensional. Por exemplo, é preciso mostrar em um monitor 2D a imagem de um boneco composto por polígonos 3D visto de um determinado ângulo. Para isso, são necessárias operações de transformação de matrizes (matrix transformation). É preciso fazer operações como rotação, stretching e tratamento de ponto de fuga. Se quisermos ir além, também é preciso fazer ray tracing. Ou seja, é preciso considerar também efeitos de luz e sombra, e esse cálculo exige ainda mais processamento. Isso porque operações de óptica geométrica precisam ser aplicadas, junto com tudo o mais, a cada ponto de cada polígono. E esses cálculos monstruosos não precisam ser feitos apenas uma vez por segundo, mas pelo menos entre 30 e 60 vezes por segundo para que o olho humano perceba que esse fenômeno está acontecendo de forma natural em tempo real. Para engenheiros da computação, isso deve ter sido uma tarefa digna de pesadelo. Se no começo dos anos 1990 esse trabalho fosse feito por uma CPU, provavelmente seria possível exibir no máximo uma cena por minuto. Para gamers impacientes, isso significaria um lag insuportável. Mas a GPU consegue processar essas operações repetitivas em paralelo com base em matrizes, de modo que a CPU já não precisa carregar sozinha esse fardo. A maior parte das várias operações de transformação de matrizes e das operações de óptica geométrica do ray tracing fica a cargo da GPU, e a CPU passa a cuidar apenas do processamento posterior. Em outras palavras, do ponto de vista do gamer, isso passa a ser sentido como se esse processamento tivesse sido “acelerado”. Foi daí que surgiu também o nome acelerador.<br /> <br /> Se os dados puderem ser representados com base em matrizes, seja uma imagem 3D de alta resolução para jogos, dados médicos 3D em voxel ou dados tensorais com múltiplas features para treinamento de deep learning, não seria exagero dizer que a era de ouro da GUGPU está de fato chegando ao seu pico. Mas o problema é que a vantagem da GUGPU também é, ao mesmo tempo, sua desvantagem. Para melhorar a velocidade do processamento paralelo, é preciso aumentar ainda mais o número de núcleos ou tornar mais rápida a velocidade de I/O de informação entre os núcleos. Para isso, pode-se integrar a memória a cada núcleo ou ampliar ainda mais a bandwidth. No entanto, há um custo que não muda: o consumo de energia aumenta na mesma proporção. Além da energia consumida pelos próprios núcleos, também cresce o gasto de energia com refrigeração para dissipar o calor gerado pela energia consumida neles. Além disso, o processo repetido de aquecimento e resfriamento também afeta a vida útil do chip. Como a GPU também é um chip semicondutor baseado em silício, no fim das contas o uso concentrado de energia e o processamento acabam encurtando a vida útil dos materiais e dispositivos que compõem os núcleos. Isso porque podem ocorrer failure mecânica, thermal failure e electrical failure. Não é por acaso que circulam relatos de que a vida útil de GUGPUs usadas em fazendas de mineração de blockchain operadas quase em escala fabril não chega nem a 6 meses, e mesmo GPUs high performance usadas em lan houses comuns costumam ter vida útil de cerca de 2 anos, ou no máximo 3 a 4 anos. É claro que esse problema acaba obscurecido pelo surgimento da próxima geração de GPUs antes que a vida útil se esgote, mas a desvantagem inevitável é que sua durabilidade tende a ser menor que a da CPU.<br /> <br /> Ainda assim, a era da IA está apenas começando a crescer e florescer, e não há como lidar com essa enorme quantidade de cálculos sem usar aceleradores como a GPU. Mas depender apenas de GPUs também é problemático, porque a quantidade de energia consumida por elas para treinamento está aumentando num ritmo explosivo. Naturalmente, era preciso uma alternativa, e uma das soluções que surgiram entre o fim da década de 2010 e a entrada nos anos 2020 foi FPGA e NPU. Em 2019, a AMD, que junto com a Intel formava a dupla dominante entre os fabricantes de CPU, adquiriu de forma surpreendente a Xilinx, líder mundial em FPGA. A visão do setor foi de que o inevitável finalmente havia chegado, e com razão: sua concorrente Intel já havia adquirido em 2015 a Altera, então número 2 do mercado de FPGA, por US$ 16,7 bilhões. Por que gigantes tradicionais da fabricação de CPUs passaram a disputar a aquisição de FGPAs, tão diferentes de CPUs? FPGA é, literalmente, um chip de processamento que o usuário pode reprogramar conforme a finalidade do momento. Dizer que o usuário pode reprogramá-lo significa que o chip mantém apenas as funções mínimas necessárias para operar, enquanto o arranjo e o projeto das demais unidades podem ser alterados pelo usuário. Naturalmente, isso faz com que, em comparação com chips semicondutores produzidos em processos padronizados, como CPUs ou DRAM, o custo seja inevitavelmente mais alto. Afinal, é preciso deixar maior degree of freedom. Antes da era do deep learning, por esse motivo, chips baseados em FPGA eram usados principalmente para finalidades especiais — como usinas nucleares ou sondas de exploração espacial — e quase nunca para uso geral.<br /> <br /> Mas, com a era do deep learning entrando de vez em cena, o mercado que parecia prestes a ser dominado indefinidamente pelas GPUs começou a se diversificar aos poucos. E essa tendência não foi necessariamente boa para as GPUs. Por exemplo, se o deep learning fosse apenas um conjunto de operações que repetem cálculos de convolução, isso não seria um problema. Mas, à medida que os campos que querem aplicar deep learning se ampliaram, a escala e as características dos dados que os motores de deep learning precisam aprender também se tornaram muito mais diversas. Se o uso se limitasse a reconhecer números em imagens ou distinguir cães de gatos, o campo de aplicação seria restrito; mas começou a surgir um mercado com usos e especificações muito variados, como processar linguagem natural, detectar erros em dados complexos de processos químicos com mais de 1.000 features, projetar redes de sensores IoT, inferir e simular fluxos complexos de fluidos dentro de meios porosos que a CFD não consegue cobrir, ou criar em tempo real motores de direção autônoma. Para quem quer aplicar deep learning na indústria, essa diversificação do mercado é algo bem-vindo; mas para quem tentava cobrir tudo isso com GPUs de uso geral, isso passou a ser motivo de preocupação. Isso porque, em cada aplicação, o peso relativo de classificação, inferência, previsão ou detecção é diferente, e ficou mais difícil continuar levando adiante uma estrutura de processamento uniformemente otimizada para algoritmos de redes neurais. No início da ascensão do deep learning, como o hardware disponível era praticamente só a GUGPU, os desenvolvedores de algoritmos de deep learning não tinham escolha senão construir seus algoritmos com base nas especificações dessa GUGPU. No entanto, à medida que os tipos e o volume de dados tratados pelo deep learning aumentaram exponencialmente, passou a acontecer com mais frequência o contrário: os algoritmos de deep learning começaram a influenciar o projeto da arquitetura das GPUs. Fixar a precisão de cada núcleo individual da GPU em FP16, por exemplo, ou projetar núcleos com tolerância à variação de precisão (multi-precisão), são casos desse tipo. Ainda assim, os limites desse projeto de GPU orientado por deep learning também são claros. Afinal, uma GPU, depois de fabricada, praticamente não pode ter sua estrutura alterada, e não há espaço para reprogramming. Dá para fazer a barba com um machado, se for preciso, mas é natural sentir falta de uma navalha bem afiada e já acostumada à mão.<br /> <br />

Em contraste, o mercado vem aceitando cada vez mais que os FPGAs podem ser mais adequados para esse objetivo. Como mencionado antes, o FPGA é entregue ao cliente antes mesmo de o projeto lógico estar totalmente concluído. Em vez disso, é fornecido sobre ele um tipo de SDK que permite aos clientes programá-lo de acordo com seus próprios objetivos. Em outras palavras, os clientes podem criar, por exemplo, um chip de deep learning dedicado à simulação de dinâmica dos fluidos. E mesmo que haja erros de projeto no início e ele não funcione corretamente, como o reprogramming é possível, é viável corrigir à vontade, reduzindo assim as perdas de custo no processo inicial de testes. Talvez não se compare ao desempenho de processamento paralelo em nível de hardware obtido nas GPUs, mas o FPGA também consegue fazer processamento paralelo, e isso também decorre de suas características. No FPGA, é possível implementar processamento paralelo em nível de software, permitindo projetar algoritmos em que um único core recebe múltiplas instruções (multiple instruction) e produz múltiplos outputs. Esse método é chamado de Multiple Instruction Multiple Data (MIMD). Já nos cores individuais da GPU, o fluxo de dados é estruturado desde o início como Single Instruction Multiple Data (SIMD), para atender às condições ideais de paralelismo por meio de tarefas repetitivas. Se o conjunto de instruções estiver bem construído e o formato dos dados estiver bem organizado, a GPU pode oferecer um processamento paralelo em nível de hardware quase divino. Mas, se o formato dos dados mudar ou surgir uma operação difícil de cobrir com o conjunto de instruções disponível, ela inevitavelmente começa a engasgar. Em contrapartida, embora o FPGA tenha dificuldade com paralelismo em nível de hardware, sua maior vantagem é ser flexible. Mesmo que a largura (width) dos dados mude, não é preciso ficar preso a um conjunto de instruções previamente defined, então está tudo bem porque é possível usar multiple instruction set. Essa característica de ser flexible significa que, na atual era do deep learning, em que datasets diversificados e aplicações de ponta estão ganhando destaque, o potencial de mercado dos FPGAs tende a aumentar.<br /> <br /> Além disso, como o FPGA originalmente não precisa rodar milhares de cores ao mesmo tempo (ainda que o desempenho possa ser um pouco inferior), o consumo de energia fica muito, muito menor em comparação com a GPU (ver Tabela 1 anexa). Adicionalmente, conforme os algoritmos de deep learning do mercado evoluem, o FPGA também permite ajustar a forma de consumo de energia, de modo que a eficiência energética pode ser otimizada a qualquer momento. Isso porque basta desligar os switches desnecessários e ativar apenas os necessários. Por esse motivo, antes de a era do deep learning de fato se consolidar, é possível interpretar que Intel e AMD, que não haviam tido grande sucesso com GPUs, correram para adquirir por valores elevados as empresas número 1 e 2 do setor de FPGA. Claro, a Nvidia, que já era uma força estabelecida em GPUs, também não ficou parada. Por mais vantagens que o FPGA tenha, ele ainda apresenta uma desvantagem crítica no deep learning em relação à GPU: a velocidade de training é mais lenta. Isso é uma limitação inevitável. Afinal, sua estrutura não é built-in com aumento indiscriminado de cores disponíveis em nível de hardware. Intel e AMD traçaram a estratégia de usar FPGAs para tomar parte da fatia do mercado de aceleradores para IA dominado pelas GPUs. A Intel lançou o Agilex e o PAC (programmable acceleration card), enquanto a AMD (Xilinx) também apostou alto ao lançar a placa aceleradora Alveo. Em especial, a Xilinx chegou a migrar para produtos como o Versal, que combina HBM (high-bandwidth memory) diretamente ao FPGA, algo que também só se tornou possível porque a tecnologia de padronização ultrafina de semicondutores abaixo de 10 nm atingiu maturidade (no caso do Versal, fabricado em processo de 7 nm). Desde que a Intel adquiriu a Altera, a receita de aceleradores baseados em FPGA da Intel não mostrou grande crescimento, ao passo que a receita da Xilinx continua apresentando forte expansão, o que também indica que a estrutura FPGA + HBM no estilo da Xilinx vem reduzindo gradualmente a diferença de desempenho dos aceleradores de deep learning. Além disso, a Xilinx vem ampliando o desenvolvimento com o processador xDNN, otimizado para deep neural nets, mirando o mercado de aceleradores de deep learning flexible.<br /> <br /> Na verdade, no processo de treinamento de deep learning, tão importante quanto as operações matriciais é o processo de integração (integration) dos resultados de aprendizado de grandes volumes de dados. Para isso, quando os dados estão dispostos em sequência, é necessário reduzir a latência. Ou seja, reduzir o atraso dos dados vem se tornando cada vez mais importante tanto em termos de consumo de energia quanto de velocidade de aprendizado. A carta que a Nvidia apresentou contra o campo dos FPGAs foi justamente o InfiniBand, tecnologia voltada a reduzir essa latência de dados. Para isso, em 2019, a Nvidia venceu a disputa de aquisição contra Intel e AMD e comprou a Mellanox, líder global em placas de interface de rede (NIC) e InfiniBand, por US$ 6,9 bilhões, garantindo sua tecnologia de otimização de NPU. A tecnologia com a qual a Nvidia mira, além das GPUs, o mercado de aceleradores de deep learning e até o mercado inteiro de aceleradores de IA é o SoC Xavier, um acelerador genérico de deep learning, que está posicionado especialmente como produto principal no mercado de veículos autônomos, onde a demanda por aceleradores de IA cresce rapidamente. O CUDA da Nvidia também oferece o cuDNN, especializado em deep learning, no qual já estão previamente implementadas as unidades exigidas por praticamente todas as deep neural nets, independentemente do dataset ou da escala. Por isso, pode-se dizer que a empresa também já garantiu uma cabeça de ponte para o futuro mercado de NPU (Neural Processing Unit). Em especial, considerando que a NPU é um chip em que uma DNN é previamente implementada em nível de hardware para um dataset específico (literalmente, um chip em que cada camada que compõe a rede de deep learning é implementada em correspondência 1:1 com unidades lógicas baseadas em silício. Em outras palavras, é como implementar os neurônios diretamente em nível de hardware), suas características a tornam especialmente adequada para integração em APs móveis, o que aumenta a probabilidade de manter domínio também no mercado de AP, que deve continuar crescendo fortemente. A NPU pode ser vista como um chip em que a função foi fixada a ponto de permitir fazer a "inferência" não na GPU, mas no dispositivo final, como um smartphone. Como não dá para colocar em um smartphone uma GPU que já ficou do tamanho de um livro grosso, a NPU é criada de modo a incorporar ao máximo uma estrutura previamente treinada em formato built-in. Se o treinamento do modelo em si ficar a cargo de servidores com GPU, e a NPU assumir apenas a função de inferir características a partir dos dados de entrada com base no modelo já treinado, então ela não precisará consumir tanta energia nem ter grande porte, podendo ser integrada sob medida a smartphones ou chips semicondutores automotivos. Isso também pode ser visto como uma estratégia para contornar a flexibility buscada pelos FPGAs. A Nvidia mirou justamente esse mercado de NPUs e, após o Xavier, anunciou a série Jetson, além de reduzir ainda mais os preços.<br /> <br /> O concorrente no mercado de NPU provavelmente será o Google, que anunciou sua série de chips próprios TPU (tensor processing unit) Coral e vem tentando competir em custo ao definir preços inferiores a um quinto do Jetson da Nvidia. Naturalmente, desempenho e preço são proporcionais, e o desempenho do Coral é conhecido por ficar entre um quinto e um terço do Xavier ou do Jetson. Ainda assim, espera-se que as TPUs que o Google lançar depois sejam usadas em áreas um pouco mais amplas com base no feedback do mercado, algo que pode ser atribuído à competitividade que o Google imagina obter na velocidade de atualização de modelos treinados por meio de servidores de nuvem com GPU. Fabricantes tradicionais de AP móvel, como Samsung e Qualcomm, também estão adotando a estratégia de enfiar NPUs em seus chips, já que, por causa dos limites da padronização ultrafina, há cada vez menos espaço para melhorar o desempenho dos próprios chips AP. A Qualcomm começou a embarcar NPUs a partir da série Snapdragon 845, e a Samsung começou a fazer o mesmo a partir da série Exynos 9. As empresas que pretendem integrar ou operar em paralelo com NPUs naturalmente vão garantir dados em chips móveis e ampliar gradualmente seu campo de aplicação; o próximo mercado provavelmente se expandirá para semicondutores automotivos (chips para veículos autônomos ou chips eletrônicos veiculares), chips de processamento de sinais para IoT e chips compostos de radar militar, entre outros.<br /> <br />

Mas, ironicamente, a competição entre FPGA e os mercados de NPU/TPU/cuDNN depende não do hardware, e sim do software, especialmente de como será a tendência de mudança dos algoritmos de deep learning. Ainda hoje, na área de algoritmos de deep learning, surgem dia após dia novas metodologias, novas teorias e novos modelos, e a cada ano fica mais difícil ter artigos aceitos nas quatro principais conferências de inteligência artificial. No entanto, como acontece com tecnologias de outras áreas, à medida que o deep learning entra gradualmente em uma fase de maturidade e o ritmo de inovação dos algoritmos começa a desacelerar, a vantagem própria da flexibility dos FPGA também tende a se diluir. Isso porque a vantagem de poder fazer reprogramming para se adequar a algoritmos mais rápidos e mais eficientes deixa de ser uma vantagem tão relevante se o ciclo de troca de algoritmos passar a ficar cada vez mais lento. Por exemplo, no caso de funções como reconhecimento de imagem, os algoritmos podem ser considerados como tendo chegado a um estado de saturação, a ponto de quase não haver mais espaço para melhoria (a taxa de reconhecimento humana já foi superada há muito tempo, e a maioria dos algoritmos hoje ultrapassa 95% de acurácia em reconhecimento de imagem). Em vez disso, pode acabar sendo mais vantajoso continuar adaptando DNNs de propósito geral para reduzir a diferença entre o hardware e os algoritmos mais recentes.<br /> O mercado de aceleradores de deep learning continuará crescendo no futuro e, provavelmente, a demanda seguirá em alta mesmo depois de 2030, mas ainda é preciso observar mais para saber qual abordagem dominará o mercado. Ninguém pode prever quando chegará a fase de maturidade dos algoritmos de deep learning, mas ela inevitavelmente virá, e é difícil prever qual tecnologia estará mais otimizada nesse momento. Os FPGA também têm bastante espaço para inovar. Um bom exemplo dessa possibilidade de inovação é o estudo de design de chips baseado em aprendizado por reforço divulgado pelo Google na Nature em junho deste ano* (https://www.nature.com/articles/s41586-021-03544-w). Projetar a disposição de milhões ou dezenas de milhões de unidades em uma área limitada de die de chip, minimizando a latência entre as entradas e saídas de dados de cada unidade e ao mesmo tempo reduzindo o consumo de energia, era uma das partes mais difíceis do design de chips semicondutores. As empresas fabless vinham fazendo esse tipo de otimização com base em know-how acumulado, mas os resultados divulgados pelo Google foram chocantes a ponto de ofuscar esse know-how, com melhorias muito expressivas. Isso é parecido com organizar todo tipo de móveis e eletrodomésticos em uma planta complexa de apartamento de forma a minimizar os movimentos do corpo e também o esforço necessário, encontrando o fluxo ideal. O Google conseguiu realizar um projeto otimizado para um espaço de estados de posicionamento de unidades (~10^2500), muito maior que o espaço de estados do Go (~10^360), usando uma abordagem que herda e desenvolve de forma bem mais avançada o método do AlphaGo. Esse método de projeto naturalmente também pode ser aplicado diretamente à otimização de FPGA, porque otimizar um determinado desempenho levando em conta o degree of freedom do instruction set dado é uma tarefa viável dentro do mesmo contexto.<br /> <br /> Será que também podem surgir tecnologias completamente diferentes das abordagens atuais usadas por Nvidia, Google, Intel, AMD e Qualcomm? Claro que isso é possível. Fazendo jus ao nome neural net, já é possível imaginar uma tecnologia que não apenas imite de forma simplificada a rede neural do cérebro humano, mas a conecte diretamente a chips semicondutores em uma abordagem de verdadeiro copy & phaste. Um exemplo disso é o perspective divulgado recentemente por cientistas coreanos da Samsung e de Harvard* (**https://www.nature.com/articles/s41928-021-00646-1...). A tecnologia alternativa projetada nesse artigo é o chip neuromórfico (neuromorphic chip), e o motivo pelo qual esse conceito já conhecido voltou a chamar atenção é que ele mostrou, em nível de tecnologia real, ser possível conectar os sinais elétricos trocados na rede neural do cérebro humano a nanoeletrodos, copiá-los (copy) diretamente e gravá-los (phaste) em memórias ligadas na camada inferior. Isso significa que é possível transferir para chips semicondutores praticamente todas as funções remanescentes do cérebro, removendo apenas o tecido mole em si. As tecnologias de memória semicondutora para implementar chips neuromórficos já existem ou já estão em uso real, como SRAM, RRAM, MRAM e memristor, de modo que a questão central passa a ser como transferir para a memória, em tempo real e com latência mínima, os sinais gerados por trilhões de neurônios; fora isso, a conexão no modelo copy & phaste já não parece mais algo tecnicamente impossível. <br /> <br /> Daqui para frente, o mercado de semicondutores liderado por aceleradores de deep learning continuará crescendo de formas variadas e ainda mais poderosas. O tamanho desse mercado, assim como a tecnologia dominante, será definido por até que ponto o processamento de dados baseado em deep learning conseguirá penetrar em mercados cada vez mais diversificados e lidar com volumes ainda maiores de dados não estruturados. E o que deve ser observado aqui, além da evolução das tecnologias que hoje são protagonistas, são novas tecnologias conceituais capazes até mesmo de substituí-las por uma direção completamente diferente. Além do neuromórfico, redes neurais baseadas em photonics também são possíveis, o que significa que a própria latência poderá ser reduzida à velocidade da luz, sinalizando o surgimento de NPUs ainda mais poderosas. No caso da spintrônica, será possível elevar ainda mais o desempenho de processamento paralelo, e algoritmos de deep learning dedicados a computadores quânticos, como o TFQ divulgado pelo Google, também podem redefinir a "inferência" de uma forma totalmente diferente da atual. O mercado de semicondutores do futuro também terá, em última instância, seu principal impulso vindo dos aceleradores de IA liderados pelo deep learning e da inovação em algoritmos compatíveis com eles. E, em meio ao surgimento desenfreado de cada vez mais empresas fabless com arquiteturas variadas, espera-se que a obtenção de tecnologia de processo capaz de separar os bons dos maus e determinar os limites de implementação dessas tecnologias acabe definindo o poder de domínio do mercado que será criado daqui para frente.<br /> <br />

  • É um post no Facebook do professor Kwon Seok-jun, da Universidade Sungkyunkwan, e estou trazendo aqui porque ele explica de forma interessante a evolução de CPU/GPU até agora.</p>

1 comentários

 
xguru 2021-10-02
<p>Como há pessoas que não têm conta no Facebook, trouxe o texto completo. Também há conteúdos para consultar nos comentários do Facebook, então recomendo ir lá conferir.</p>