Como o CEO da Nvidia, Jensen Huang, se tornou uma das figuras mais poderosas do setor de tecnologia e IA? Em The Thinking Machine, Stephen Witt afirma que isso se deve a uma ideia: processamento paralelo. Essa abordagem permite que os computadores dividam problemas complexos em partes menores e resolvam todas essas partes ao mesmo tempo, ao contrário dos chips tradicionais que trabalham com cada parte sequencialmente.
Ao desenvolver a tecnologia que impulsionaria a revolução da IA, a Nvidia foi pioneira em uma abordagem à computação que desafiaria a forma como os computadores processam as informações. Mas esse avanço começou com um problema muito mais prático: melhorar a aparência dos videogames. Continue lendo para saber mais sobre o que é processamento paralelo e como ele começou com o objetivo de criar gráficos realistas para videogames populares.
Índice
O que é processamento paralelo?
Então, o que é processamento paralelo? Para entender como ele funciona, é preciso saber onde ele teve sua origem. Quando Jensen Huang e seus cofundadores fundaram a Nvidia em 1993, eles queriam construir chips especializados para renderizar os complexos gráficos 3D exigidos por jogos como Quake e Half-Life. Para criar efeitos visuais realistas, essas unidades de processamento gráfico (GPUs) precisavam calcular a cor e a iluminação de milhares de pixels simultaneamente. Isso exigia uma abordagem diferente dos chips tradicionais, que operavam sequencialmente, realizando um cálculo de cada vez, embora com muita rapidez.
(Nota breve: A demanda por gráficos com uso intensivo de computação foi impulsionada pela concorrência para criar videogames mais envolventes. Doomno qual os jogadores lutavam contra demônios em Marte, usava truques inteligentes para criar a ilusão de profundidade enquanto rodava em mapas 2D planos. Quake foi criado a partir de polígonos 3D reais, permitindo que os jogadores navegassem em masmorras medievais que podiam ser vistas de todos os ângulos. Half-Lifeem que os usuários interpretavam um cientista em uma instalação de pesquisa invadida por alienígenas, intensificou a corrida armamentista adicionando uma narrativa ambiental que exigia ainda mais poder de processamento. Essa competição preparou o terreno, mas ainda foi preciso que engenheiros como Huang vissem o processamento paralelo como a solução e descobrissem como fazê-lo funcionar em escala).
Witt explica que, enquanto a maioria dos computadores dependia de unidades centrais de processamento (CPUs) que executavam as tarefas passo a passo, as GPUs da Nvidia dividiam problemas visuais complexos em milhares de partes menores e as resolviam de uma só vez. Essa abordagem, chamada de processamento paralelo, não era nova na teoria - os cientistas vinham fazendo experimentos com ela há anos -, mas continuava difícil de implementar de forma confiável. A maioria das tentativas de computação paralela foi um fracasso comercial, mas a Nvidia foi bem-sucedida porque tinha um aplicativo claro e imediato para se concentrar: renderizar gráficos de videogame em tempo real.
(Nota breve: O processamento paralelo imita a forma como o cérebro humano calcula, usando redes de bilhões de neurônios trabalhando simultaneamente. Durante décadas, os pesquisadores tentaram recriar isso nos computadores. Na década de 1980, eles mostraram que os circuitos transistorizados podiam imitar a forma como as membranas neurais funcionam no cérebro. Na mesma época, David Rumelhart, James McClelland e Geoffrey Hinton desenvolveram estruturas de "processamento distribuído paralelo", modelos de computador de como o cérebro processa informações com muitas unidades simples trabalhando juntas. Mas essas abordagens inspiradas no cérebro tiveram dificuldades porque os computadores ainda não eram potentes o suficiente para lidar com os cálculos paralelos maciços que exigiam - exatamente o problema que a Nvidia resolveria).
Como os pesquisadores descobriram o potencial mais amplo
O potencial do processamento paralelo tornou-se evidente quando os pesquisadores descobriram que os chips de jogos da Nvidia poderiam ser reaproveitados para tarefas computacionais totalmente diferentes. Em 2000, Ian Buck, um estudante de pós-graduação em Stanford, queria criar uma experiência de jogo imersiva. Ele uniu 32 chips da Nvidia para exibir um único jogo, Quake IIIem oito grandes projetores, criando uma parede de jogos de altíssima definição que preenchia uma sala inteira. Witt explica que os cálculos necessários para renderizar apenas 30 quadros do jogo levariam cerca de 16.000 anos para serem concluídos por um ser humano trabalhando com lápis e papel. Mas o conjunto de placas Nvidia da Buck realizou esses cálculos a cada segundo. Por cerca de US$ 20.000, uma fração do custo dos supercomputadores tradicionais, ele construiu uma máquina com extraordinária capacidade de processamento.
Buck e outros pesquisadores começaram a "hackear" os chips de jogos da Nvidia para induzi-los a resolver problemas científicos em vez de renderizar explosões e perseguições de carros para videogames. Eles usaram as ferramentas de programação existentes nas placas para redirecionar seu poder de processamento paralelo para tarefas como modelagem financeira, simulação meteorológica e imagens médicas. Em pouco tempo, os acadêmicos estavam comprando em grande quantidade as placas GeForce da Nvidia e reaproveitando-as como instrumentos científicos acessíveis. Um novo mercado estava surgindo, e isso não passou despercebido por Huang: Witt observa que, por volta de 2004, Huang começou a recrutar pesquisadores como Buck para se juntar à Nvidia.
| Quebrando a barreira da programação de GPU Em Stanford, Buck estava trabalhando em um problema fundamental: as GPUs poderiam, teoricamente, lidar com computação científica, mas os pesquisadores tinham de usar os chips para resolver problemas matemáticos disfarçando os cálculos como operações gráficas - por exemplo, representando dados científicos como texturas e operações matemáticas como sombreamento de pixels. Buck desenvolveu o Brook, uma linguagem que permitia aos engenheiros escrever instruções para processar grandes quantidades de dados em muitos processadores, em vez de pensar em termos de triângulos e pixels. Antes da Brook, o uso de GPUs para trabalhos científicos exigia o domínio de programação gráfica complexa: aprender a falar a linguagem nativa da GPU em vez de expressar problemas matemáticos diretamente. O Brook representava uma nova camada de software que traduzia conceitos familiares de programação em operações gráficas que as GPUs entendiam, permitindo que os cientistas se concentrassem em seus problemas computacionais. Isso representa um princípio fundamental da computação: As linguagens de programação existem em diferentes níveis de abstração, sendo que as linguagens de nível superior ocultam detalhes técnicos complexos para facilitar a programação. Enquanto outros viam apenas chips de jogos difíceis de programar, Buck adicionou uma camada de abstração especificamente para a computação paralela, prevendo uma nova categoria de supercomputação acessível em que o enorme poder de processamento paralelo seria democratizado pela introdução de um software mais intuitivo para aproveitar esse poder. |
Por que Jensen Huang apostou tudo na computação paralela
A decisão da Nvidia de apostar na computação paralela foi baseada em mais do que usos criativos para chips de jogos: Ela foi motivada por uma visão do futuro da computação. Huang percebeu que as abordagens existentes para tornar os computadores mais rápidos estavam se aproximando dos limites físicos. Durante décadas, as empresas de chips encolheram os transistores dentro dos microchips, mas eles estavam se tornando tão pequenos que logo vazariam eletricidade e deixariam os computadores mais lentos. Para que os computadores continuassem avançando, a abordagem fundamental da computação teria que mudar. Enquanto concorrentes como a Intel continuavam a se concentrar em tornar os processadores tradicionais mais rápidos, Huang via o processamento paralelo como o caminho a seguir.
O hardware para fazer o processamento paralelo funcionar em escala era apenas metade da solução. Witt explica que o processamento paralelo era incrivelmente difícil de programar. Escrever software para milhares de processos simultâneos exigia um raciocínio completamente diferente da programação sequencial tradicional, e a maioria dos desenvolvedores achava isso tão desafiador que evitava a computação paralela por completo. A Nvidia mudou isso com a CUDA (Compute Unified Device Architecture), uma plataforma de software que a empresa lançou em 2006 para permitir que os desenvolvedores usassem ferramentas familiares, como a linguagem de programação C, para acessar o poder de processamento paralelo das GPUs.
| Quando o hardware atinge os limites físicos, o software abre novas possibilidades Há duas alavancas a serem acionadas para tornar os computadores mais sofisticados: hardware e software. A Lei de Moore, a observação de que a densidade dos transistores dobra a cada dois anos, descreveu o progresso constante do hardware a partir da década de 1960, à medida que os componentes se tornavam menores e mais rápidos. Por volta de 2005, os especialistas perceberam que essa abordagem estava atingindo os limites físicos, pois os transistores estavam se tornando tão pequenos que logo não conseguiriam funcionar de forma confiável. Alguns pesquisadores estão explorando ideias que abandonam completamente o silício tradicional, como reações químicas que processam informações por meio de padrões de ondas oscilantes, sistemas biológicos, como moldes de lodo, que se destacam na resolução de problemas e sistemas microfluídicos que usam gotículas de líquido para realizar cálculos. Mas Huang reconheceu que o software oferecia uma solução alternativa. Em vez de esperar pelo desenvolvimento de novos tipos de hardware, a Nvidia criou um software que poderia liberar novos recursos dos chips de silício existentes. Embora as GPUs e CPUs sejam construídas essencialmente com os mesmos materiais, é o software que determina como esses componentes funcionam juntos. A CUDA permitiu que as GPUs realizassem milhares de cálculos simultâneos que as CPUs simplesmente não conseguem realizar. Essa abordagem que prioriza o software demonstrou como a inovação em software pode ser tão revolucionária quanto os avanços em hardware na computação tradicional. |
A crença de Huang de que o processamento paralelo era o caminho a seguir o levou a investir pesadamente na CUDA. Ele estava buscando o que chamou de "mercado de zero bilhão de dólares", criando tecnologia para clientes que ainda não existiam, na esperança de que o avanço do processamento paralelo (e a facilidade de uso) criasse uma demanda maciça. Witt relata que Huang sabia que os concorrentes poderiam eventualmente copiar o hardware da Nvidia, mas estariam começando do zero no lado do software. Assim, a Nvidia passou anos criando ferramentas, bibliotecas e documentação que tornavam seus chips fáceis de usar.
Ao investir pesadamente em infraestrutura de computação paralela e criar um ecossistema de software abrangente em torno dela, a Nvidia criou inadvertidamente a plataforma perfeita para a revolução da IA que estava esperando nos bastidores. A base agora estava pronta para que a Nvidia se tornasse o provedor de infraestrutura essencial para a IA, mas somente porque ela havia passado mais de uma década desenvolvendo recursos que pareciam comercialmente inúteis na época.
(Nota breve: depois que Witt terminou seu livro, a empresa chinesa DeepSeek alegou ter encontrado atalhos para a IA avançada, mas a controvérsia que se seguiu mostrou por que a estratégia CUDA de Huang se mostrou tão duradoura. Enquanto a CUDA trabalha em um alto nível de abstração para que os desenvolvedores não precisem entender o hardware da GPU, a plataforma da DeepSeek exige programação em um nível muito mais baixo. Os desenvolvedores precisam controlar a alocação de memória, o agendamento de threads e a otimização do cache, tarefas que a CUDA executa automaticamente, mas de forma menos otimizada. A DeepSeek também alegou ter treinado seus modelos de IA de forma barata. Mas a OpenAI alegou que a DeepSeek usou "destilação", aprendendo com os modelos da OpenAI em vez de começar do zero, sugerindo que pode não haver atalhos).
Saiba mais sobre o processamento paralelo
Para entender melhor o processamento paralelo em seu contexto mais amplo, dê uma olhada no guia do Shortform sobre o livro A máquina pensante de Stephen Witt.