A inteligência artificial é emocionante; o novo avanço tecnológico que tomou conta de nossas vidas em menos de um ano não parou desde então.
Pessoalmente, tenho alguns problemas com as ferramentas de IA e como elas estão sendo usadas no momento. Com isso, não posso negar que eles são um instrumento poderoso quando dados à pessoa certa para fazer o trabalho certo - mas como todos sabemos, com grande poder vem uma grande responsabilidade.
Em meio à empolgação e às promessas semi-cumpridas, já paramos para pensar no custo de executar 1,2,3 bilhão de modelos de parâmetros por horas a fio, dimensionados em múltiplas instâncias, para milhões de usuários, tudo de uma vez?
Sempre fui um defensor do conceito de “web mínima” (futuramente escreverei um artigo sobre o conceito; há muito a dizer). Vivemos numa época em que, por um lado, todos parecem extremamente preocupados com a saúde do planeta (e por boas razões). Mas, por outro lado, ninguém para para pensar quanto a Internet, no seu estado actual, nos está a custar em termos de energia bruta. É eficiente? É verde? Longe disso.
Há algum tempo, escrevi uma pequena ferramenta TUI usando Perl ( webmeter ), que monitora meu tráfego de Internet e agrega o comprimento em bytes dos pacotes que são enviados e recebidos enquanto a ferramenta está em execução.
Apenas abrindo a página inicial do Reddit, minha ferramenta registrou impressionantes 5,85 megabytes de dados transferidos entre minha interface e os servidores do Reddit.
O Reddit como site é uma combinação de texto, imagens de baixa a média qualidade e vídeos ocasionais. Parece extremamente irracional que apenas ao abrir a página inicial do Reddit eu tenha transferido tantos dados por todo o planeta (a reprodução automática de vídeos estava desativada durante os testes, este resultado exclui o conteúdo de vídeo).
A primeira página do Reddit, uma página que poderia ter terminado com 10 kilobytes de conteúdo, javascript e CSS (talvez mais alguns kilobytes para imagens adicionais), precisava de 300 vezes mais largura de banda apenas para carregar.
Em comparação (considerando que o pouso na Lua não ocorreu em um porão de Hollywood), o software escrito para a missão Apollo 11 tinha apenas 72 kilobytes de tamanho.
Só para começar, imagine bilhões de pessoas abrindo a primeira página do Reddit, todas juntas, a todo momento, o tempo todo. Experimente e pense: qual é o custo direto da transferência dos dados? Qual é o custo secundário? Quanta energia estamos desperdiçando como seres consumidores de internet?
Esse conceito está em minha mente há mais ou menos um ano, e esse foi o principal motivo pelo qual eu hackeei minha ferramenta Perl em primeiro lugar. Um pensamento de “teia mínima” levou a outro, e percebi que estamos tão consumidos pelo exagero (ou ódio) que estamos ignorando o custo de nossos esforços de inteligência artificial.
Exatamente? Não podemos. Não sem saber como funcionam esses serviços: quais CPUs ou GPUs (ou chips dedicados) eles estão usando. Quantas instâncias estão sendo executadas, qual é a carga, qual é o consumo exato de energia do hardware crítico, etc.?
Mas podemos chegar a uma conclusão bastante realista (embora não tão precisa) se nos empenharmos nisso. Eu escolhi Fooocus para este exemplo, que é a GUI de difusão estável mais direta (e acredito popular) que existe. Vamos começar de forma simples:
Usando o Fooocus, minha GPU antiga (uma Quadro P2000) levou cerca de 10 minutos para gerar uma imagem. De acordo com a tabela de desempenho no repositório do Fooocus, sabemos que usar uma GPU Nvidia RTX 4XXX nos daria o resultado mais rápido. Minha Quadro é um tanto comparável a uma Nvidia GTX 1060, portanto, sabemos que usando uma GPU Nvidia GTX 1060 podemos gerar uma imagem em aproximadamente 10 minutos.
Depois de algumas pesquisas online, concluí que a GPU (empresarial) mais comumente usada para AI/ML é a Nvidia A100 (até 400W sob carga).
A Nvidia A100 é uma GPU extremamente mais poderosa que a Nvidia GTX 1060; também foi desenvolvido especificamente para IA e ML. Portanto, vamos supor que gerar uma imagem usando uma Nvidia A100 levará 5 segundos (se alguém que estiver lendo isso tiver dados precisos sobre a A100 e seu desempenho, compartilhe).
Usando a fórmula E = P * T, o consumo de energia de uma GPU Nvidia A100 sob carga por 5 segundos custa cerca de 0,5 watt-hora.
Complementando este exemplo: Midjourney (ou outros serviços de geração de imagens de IA) gera 4 imagens por prompt. Vamos supor que o serviço esteja usando um conjunto de Nvidia A100s para gerar as imagens, o que significa que o serviço provavelmente está desperdiçando cerca de 2 watts-hora de energia para cada prompt, para cada usuário.
Em novembro de 2023, Midjourney tinha 2,5 milhões de DAUs.
2Wh x 2,500,000 Users x 24 Hours = 120,000,000Wh (per day, considering every DAU is executing a prompt per hour, in reality, it is much more than that). 120,000,000Wh = 120,000MWh
120.000 megawatts-hora poderiam abastecer mais de 100.000 residências durante um mês inteiro.
Modestamente, serviços como Midjourney, Dall-E, ou mesmo soluções auto-hospedadas como Fooocus, desperdiçam pelo menos 50 milhões de watts-hora por dia, cada um (considerando que suas GPUs são de última geração e cada DAU usa o serviço por algumas horas todos os dias).
Esta quantidade de energia poderia potencialmente abastecer mais de 100.000 residências de tamanho médio durante um mês, por dia.
Lembre-se que falamos apenas sobre serviços de geração de imagens; não nos esqueçamos de todos os outros serviços, como ChatGPT, Gemini, Bard e todas as suas versões e sabores. A lista e o desperdício continuam.
Como deveríamos nós, como desenvolvedores, nos unir para resolver esse problema emergente? Como podemos tomar medidas para educar outras pessoas no uso responsável da energia? Eu adoraria ouvir sua opinião sobre este tópico e suas possíveis soluções.
Também publicado aqui