Programmatori nell’era dei modelli di grandi dimensioni

Programmatori e modelli di grandi dimensioni

Il seguente video mostra un frammento del flusso di lavoro quotidiano dello sviluppatore di Apache SeaTunnel, aiutato da Co-Pilot. Se ancora non hai abbracciato strumenti come Co-Pilot, ChatGPT o modelli di grandi dimensioni privati per l’assistenza allo sviluppo, potresti trovarti rapidamente superato dal settore nei prossimi cinque anni. Coloro che sono capaci di sfruttare la codifica con intelligenza artificiale possono accelerare la velocità di sviluppo dieci volte rispetto a coloro che non possiedono questa competenza. Questo non è un esagerazione: dopo aver letto questo, avrai probabilmente una prospettiva completamente nuova su come l’AIGC migliora l’efficienza dello sviluppo.

Interrompere la Formazione Tradizionale dei Programmatori Junior con Modelli di Grandi Dimensioni: Valorizzando le Competenze e l’Esperienza

In passato, ai programmatori junior venivano assegnati compiti dai mentori, venivano insegnati approcci di base e poi venivano guidati e corretti nella scrittura del codice. Imparavano dall’esperienza e dalla guida, acquisendo gradualmente competenza.

Tuttavia, l’arrivo di modelli di grandi dimensioni ha completamente trasformato questo processo. I modelli di grandi dimensioni possiedono una vasta conoscenza e persino alcune abilità rudimentali di ragionamento. Hanno svolto innumerevoli pratiche, apprendendo vari codici e definizioni aziendali all’interno di un’azienda. Gli scenari che hanno affrontato superano di gran lunga quelli affrontati dai mentori ai loro tempi. Forniscono risposte potenziali in base alle esigenze e agli obiettivi degli sviluppatori.

È come avere a disposizione un “mentore” che tutto sa, in grado di generare istantaneamente codice per il tuo riferimento e apprendimento. Dopo aver appreso e apportato modifiche, un programmatore junior può presentare un codice che supera il proprio livello di competenza individuale, pronto per la revisione da parte dei pari.

Allora, perché non utilizzare modelli di grandi dimensioni per aumentare la nostra efficienza nello sviluppo?

Come Utilizzare Modelli di Grandi Dimensioni per la Programmazione Assistita?

Gli strumenti comuni attualmente includono ChatGPT, Co-Pilot e modelli di grandi dimensioni privati.

Metodi diversi sono applicabili a seconda dello scenario di programmazione:

È evidente che gli esseri umani sono più adatti per l’architettura sfidante e innovativa o per il codice di nuovi scenari aziendali. Per algoritmi riutilizzati o simili, l’uso di Co-Pilot può migliorare rapidamente l’efficienza. ChatGPT può essere impiegato per generare codice in scenari simili con modifiche minori. I modelli di grandi dimensioni privati sono adatti a scenari in cui la sicurezza dei dati e del codice è cruciale e in cui conta la familiarità del modello con le tue conoscenze aziendali, richiedendo un adattamento.

Si potrebbe sostenere che non tutte le aziende possono permettersi modelli di grandi dimensioni privati. Tuttavia, questo è un fraintendimento. Non è necessario addestrare un nuovo modello di grandi dimensioni privato. Per la maggior parte delle aziende, ottimizzare (adattare) un modello di grandi dimensioni open-source esistente per comprendere il contesto aziendale è sufficiente. Questo processo richiede solo 1-2 schede grafiche (ad esempio, 3090/4090) e alcune ore di configurazione.

L’utilizzo di modelli di grandi dimensioni privati può facilitare direttamente quanto segue:

  • Accesso facile alle funzionalità software desiderate.
  • Navigazione efficiente di manuali utente complessi e regole.
  • Programmazione assistita, Txt2SQL, miglioramento dell’efficienza dei programmatori di dati.

Sfruttare modelli di grandi dimensioni privati per l’assistenza alla programmazione è più vicino di quanto pensi. Se sei ancora scettico riguardo all’era dell’automazione guidata da AIGC nella programmazione, considera l’esempio di seguito su come un progetto open-source utilizza l’AIGC per migliorare l’efficienza dello sviluppo.

Esempio di Programmazione Automatizzata Guidata da Modelli di Grandi Dimensioni: Apache SeaTunnel

La visione di Apache SeaTunnel è “Collegare Tutto, Sincronizzare Velocemente come un Fulmine.” Questo obiettivo ambizioso mira a collegare tutte le fonti di dati presenti sul mercato, inclusi database, SaaS, middleware e BinLogs, raggiungendo una sincronizzazione ottimale. Questo è un compito impossibile per qualsiasi singola azienda e persino gli esseri umani faticano a realizzarlo in mezzo a migliaia di opzioni di software SaaS e interfacce in continua evoluzione. Quindi, come ha progettato il team principale dietro Apache SeaTunnel un tale software nell’era dell’intelligenza artificiale? La struttura generale è rappresentata nel seguente diagramma:

Innanzitutto, il motore computazionale principale è appositamente progettato per la sincronizzazione. A differenza di Flink o Spark, si concentra sull’utilizzo efficiente della memoria, della CPU e della larghezza di banda e garantisce la coerenza dei dati, aspetti che mancano di benchmark esistenti. Di conseguenza, la maggior parte del codice non è preso in prestito ma sviluppato direttamente dagli ingegneri principali, con il continuo apporto e il perfezionamento di esperti di tutto il mondo per stare al passo con la tecnologia all’avanguardia.

In secondo luogo, i connettori del database principale, come l’Iceberg Connector, sono implementazioni complesse che privilegiano sia l’accuratezza che l’efficienza elevata di trasmissione dei dati. Anche se questi si basano principalmente sull’esperienza umana, possono sfruttare codici esistenti e pratiche basate su cloud, con Co-Pilot come strumento di supporto. I modelli di grandi dimensioni assistono completando algoritmi convenzionali e riutilizzando frammenti di codice, come dimostrato nel video introduttivo.

Dinanzi a un vasto mare di interfacce SaaS – più di 5000 solo nel settore MarTech – l’integrazione manuale risulta impraticabile. Il team principale di SeaTunnel ha ideato una strategia: astrazione di oltre una dozzina di interfacce che gli esseri umani avevano precedentemente codificato, collaborando con ChatGPT per trasformarle in due interfacce capaci di produrre codice elegante. ChatGPT è in grado di comprendere la documentazione delle interfacce SaaS e generare direttamente frammenti di codice pertinenti. All’interno di SeaTunnel, questa funzionalità è nota come “Compatibilità AI”, facilitando la collaborazione tra AI e umani. È una sorta di “riconciliazione” tra programmatori e AI, garantendo che ognuno contribuisca dove l’altro eccelle.

Questa funzionalità è stata rilasciata in Apache SeaTunnel 2.3.1. Tuttavia, essendo un progetto open-source in continua evoluzione, ha ancora spazio per miglioramenti. Date le caratteristiche aperte del codice, è probabile che più appassionati lo perfezionino e automatizzino questa funzionalità. Ad esempio, ho sentito parlare di uno sviluppatore che sta pianificando di creare un GPT Coder che monitora i problemi di SaaS su GitHub, utilizza ChatGPT per generare codice e invia automaticamente richieste di pull – portando la collaborazione tra umani e bot all’estremo.

Sfide della programmazione automatizzata guidata da modelli di grandi dimensioni

Anche se ChatGPT, Co-Pilot e strumenti simili migliorano la programmazione, non sono invincibili. Ci sono diverse sfide da considerare quando si genera codice con modelli di grandi dimensioni:

  • Preoccupazioni per l’accuratezza.
  • Incapacità di condurre revisioni del codice.
  • Capacità limitata per il testing automatizzato.
  • Nessuna responsabilità.

I modelli di grandi dimensioni possono ancora commettere errori, e questo probabilmente rimarrà la norma per un po’ di tempo – anche ChatGPT4 potrebbe produrre codice con un’accuratezza del 90%. Pertanto, è fondamentale semplificare il processo di generazione del codice, poiché generare codice errato è un potenziale pericolo. Dopo una rapida generazione del codice da parte di modelli di grandi dimensioni, la revisione del codice umano potrebbe faticare a tenere il passo, poiché le macchine non possono verificare se il codice finale implementa correttamente la logica aziendale. Tentare di revisionare il codice utilizzando modelli di grandi dimensioni rivela una serie di miglioramenti apparentemente importanti ma alla fine banali, oscurando la valutazione della correttezza logica.

Inoltre, il testing automatizzato e la generazione di casi di test rimangono ancora aspetti complessi per i modelli di grandi dimensioni. Mentre TestPilot è attivamente discusso in ambito accademico (vedi gli articoli di Cornell sull’argomento), la sua applicazione a livello di ingegneria rimane distante.

Infine, c’è il problema della responsabilità, una sfida filosofica piuttosto che tecnica. Anche con un tasso di accuratezza del 90% per ChatGPT, figuriamoci con un ipotetico 99,9999%, lo si può fidare di calcolare automaticamente la retribuzione di tutta l’azienda e avviare trasferimenti salariali diretti con le banche? Se sorgesse un problema, chi ne sarebbe responsabile? Non tutti i problemi aziendali possono essere risolti con la tecnologia, e lo stesso vale per i modelli di grandi dimensioni.

Prospettive future

Attualmente ci troviamo nelle prime fasi della programmazione automatizzata guidata da modelli di grandi dimensioni. Molti sviluppatori stanno ancora sperimentando con Co-Pilot e ChatGPT, e la maggior parte dei programmatori non ha ancora utilizzato modelli di grandi dimensioni privati per aumentare l’efficienza della codifica in base al contesto aziendale. Tuttavia, nei prossimi 3-5 anni, l’assistenza automatizzata nella programmazione diventerà senza dubbio uno strumento indispensabile per la nostra generazione di sviluppatori:

  • I modelli di base di grandi dimensioni ridurranno il divario con ChatGPT, migliorando l’usabilità.
  • I modelli di grandi dimensioni open-source miglioreranno l’accuratezza e le prestazioni, portando a un miglior ROI per un numero maggiore di aziende che adottano modelli di grandi dimensioni privati.
  • La soglia per l’automazione guidata da modelli di grandi dimensioni diminuirà, con l’emergere di più strumenti per la formazione di modelli di grandi dimensioni democratizzati, al di là di Apache DolphinScheduler.
  • La consapevolezza della programmazione automatizzata guidata da modelli di grandi dimensioni aumenterà tra i responsabili tecnici, portando ad adattamenti nei processi di gestione tecnica.
  • In mezzo al ciclo economico attuale, sfruttare modelli di grandi dimensioni per migliorare l’efficienza diventa imperativo.

Pertanto, nei prossimi anni, se il tuo processo di sviluppo rimane limitato alle operazioni CRUD e non riesci a sfruttare i modelli di grandi dimensioni per amplificare la tua competenza e comprensione aziendale di 10 o 100 volte, potresti non dover aspettare fino ai 35 anni per essere sostituito da programmatori esperti nella programmazione con modelli di grandi dimensioni. Una volta che avranno scalato di un fattore di 10, potresti trovarti tra i nove che sono stati lasciati indietro.

Anche se può sembrare un po’ allarmista, il trend verso l’automazione guidata da modelli di grandi dimensioni nella programmazione è una forza inarrestabile. Sono solo un esploratore novizio nel campo della programmazione automatizzata guidata da modelli di grandi dimensioni, e credo che molti responsabili tecnici e architetti si uniranno all’onda dell’automazione guidata da modelli di grandi dimensioni, iterando e ottimizzando continuamente la relazione tra esseri umani e modelli di grandi dimensioni all’interno del campo dello sviluppo. Alla fine, questa sinergia renderà programmatori, AI e processi di sviluppo tecnico più efficaci nel servire le imprese.