Grandi modelli linguistici e l’ascesa dei generatori di codici AI
Di Martin Heller
Redattore collaboratore, InfoWorld |
Quando ho scritto di GitHub Copilot nel novembre 2021, Copilot era una delle poche tecnologie di generazione di codice AI disponibili. L'ho testato come estensione di Visual Studio Code. All'epoca, Copilot non sempre generava codice buono, corretto o addirittura funzionante, ma era comunque in qualche modo utile. La grande promessa dietro Copilot (e altri generatori di codice che utilizzano l'apprendimento automatico) è che è stato progettato per migliorare nel tempo, sia incorporando il feedback degli utenti sia inserendo nuovi esempi di codice nel suo corpus di formazione.
A partire da maggio 2023, sono disponibili centinaia di estensioni "AI" o "generazione di codice" solo per Visual Studio Code. Molti di questi potrebbero farti risparmiare tempo durante la codifica, ma se credi che il codice generato senza rivederlo, testarlo ed eseguirne il debug, ho un ponte da venderti.
Centinaia di estensioni di Visual Studio Code sul mercato promettono "generazione di codice" o "intelligenza artificiale", ma solo una frazione di esse genera effettivamente codice basato sull'apprendimento automatico.
Uno sviluppo promettente in questo settore è che diversi strumenti dispongono della generazione automatica di test unitari. La generazione di unit test è un problema molto più gestibile rispetto alla generazione di codice generico (in effetti, può essere eseguita utilizzando modelli semplici), ma dovrai comunque rivedere ed eseguire i test generati per vedere se hanno senso.
Nel resto di questo articolo, offrirò una breve storia dei modelli linguistici, prima di esaminare i modelli linguistici di grandi dimensioni (LLM) all'avanguardia, come la famiglia GPT di OpenAI e LaMDA e PaLM di Google, utilizzati per la generazione di testo. e la generazione di codice oggi. Concluderemo con un rapido tour di 10 strumenti di generazione di codice, tra cui Amazon CodeWhisperer, Google Bard e GitHub Copilot X.
I modelli linguistici risalgono ad Andrey Markov nel 1913. Quell'area di studio è ora chiamata catene di Markov, un caso speciale di modelli di Markov. Markov ha dimostrato che in russo, in particolare nell'Eugene Onegin di Pushkin, la probabilità che una lettera appaia dipende dalla lettera precedente e che, in generale, consonanti e vocali tendono ad alternarsi. Da allora i metodi di Markov sono stati generalizzati alle parole, ad altre lingue e ad altre applicazioni linguistiche.
Il lavoro di Markov fu ampliato da Claude Shannon nel 1948 per la teoria delle comunicazioni, e ancora da Fred Jelinek e Robert Mercer dell'IBM nel 1985 per produrre un modello linguistico basato sulla convalida incrociata (che chiamarono stime cancellate) e applicato alle stime in tempo reale. riconoscimento vocale di un ampio vocabolario. Essenzialmente, un modello linguistico statistico assegna probabilità a sequenze di parole.
Per vedere rapidamente un modello linguistico in azione, digita alcune parole nella Ricerca Google o in un'app per messaggi di testo sul tuo smartphone e consentigli di offrire opzioni di completamento automatico.
Nel 2000 Yoshua Bengio et al. ha pubblicato un articolo su un modello linguistico probabilistico neurale in cui le reti neurali sostituiscono le probabilità in un modello linguistico statistico, aggirando la maledizione della dimensionalità e migliorando le previsioni delle parole (basate su parole precedenti) rispetto a un modello trigramma levigato (allora lo stato dell'arte ) dal 20% al 35%. L'idea di modelli linguistici di rete neurale feed-forward, autoregressivi è ancora utilizzata oggi, sebbene i modelli ora abbiano miliardi di parametri e siano addestrati su corpora estesi, da qui il termine "modelli linguistici di grandi dimensioni".
Come vedremo, i modelli linguistici hanno continuato a ingrandirsi nel tempo per migliorare le loro prestazioni. Ciò comporta tuttavia dei costi. Il documento del 2021 sui pericoli dei pappagalli stocastici: i modelli linguistici possono essere troppo grandi? di Emily Bender, Timnit Gebru, e al. ci si chiede se non stiamo andando troppo oltre con questa tendenza. Gli autori suggeriscono, tra le altre cose, che dovremmo valutare prima i costi ambientali e finanziari e investire risorse nella cura e nella documentazione accurata dei set di dati piuttosto che nell’ingestione di tutto sul web.