“AMD: Il Futuro dell’IA nel Software – Un Approccio Olistico ai Coding Copilot”
AMD adotta un approccio olistico ai coding copilot per l’IA
Gli assistenti di codifica come GitHub Copilot e Codeium stanno giĂ cambiando l’ingegneria del software. Basandosi sul codice esistente e sugli input di un ingegnere, questi assistenti possono suggerire nuove linee o interi blocchi di codice, fungendo da un tipo di completamento avanzato.
A prima vista, i risultati sono affascinanti. Gli assistenti di codifica stanno già cambiando il lavoro di alcuni programmatori e trasformando il modo in cui viene insegnata la programmazione. Tuttavia, questa è la domanda a cui dobbiamo rispondere: Questo tipo di IA generativa è solo uno strumento di aiuto ingigantito, o può effettivamente portare un cambiamento sostanziale nel flusso di lavoro di uno sviluppatore?
Ad Advanced Micro Devices (AMD), progettiamo e sviluppiamo CPU, GPU e altri chip informatici. Ma gran parte di ciò che facciamo è sviluppare software per creare il software a basso livello che integra sistemi operativi e altri software dei clienti in modo trasparente con il nostro hardware. Infatti, circa la metĂ degli ingegneri AMD sono ingegneri del software, il che non è raro per un’azienda come la nostra. Naturalmente, abbiamo un forte interesse nel capire il potenziale dell’IA per il nostro processo di sviluppo del software.
Per capire dove e come l’IA può essere piĂą utile, abbiamo recentemente condotto diverse analisi approfondite su come sviluppiamo il software. Quello che abbiamo scoperto è stato sorprendente: I tipi di compiti in cui gli assistenti di codifica sono bravi – ovvero scrivere linee di codice – sono in realtĂ una parte molto piccola del lavoro dell’ingegnere del software. I nostri sviluppatori dedicano la maggior parte dei loro sforzi a una serie di compiti che includono l’apprendimento di nuovi strumenti e tecniche, la risoluzione dei problemi, il debug e il testing del software.
Speriamo di andare oltre gli assistenti individuali per ogni fase e concatenarli in una macchina autonoma di sviluppo del software – con un umano nel mezzo, naturalmente.
Anche per il compito principale dei copiloti di codifica, abbiamo scoperto che gli assistenti offrivano rendimenti decrescenti: erano molto utili per i giovani sviluppatori che lavoravano su compiti di base, ma non così utili per i senior che lavoravano su compiti specializzati.
Per utilizzare l’intelligenza artificiale in modo veramente trasformativo, abbiamo concluso, non potevamo limitarci solo ai copiloti. Dovevamo pensare in modo piĂą olistico all’intero ciclo di vita dello sviluppo del software e adattare gli strumenti piĂą utili in ciascuna fase. Sì, stiamo lavorando per perfezionare i copiloti di codifica disponibili per la nostra base di codice particolare, in modo che anche i senior li trovino piĂą utili. Ma stiamo anche adattando grandi modelli di linguaggio per svolgere altre parti dello sviluppo del software, come la revisione e l’ottimizzazione del codice e la generazione di report sui bug. E stiamo ampliando il nostro campo oltre LLM e IA generativa. Abbiamo scoperto che utilizzare IA discriminativa – IA che categorizza i contenuti anzichĂ© generarli – può essere un vantaggio nei test, in particolare nel verificare il funzionamento dei videogiochi sul nostro software e hardware.
L’autore e i suoi colleghi hanno addestrato una combinazione di IA discriminativa e generativa per giocare ai videogiochi e cercare artefatti nel modo in cui le immagini vengono renderizzate sull’hardware AMD, il che aiuta l’azienda a trovare bug nel suo codice firmware.Immagini di test: AMD; Immagini originali dei produttori di giochi.
Nel breve termine, miriamo a implementare l’IA in ogni fase del ciclo di vita dello sviluppo del software. Ci aspettiamo che questo ci dia un aumento del 25 percento della produttivitĂ nei prossimi anni. Nel lungo termine, speriamo di andare oltre gli assistenti individuali per ogni fase e concatenarli in una macchina autonoma di sviluppo del software – con un umano nel mezzo, naturalmente.
Anche mentre seguiamo questo percorso implacabile per implementare l’IA, ci rendiamo conto che dobbiamo esaminare attentamente le possibili minacce e rischi che l’uso dell’IA potrebbe introdurre. Dotati di queste informazioni, saremo in grado di utilizzare l’IA al massimo del suo potenziale. Ecco cosa abbiamo imparato finora.