Grandes modelos de linguagem e a ascensão dos geradores de código AI
Por Martin Heller
Editor Colaborador, InfoWorld |
Quando escrevi sobre o GitHub Copilot em novembro de 2021, o Copilot era uma das poucas tecnologias de geração de código de IA disponíveis. Eu testei como uma extensão do Visual Studio Code. Na época, o Copilot nem sempre gerava um código bom, correto ou mesmo em execução, mas ainda era um tanto útil. A grande promessa por trás do Copilot (e outros geradores de código que usam aprendizado de máquina) é que ele foi projetado para melhorar com o tempo, incorporando o feedback do usuário e ingerindo novos exemplos de código em seu corpus de treinamento.
Desde maio de 2023, existem centenas de extensões de "IA" ou "geração de código" disponíveis apenas para o Visual Studio Code. Vários deles podem economizar algum tempo durante a codificação, mas se você acredita no código gerado sem revisá-lo, testá-lo e depurá-lo, tenho uma ponte para vender a você.
Centenas de extensões do Visual Studio Code no mercado prometem "geração de código" ou "IA", mas apenas uma fração delas realmente gera código com base no aprendizado de máquina.
Um desenvolvimento promissor nessa área é que várias ferramentas possuem geração automática de testes de unidade. Gerar testes de unidade é um problema muito mais tratável do que gerar código de propósito geral — na verdade, isso pode ser feito usando padrões simples — mas você ainda terá que revisar e executar os testes gerados para ver se eles fazem sentido.
No restante deste artigo, oferecerei um breve histórico dos modelos de linguagem, antes de examinar os modelos de linguagem grande (LLMs) de última geração, como a família GPT da OpenAI e LaMDA e PaLM do Google, usados para geração de texto e geração de código hoje. Terminaremos com um tour rápido por 10 ferramentas de geração de código, incluindo Amazon CodeWhisperer, Google Bard e GitHub Copilot X.
Os modelos de linguagem remontam a Andrey Markov em 1913. Essa área de estudo agora é chamada de cadeias de Markov, um caso especial de modelos de Markov. Markov mostrou que em russo, especificamente no Eugene Onegin de Pushkin, a probabilidade de uma letra aparecer depende da letra anterior e que, em geral, consoantes e vogais tendem a se alternar. Desde então, os métodos de Markov foram generalizados para palavras, para outras linguagens e para outras aplicações de linguagem.
O trabalho de Markov foi estendido por Claude Shannon em 1948 para a teoria das comunicações, e novamente por Fred Jelinek e Robert Mercer da IBM em 1985 para produzir um modelo de linguagem baseado em validação cruzada (que eles chamavam de estimativas excluídas) e aplicado a tempo real, reconhecimento de fala de vocabulário amplo. Essencialmente, um modelo estatístico de linguagem atribui probabilidades a sequências de palavras.
Para ver rapidamente um modelo de idioma em ação, digite algumas palavras na Pesquisa Google ou em um aplicativo de mensagem de texto em seu smartphone e permita que ele ofereça opções de preenchimento automático.
Em 2000, Yoshua Bengio et al. publicou um artigo sobre um modelo de linguagem probabilística neural em que as redes neurais substituem as probabilidades em um modelo de linguagem estatística, contornando a maldição da dimensionalidade e melhorando as previsões de palavras (baseadas em palavras anteriores) sobre um modelo trigrama suavizado (então o estado da arte ) em 20% a 35%. A ideia de modelos de linguagem feedforward, auto-regressivos e de redes neurais ainda é usada hoje, embora os modelos agora tenham bilhões de parâmetros e sejam treinados em corpora extensos, daí o termo "grandes modelos de linguagem".
Como veremos, os modelos de linguagem continuaram a crescer ao longo do tempo para melhorar seu desempenho. Há custos para isso, no entanto. O artigo de 2021 Sobre os perigos dos papagaios estocásticos: os modelos de linguagem podem ser grandes demais? por Emily Bender, Timnit Gebru, e outros. questiona se estamos indo longe demais com essa tendência. Os autores sugerem, entre outras coisas, que devemos pesar primeiro os custos ambientais e financeiros e investir recursos na curadoria e documentação cuidadosa dos conjuntos de dados, em vez de ingerir tudo na web.