Atualmente, os principais intervenientes na IA podem ser divididos em dois grupos principais: apoiantes da IA de código aberto e apoiantes da IA fechada.
Curiosamente, um dos maiores apoiadores da IA fechada é a própria OpenAI, que não divulga o código-fonte de seus modelos, apenas fornece acesso a eles. Costumam argumentar que seria demasiado perigoso publicar estes modelos, pelo que é necessário um controlo centralizado, tal como acontece com a energia nuclear. Obviamente, há uma base para este argumento, mas não é difícil ver os interesses comerciais por trás da decisão. Se o código fonte do ChatGPT estivesse disponível para todos, quem pagaria pelo serviço?!
Em contraste, os defensores da IA de código aberto, como o Meta (Facebook), acreditam que a IA fechada impede o progresso e que a IA de código aberto é a direção certa. Claro, também vale a pena ver aqui os aspectos empresariais. Para Meta, o modelo de IA não é o produto principal. Para eles, a IA é apenas uma ferramenta e compartilhar o modelo não representa uma desvantagem comercial. Pelo contrário, proporciona uma vantagem comercial, uma vez que a Meta pode posteriormente utilizar os desenvolvimentos da comunidade. No entanto, também há um pequeno problema com este modelo. Não é verdadeiramente de código aberto.
Um modelo de IA é essencialmente uma enorme equação matemática com parâmetros ajustáveis. Esses parâmetros são definidos durante o processo de treinamento. Sempre que uma empresa fala em IA de código aberto, significa que esses parâmetros são disponibilizados gratuitamente para que qualquer pessoa possa executar o modelo em sua máquina. Mas não é totalmente de código aberto!
No caso da IA, o treinamento é análogo à construção de programas tradicionais. Com base nisso, os parâmetros do modelo representam o arquivo binário. Portanto, quando Meta, X (Twitter) ou outras empresas tornam o código-fonte de seu modelo aberto, na verdade estão apenas divulgando o resultado.
Então o que obtemos é uma parametrização de arquitetura fixa. Se quisermos mudar ou melhorar alguma coisa na arquitetura, por exemplo, usar uma arquitetura Mamba em vez de uma arquitetura Transformer, precisaríamos treinar novamente o modelo, o que não podemos fazer sem o conjunto de treinamento. Portanto, estes modelos só podem ser aperfeiçoados e não mais desenvolvidos.
Os chamados modelos de código aberto não são verdadeiramente de código aberto, pois a arquitetura é fixa. Esses modelos só podem ser ajustados, mas não desenvolvidos, pois isso também exigiria o conjunto de treinamento. A verdadeira IA de código aberto consiste no modelo e no conjunto de treinamento!
Os modelos de IA de “código aberto” são normalmente produtos de grandes empresas. Isto é compreensível, pois treinar um modelo grande requer uma enorme capacidade computacional e, consequentemente, muito dinheiro. Apenas as grandes empresas dispõem de tais recursos, razão pela qual o desenvolvimento da IA é centralizado.
Assim como a tecnologia blockchain na forma de Bitcoin criou a possibilidade de dinheiro descentralizado, ela também nos permite criar uma IA verdadeiramente de código aberto que pertence à comunidade e não a uma empresa.
Este artigo é um conceito sobre como uma IA verdadeiramente de código aberto e voltada para a comunidade poderia ser desenvolvida usando a tecnologia blockchain.
Como mencionei anteriormente, a base de uma IA verdadeiramente de código aberto é um conjunto de dados aberto. O conjunto de dados é, na verdade, o recurso mais valioso. No caso do ChatGPT, por exemplo, o modelo de linguagem foi treinado em bases de dados disponíveis publicamente (por exemplo, Common Crawl) e depois ajustado com assistência humana (RLHF) numa fase subsequente. Esse ajuste fino é extremamente caro devido ao trabalho humano envolvido, mas é o que dá força ao ChatGPT. A arquitetura em si é (presumivelmente) um transformador geral ou uma versão modificada dele, a Mistura de Especialistas, o que significa múltiplos transformadores paralelos. O ponto chave é que a arquitetura não é especial. O que torna o ChatGPT (e todos os outros modelos) único é o bom conjunto de dados. É isso que dá poder ao modelo.
Um conjunto de dados de treinamento de IA normalmente tem vários terabytes de tamanho, e o que pode ou não ser incluído nesse conjunto de dados pode variar de acordo com o grupo e a cultura. A escolha dos dados é muito importante, pois determinará, por exemplo, a ‘personalidade’ de um grande modelo de linguagem. Vários escândalos importantes eclodiram porque os modelos de IA de grandes empresas (Google, Microsoft, etc.) se comportaram de maneira racista. Isso se deve à seleção inadequada do conjunto de dados. Como os requisitos para o conjunto de dados podem variar de acordo com a cultura, podem ser necessárias várias bifurcações. Soluções de armazenamento descentralizadas e endereçadas a conteúdo, como IPFS ou Ethereum Swarm, são ideais para armazenar grandes conjuntos de dados versionados e com vários fork. Essas soluções de armazenamento funcionam de forma semelhante ao sistema de controle de versão GIT, onde arquivos individuais podem ser endereçados com um hash gerado a partir do conteúdo. Nesses sistemas, os forks podem ser criados de forma barata porque apenas as alterações precisam ser armazenadas e a parte comum dos dois conjuntos de dados é armazenada em uma única instância.
Assim que tivermos os conjuntos de dados apropriados, podemos prosseguir com o treinamento do modelo.
Conforme mencionado na introdução, um modelo de IA é essencialmente uma equação matemática gigantesca com numerosos parâmetros livres. Geralmente é verdade que quanto mais parâmetros livres um modelo tiver, mais “inteligente” ele será, portanto o número de parâmetros é frequentemente indicado no nome do modelo. Por exemplo, o modelo lma-2-7b significa que a arquitetura do modelo é lma-2 e possui 7 bilhões de parâmetros. Durante o treinamento, esses parâmetros são definidos usando o conjunto de dados para que o modelo forneça a saída especificada para a entrada fornecida. Para o treinamento é utilizada a retropropagação, que encontra os parâmetros mais adequados com a ajuda de derivadas parciais.
Durante o treinamento, o conjunto de dados é dividido em lotes. Em cada etapa, um determinado lote fornece os parâmetros de entrada e saída, e a retropropagação é usada para calcular como os parâmetros do modelo precisam ser modificados para calcular com precisão a saída fornecida a partir da entrada fornecida. Este processo deve ser repetido várias vezes no conjunto de dados fornecido até que o modelo atinja a precisão desejada. A precisão pode ser verificada com o conjunto de dados de teste.
Grandes empresas realizam treinamento em clusters de GPU massivos porque o treinamento requer enorme capacidade computacional. Num sistema descentralizado, um desafio adicional é que os nós individuais não são confiáveis e há sempre um custo associado à falta de confiabilidade! Essa falta de confiabilidade é a razão pela qual o Bitcoin tem o consumo de energia de um país pequeno. Bitcoin usa consenso de Prova de Trabalho, onde a capacidade computacional substitui a confiabilidade. Em vez de confiar nos nós individuais, confiamos que os nós bem-intencionados possuem mais capacidade computacional do que os mal-intencionados na rede. Felizmente, existem outros mecanismos de consenso, como o Proof of Stake usado pela Ethereum, onde o dinheiro apostado garante a nossa confiabilidade em vez da capacidade computacional. Neste caso, não há necessidade de grande capacidade computacional, resultando em significativamente menor demanda energética e impacto ambiental.
No treinamento descentralizado, é necessário algum mecanismo para substituir a confiança entre o nó de treinamento e o solicitante. Uma solução possível é o nó de treinamento criar um log de todo o processo de treinamento e um terceiro, um nó validador, verificar aleatoriamente o log em determinados pontos. Se o nó validador considerar o treinamento satisfatório, o nó de treinamento receberá o pagamento oferecido. O validador não pode verificar o log inteiro, pois isso significaria refazer todos os cálculos, e os requisitos computacionais da validação seriam iguais aos do treinamento.
Outra opção é a solução otimista, onde assumimos que o nó executou o cálculo corretamente e fornecemos um período de desafio durante o qual qualquer pessoa pode provar o contrário. Nesse caso, o nó que realiza o cálculo aposta uma quantia maior (penalidade), e o nó que solicita a computação também aposta uma quantia (recompensa). O nó executa o cálculo e depois publica o resultado. Isto é seguido pelo período de desafio (por exemplo, 1 dia). Se alguém encontrar um erro no cálculo com verificações aleatórias durante esse período e publicá-lo, receberá a penalidade aplicada pelo nó de computação e o solicitante receberá sua recompensa de volta. Se ninguém conseguir provar que o cálculo está incorreto durante o período do desafio, o nó de computação recebe a recompensa.
Existe uma variante de provas de conhecimento zero chamada zkSNARK, que também é adequada para verificar se alguém realizou um cálculo. A principal vantagem deste método é que a verificação pode ser feita de forma barata, mas gerar a prova é uma tarefa computacionalmente intensiva. Dado que este método é muito dispendioso, mesmo para cálculos mais simples, exigiria significativamente mais recursos computacionais para o treino de IA do que o treino em si, pelo que provavelmente não o podemos utilizar para este fim neste momento. No entanto, o zkML é uma área de pesquisa ativa e é concebível que, no futuro, o terceiro possa ser substituído por um contrato inteligente que verifique o SNARK.
Do exposto, fica claro que existem várias soluções para verificar cálculos. Com base nisso, vamos ver como nosso sistema de suporte de treinamento descentralizado baseado em blockchain seria construído.
Neste sistema, os conjuntos de dados são propriedade da comunidade através de DAOs. O DAO decide quais dados podem ser incluídos no conjunto de dados. Se um grupo de membros discordar da decisão, eles podem se separar do DAO e formar um novo DAO, onde bifurcam o conjunto de dados existente e continuam a construí-lo de forma independente. Assim, o DAO é bifurcado junto com o conjunto de dados. Como o conjunto de dados é armazenado em armazenamento descentralizado endereçado ao conteúdo (por exemplo, Ethereum Swarm), a bifurcação não é cara. O armazenamento do conjunto de dados é financiado pela comunidade.
O processo de treinamento também é controlado por um DAO. Através do DAO, os nós de treinamento que desejam vender sua capacidade computacional sobressalente podem se registrar. Para se candidatar, eles devem apostar em um contrato inteligente. Se um nó tentar trapacear durante o cálculo, ele perderá esta aposta.
O solicitante seleciona o conjunto de dados e o modelo que deseja treinar e então oferece uma recompensa. A oferta é pública, portanto qualquer nó de treinamento pode se inscrever para realizar a tarefa. O nó de treinamento cria um log completo do processo de treinamento, onde cada entrada corresponde ao treinamento de um lote. A entrada inclui a entrada, a saída, a matriz de pesos e todos os parâmetros relevantes (por exemplo, a semente aleatória usada pela camada de eliminação para selecionar os dados a serem descartados). Assim, todo o cálculo pode ser reproduzido com base no log.
Conforme mencionado anteriormente, vários métodos podem ser usados para verificar o cálculo. A mais simples é a abordagem otimista. Neste caso, o solicitante coloca a recompensa em um contrato inteligente e o nó de treinamento publica o log de treinamento. Após a publicação, um período de tempo específico (por exemplo, 1 dia) fica disponível para verificação do cálculo. Se durante esse período o solicitante ou qualquer outra pessoa enviar prova de que uma determinada etapa está incorreta, o nó de treinamento perde sua aposta e o solicitante recebe a recompensa de volta. Nesse caso, o nó que enviar a prova correta recebe a aposta, incentivando todos a validar os cálculos. Se ninguém enviar tal prova, o nó de treinamento receberá a recompensa após o tempo expirar.
Em poucas palavras, é assim que o sistema funciona. Claro, surgem algumas questões.
O modelo de negócios do sistema é o mesmo da maioria das soluções gratuitas e de código aberto, como o modelo de negócios Linux. Se uma empresa precisa de um modelo e não tem problemas em ele ser gratuito e de código aberto, é muito mais econômico investir nisso do que treinar seu próprio modelo. Imagine que 10 empresas precisem do mesmo modelo de linguagem. Se eles não se importarem com o modelo aberto, é muito mais econômico para cada um pagar 1/10 do custo do treinamento, em vez de pagar o valor total. O mesmo se aplica aos conjuntos de dados que constituem a base da formação. Podem ainda ser criadas campanhas de crowdfunding para modelos de formação, onde futuros utilizadores do modelo poderão contribuir para o seu desenvolvimento.
Dado que os preços num tal sistema são regulados pelo mercado, é difícil dar uma resposta definitiva a esta questão. Depende de quanta capacidade computacional livre está disponível para os usuários. Já vimos o poder da comunidade com o Bitcoin. A capacidade computacional da rede Bitcoin supera a de qualquer supercomputador. Os provedores de nuvem precisam gerar lucro, enquanto em um sistema descentralizado como este, os usuários oferecem sua capacidade computacional extra. Por exemplo, alguém com um PC para jogos poderoso pode oferecer sua capacidade extra quando não estiver jogando. Nesse caso, se o serviço gerar um pouco mais que a energia utilizada, já vale a pena para o usuário. Além disso, há muita energia residual no mundo que não pode ser utilizada por meios tradicionais. Um exemplo disso é a energia térmica produzida pelos vulcões. Esses locais normalmente não possuem uma rede elétrica estabelecida, o que os torna inadequados para a geração de eletricidade utilizável. Já existem startups utilizando essa energia para mineração de Bitcoin. Por que não usá-lo para “mineração de inteligência”? Como a energia neste caso é praticamente gratuita, apenas o custo do hardware precisa ser coberto. Assim, fica evidente que existem muitos fatores que poderiam tornar o treinamento em um sistema tão descentralizado muito mais barato do que na nuvem.
No caso da execução de modelos de IA, a privacidade é uma questão muito importante. Os grandes prestadores de serviços garantem naturalmente que tratam os nossos dados de forma confidencial, mas podemos ter a certeza de que ninguém está a escutar as nossas conversas com o ChatGPT? Existem métodos (por exemplo, criptografia homomórfica) que permitem aos servidores realizar cálculos em dados criptografados, mas estes têm altos custos indiretos. A solução mais segura é executar os modelos localmente. Felizmente, o hardware está ficando mais forte e já existem soluções de hardware especializadas para executar IA. Os próprios modelos também estão melhorando significativamente. A pesquisa mostra que, em muitos casos, o desempenho não diminui muito mesmo após a quantização, mesmo em casos extremos onde apenas 1,5 bits são usados para representar pesos. Esta última solução é particularmente promissora porque elimina a multiplicação, que é a operação mais dispendiosa. Assim, no futuro, graças ao desenvolvimento de modelos e hardware, é provável que executemos modelos que excedam o nível humano localmente. Além disso, podemos personalizar estes modelos ao nosso gosto com soluções como LoRA.
Outra direção muito promissora é a geração aumentada por recuperação (RAG). Isto significa que o 'conhecimento lexical' é armazenado numa base de dados vectorial, e o nosso modelo de linguagem reúne o contexto apropriado desta base de dados para a questão dada. Isso é muito semelhante ao modo como nós, humanos, funcionamos. Claramente, ninguém memoriza um léxico inteiro. Ao fazer uma pergunta, basta saber onde encontrar o conhecimento necessário. Ao ler e interpretar as entradas relevantes, podemos fornecer uma resposta coerente. Esta solução tem inúmeras vantagens. Por um lado, é suficiente um modelo menor, mais fácil de executar localmente, e por outro lado, a alucinação, um grande problema dos modelos de linguagem, pode ser minimizada. Além disso, o conhecimento do modelo pode ser facilmente expandido sem necessidade de retreinamento, simplesmente adicionando novo conhecimento ao banco de dados vetorial. Ethereum Swarm é uma solução ideal para criar esse banco de dados vetorial, pois não é apenas um mecanismo de armazenamento descentralizado, mas também uma solução de comunicação. Por exemplo, mensagens de grupo podem ser implementadas no Swarm, permitindo a criação de um banco de dados vetorial distribuído simples. O nó publica a consulta de pesquisa e os outros nós respondem retornando o conhecimento relacionado.
A ideia do LLM OS vem de Andrej Karpathy, que ele publicou no Twitter. LLM OS é um sistema operacional hipotético centrado em um grande modelo de linguagem. Em nosso sistema distribuído baseado em blockchain, podemos considerar isso como um agente em execução no nó de um usuário. Este agente pode se comunicar com outros agentes e ferramentas tradicionais do Software 1.0. Isso pode incluir uma calculadora, um intérprete Python ou até mesmo controlar um robô físico, um carro ou uma casa inteligente. Em nosso sistema, o sistema de arquivos é representado pelo Swarm e o banco de dados vetorial criado pelo Swarm, onde o conhecimento comum é acessível. Todo o sistema (o coletivo de agentes) pode ser visto como uma forma de inteligência coletiva.
Acredito que no futuro a inteligência artificial fará parte do nosso dia a dia, de forma muito mais integral do que agora. A IA se tornará parte de nós! Em vez de telemóveis, usaremos óculos inteligentes com câmaras que gravam tudo e microfones que ouvem tudo. Teremos diálogos contínuos com os nossos modelos linguísticos executados localmente e outros agentes, que se adaptarão às nossas necessidades ao longo do tempo através de ajustes finos. Mas estes agentes não só comunicarão connosco, mas também entre si, utilizando constantemente o conhecimento colectivo produzido por toda a comunidade. Este sistema organizará a humanidade numa forma de inteligência colectiva, o que é algo muito significativo. Não é aceitável que esta inteligência colectiva se torne propriedade de uma única empresa ou entidade. É por isso que precisamos dos sistemas descritos acima, ou similares!