Cosa significa "programmatore di coppia AI" di OpenAI e GitHub per l'industria del software

493

Qual è la posizione della tua azienda nella curva di adozione dell'AI? Partecipa al nostro sondaggio sull'intelligenza artificiale per scoprirlo.

OpenAI ha ancora una volta fatto notizia, questa volta con Copilot, uno strumento di programmazione basato sull'intelligenza artificiale creato congiuntamente con GitHub. Costruito sulla base di GPT-3, il famoso modello linguistico di OpenAI, Copilot è uno strumento di completamento automatico che fornisce suggerimenti pertinenti (e talvolta lunghi) durante la scrittura del codice.

Copilot è attualmente disponibile per selezionare i candidati come estensione in Visual Studio Code, lo strumento di programmazione di punta di Microsoft, la società madre di GitHub.

Sebbene il generatore di codice basato sull'intelligenza artificiale sia ancora in fase di sviluppo, fornisce alcuni suggerimenti interessanti sul business dei modelli linguistici di grandi dimensioni e sulle direzioni future dell'industria del software.

Contents

Non è l'uso previsto per GPT-3

Il sito web ufficiale di Copilot lo descrive come un "programmatore di coppia AI" che suggerisce "intere righe o intere funzioni direttamente all'interno del tuo editor". A volte, è sufficiente fornire una firma o una descrizione della funzione per generare un intero blocco di codice.

Incontra GitHub Copilot, il tuo programmatore di coppia AI. https://t.co/eWPueAXTFt pic.twitter.com/NPua5K2vFS

— GitHub (@github) 29 giugno 2021

Dietro Copilot c'è un modello di deep learning chiamato Codex, che è fondamentalmente una versione speciale di GPT-3 ottimizzata per le attività di programmazione. Il funzionamento dello strumento è molto simile a GPT-3: richiede un prompt come input e genera una sequenza di byte come output. Qui, il prompt (o contesto) è il file del codice sorgente su cui stai lavorando e l'output è il suggerimento del codice che ricevi.

La cosa interessante in tutto questo sono le svolte inaspettate che può prendere la gestione dei prodotti AI. Secondo CNBC: "… ai tempi in cui OpenAI era il primo allenamento [GPT-3], la start-up non aveva intenzione di insegnarle come aiutare a programmare, [OpenAI CTO Greg] ha detto Brockman. Era inteso più come un modello linguistico di uso generale [emphasis mine] che potrebbe, ad esempio, generare articoli, correggere la grammatica errata e tradurre da una lingua all'altra”.

Le applicazioni linguistiche di uso generale si sono rivelate molto difficili da inchiodare. Ci sono molte complessità coinvolte quando si applica l'elaborazione del linguaggio naturale ad ambienti ampi. Gli umani tendono a usare molte astrazioni e scorciatoie nel linguaggio quotidiano. Il significato di parole, frasi e frasi può variare in base all'esperienza sensoriale condivisa, all'ambiente di lavoro, alle conoscenze pregresse, ecc. Queste sfumature sono difficili da cogliere con modelli di deep learning che sono stati addestrati per cogliere le regolarità statistiche di un set di dati molto ampio di tutto e niente.

Al contrario, i modelli linguistici funzionano bene quando vengono forniti con il contesto giusto e la loro applicazione è ristretta a una o poche attività correlate. Ad esempio, i chatbot basati sul deep learning addestrati o perfezionati su un ampio corpus di chat dei clienti possono essere un complemento decente per gli agenti del servizio clienti, assumendo la maggior parte delle semplici interazioni con i clienti e lasciando richieste complicate agli operatori umani. Esistono già molti modelli di deep learning speciali per compiti linguistici diversi.

Pertanto, non è molto sorprendente che le prime applicazioni per GPT-3 siano state qualcosa di diverso dalle attività linguistiche di uso generale.

Utilizzo di modelli linguistici per la codifica

Poco dopo che GPT-3 è stato reso disponibile tramite un'interfaccia di programmazione di un'applicazione Web beta, molti utenti hanno pubblicato esempi di utilizzo del modello linguistico per generare codice sorgente. Questi esperimenti hanno mostrato un lato inesplorato di GPT-3 e un potenziale caso d'uso per il modello del grande linguaggio.

INIZIO AI!

Ho appena usato GPT-3 per generare codice per un modello di apprendimento automatico, semplicemente descrivendo il set di dati e l'output richiesto.

Questo è l'inizio dell'IA senza codice. pic.twitter.com/AWX5mZB6SK

— Matt Shumer (@mattshumer_) 25 luglio 2020

E curiosamente, le prime due applicazioni che Microsoft, il detentore della licenza esclusiva dei modelli linguistici di OpenAI, ha creato su GPT-3 sono legate alla programmazione del computer. A maggio, Microsoft ha annunciato uno strumento basato su GPT-3 che genera query per le sue Power App. E ora sta testando le acque con Copilot.

Le reti neurali sono molto brave a trovare e suggerire modelli da grandi set di dati di addestramento. In questa luce, ha senso utilizzare GPT-3 o una sua versione perfezionata per aiutare i programmatori a trovare soluzioni nel corpus molto ampio di codice sorgente pubblicamente disponibile in GitHub.

Secondo la homepage di Codepilot, Codex è stato addestrato su "una selezione di lingua inglese e codice sorgente da fonti disponibili pubblicamente, incluso il codice in repository pubblici su GitHub".

Se gli fornisci il contesto giusto, sarà in grado di fornire un blocco di codice che assomiglia a quello che altri programmatori hanno scritto per risolvere un problema simile. E dargli commenti e descrizioni più dettagliati aumenterà le tue possibilità di ottenere un risultato ragionevole da Codepilot.

🚀 Ho appena avuto accesso a @github Copilot ed è fantastico!!! Questo mi farà risparmiare così tanto tempo!! Guarda il breve video qui sotto! #GitHubCopilot Penso che passerò più tempo a scrivere le descrizioni delle funzioni rispetto al codice stesso: D pic.twitter.com/HKXJVtGffm

— abhishek (@abhi1thakur) 30 giugno 2021

Generazione di codice e comprensione del software

Secondo il sito web, "GitHub Copilot cerca di capire [emphasis mine] il tuo intento e di generare il miglior codice possibile, ma il codice che suggerisce potrebbe non funzionare sempre o addirittura avere senso.

"Capire" potrebbe essere la parola sbagliata qui. I modelli linguistici come GPT-3 non comprendono lo scopo e la struttura del codice sorgente. Non capiscono lo scopo dei programmi. Non possono trovare nuove idee, scomporre un problema in componenti più piccoli e progettare e costruire un'applicazione nel modo in cui fanno gli ingegneri del software umano.

Per gli standard umani, la programmazione è un compito relativamente difficile (beh, lo era quando stavo imparando negli anni '90). Richiede un'attenta riflessione, logica e progettazione dell'architettura per risolvere un problema specifico. Ogni linguaggio ha i propri paradigmi e schemi di programmazione. Gli sviluppatori devono imparare a utilizzare diverse interfacce di programmazione delle applicazioni e collegarle insieme in modo efficiente. In breve, è un'abilità che dipende in gran parte dalla manipolazione dei simboli, un'area che non è il punto forte degli algoritmi di deep learning.

I creatori di Copilot riconoscono che il loro sistema di intelligenza artificiale non è in alcun modo un perfetto compagno di programmazione (non penso nemmeno che "programmazione in coppia", sia il termine giusto per questo). "GitHub Copilot in realtà non testa il codice che suggerisce, quindi il codice potrebbe non essere nemmeno compilato o eseguito", avvertono.

GitHub avverte inoltre che Copilot potrebbe suggerire "utilizzi vecchi o deprecati di librerie e lingue", che possono causare problemi di sicurezza. Ciò rende estremamente importante per gli sviluppatori rivedere a fondo il codice generato dall'intelligenza artificiale.

Quanto è importante @github e il nuovo generatore di codice basato sull'intelligenza artificiale di Copilot di @OpenAI e come si adatta alla moderna PNL?

👇 Un thread… pic.twitter.com/IyvuUb5hMU

— Dale Markowitz 🧮 (@dalequark) 30 giugno 2021

Quindi, non siamo in una fase per aspettarci che i sistemi di intelligenza artificiale automatizzino la programmazione. Ma abbinarli a umani che sanno cosa stanno facendo può sicuramente migliorare la produttività, come suggeriscono i creatori di Copilot.

E da quando Copilot è stato rilasciato al pubblico, gli sviluppatori hanno pubblicato tutti i tipi di esempi che vanno dal divertente al davvero utile.

"Se sai qualcosa su cosa chiedi a Copilot di codificare per te e hai abbastanza esperienza per ripulire il codice e correggere gli errori che introduce, può essere molto utile e farti risparmiare tempo", Matt Shumer, co-fondatore e CEO di OthersideAI, ha dichiarato a TechTalks.

#GitHubCopilot può scrivere SQL per te!

Guardalo scrivere una funzione per ottenere tutti gli utenti amministratori in un database.

Questo mi salverà SO. TANTO. TIME.@OpenAI @github pic.twitter.com/Lt2KDVCWnk

— Matt Shumer (@mattshumer_) 30 giugno 2021

Ma Shumer mette in guardia anche sulle minacce di fidarsi ciecamente del codice generato da Copilot.

"Ad esempio, mi ha fatto risparmiare tempo scrivendo codice SQL, ma ha inserito la password del database direttamente nel codice", ha detto Shumer. “Se non fossi esperto, potrei accettarlo e lasciarlo nel codice, il che creerebbe problemi di sicurezza. Ma poiché sapevo come modificare il codice, sono stato in grado di utilizzare ciò che Copilot mi ha dato come punto di partenza su cui lavorare".

Il modello di business di Copilot

Secondo me, c'è un altro motivo per cui Microsoft ha iniziato a programmare come prima applicazione per GPT-3. C'è un'enorme opportunità per tagliare i costi e realizzare profitti.

Secondo GitHub, "Se l'anteprima tecnica avrà successo, il nostro piano è di creare una versione commerciale di GitHub Copilot in futuro".

Non ci sono ancora informazioni su quanto costerà il Copilot ufficiale. Ma i salari orari per i talenti della programmazione partono da circa $ 30 e possono arrivare fino a $ 150. Anche risparmiare qualche ora di programmazione o dare un piccolo impulso alla velocità di sviluppo sarebbe probabilmente sufficiente per coprire i costi di Copilot. Pertanto, non sarebbe sorprendente se molti sviluppatori e società di sviluppo software si iscrivessero a Copilot una volta rilasciato come prodotto commerciale.

“Se mi restituisce anche solo il 10 percento del mio tempo, direi che ne vale la pena. Entro limiti ragionevoli, ovviamente", ha detto Shumer.

I modelli linguistici come GPT-3 richiedono risorse estese per l'addestramento e l'esecuzione. E devono anche essere regolarmente aggiornati e perfezionati, il che impone maggiori spese all'azienda che ospita il modello di apprendimento automatico. Pertanto, domini ad alto costo come lo sviluppo di software sarebbero un buon punto di partenza per ridurre il tempo necessario per recuperare l'investimento effettuato sulla tecnologia.

“La capacità di [Copilot] aiutarmi a utilizzare librerie e framework che non ho mai usato prima è estremamente prezioso", ha affermato Shumer. “In una delle mie demo, ad esempio, gli ho chiesto di generare una dashboard con Streamlit, e lo ha fatto perfettamente in un solo tentativo. Potrei quindi andare a modificare quella dashboard, senza bisogno di leggere alcuna documentazione. Solo questo è abbastanza prezioso da permettermi di pagarlo".

Con #GitHubCopilot, puoi generare una dashboard funzionale semplicemente dicendo all'IA cosa dovrebbe includere!

Un commento -> dashboard!

cc @OpenAI @github pic.twitter.com/1JECh6F1nb

— Matt Shumer (@mattshumer_) 30 giugno 2021

La codifica automatizzata può rivelarsi un'industria multimiliardaria. E Microsoft si sta posizionando per assumere un ruolo di primo piano in questo settore nascente, grazie alla sua portata sul mercato (tramite Visual Studio, Azure e GitHub), tasche profonde e accesso esclusivo alla tecnologia e al talento di OpenAI.

Il futuro della codifica automatizzata

Gli sviluppatori devono fare attenzione a non scambiare Copilot e altri generatori di codice basati sull'intelligenza artificiale per un compagno di programmazione di cui accetti ogni suggerimento. Come programmatore che ha lavorato con scadenze ravvicinate in diverse occasioni, so che gli sviluppatori tendono a tagliare gli angoli quando il tempo sta per scadere (l'ho fatto più di un paio di volte). E se disponi di uno strumento che ti fornisce una grossa fetta di codice funzionante in un colpo solo, sei incline a sfiorarlo solo se hai poco tempo.

D'altra parte, gli avversari potrebbero trovare modi per tenere traccia dei modelli di codifica vulnerabili nei generatori di codice di deep learning e trovare nuovi vettori di attacco contro il software generato dall'intelligenza artificiale.

Nuovi strumenti di codifica creano nuove abitudini (molte delle quali negative e insicure). Dobbiamo esplorare attentamente questo nuovo spazio e stare attenti ai possibili compromessi derivanti dall'avere agenti di intelligenza artificiale come nostri nuovi partner di codifica.

Ben Dickson è un ingegnere del software e il fondatore di TechTalks, un blog che esplora i modi in cui la tecnologia risolve e crea problemi.

Questa storia è apparsa originariamente su Bdtechtalks.com. Copyright 2021

VentureBeat

La missione di VentureBeat è quella di essere una piazza cittadina digitale per i responsabili delle decisioni tecniche per acquisire conoscenze sulla tecnologia trasformativa e sulle transazioni.

Il nostro sito fornisce informazioni essenziali sulle tecnologie e sulle strategie dei dati per guidarti nella guida delle tue organizzazioni. Ti invitiamo a diventare un membro della nostra community, per accedere a:

  • informazioni aggiornate sugli argomenti di tuo interesse
  • le nostre newsletter
  • contenuti gated leader di pensiero e accesso scontato ai nostri eventi preziosi, come Trasforma 2021: Per saperne di più
  • funzioni di rete e altro

Diventare socio