0:00Bene, mi sa che che stasera dobbiamo fare un ragionamento interessante.
0:06Sì, perché tratterò un tema che mi piace, un tema che secondo me dovrebbe essere, lo dico da sempre di più, al centro della discussione dei large language model, ovvero la questione dei benchmark. Io, come ho detto una volta in tempi non sospetti durante un episodio di ZIP, come ho detto ad Enk, sono convinto che i benchmark dei modelli del linguaggio di frontiera diventeranno le ricerche scientifiche.
0:36Infatti e poi è successo, però questo non vuol dire che i benchmark di sviluppo software non abbiano una utilità in particolare perché ci sono i modelli open weight, anche perché i modelli eh di frontiera non hanno ancora sapurato tutta la possibilità di scrivere software, anche se hanno fatto dei passi avanti incredibili, per cui quel tipo di benchmark di cui ora vi sto a parlare sembrano un po' disallineati rispetto
1:06rispetto alle funzioni moderne dei dei large language modelli di frontiera, ma abbiamo anche i modelli piccoli. Ora c'è una grande spinta con Sonnet, con Aiku, con Terra, con Luna verso modelli piccoli che possono accontentare gran parte dello sviluppo software.
1:29I token sono cari, non tutti vogliono, i modelli piccoli sono più veloci dal punto di vista della produzione di token. Poi se riescono a fare il lavoro prima quello è un discorso diverso perché rispetto a un modello grande che a volte scrive meno token arriva subito alla soluzione. Non è così ovvio.
1:50Però, ecco, sicuramente nei modelli piccoli per i task non troppo difficili, il costo per esecuzione totale per arrivare al gol è è spesso più basso.
2:02E poi c'è la questione degli open weight, gli open weight anche per l'inferenza locale che fanno comunque progressi, quindi i benchmark continuano ad avere un ruolo significativo. Ora uno dei benchmark più utilizzati rispetto alla misurazione della capacità di scrivere codice, di modificare codice dei Large Language Model è un venger che si chiama Deep SWE.
2:29C'è un cane che abbaia. Un giorno vi dirò perché non mi piacciono i cani.
2:34Ehm, cos'è Deep SWE? Com'è che funzionano questi bench? per capire lo studio di cui parlerò, uno studio che getta delle ombre su alcuni risultati ottenuti su questo benchmark e secondo me sbagliando dà la maggior parte la colpa al benchmxing è un un benchmark da comprendere nel funzionamento per capire poi tutto il
3:02resto. Allora, questi benchmark funzionano così. Di solito si parte, per esempio, da un progetto open source, magari esistente, che i modelli, diciamo, anche hanno visto nel pretraining, a volte, altre volte no.
3:16Eh, si dà un repository sostanzialmente al modello, all'agente. Eh, gli si dà un una harness minimale, di solito possono solo chiamare comandi con la BH, eh, e poi gli si dice questo, gli si dà un comit specifico di questo di questo progetto e una specifica.
3:37La specifica gli dice in che modo modificare o fixare o evolvere quel software.
3:46Assieme alla specifica ci sono due metodi nascosti al modello mentre esegue il task per valutare quanto bene ha fatto. Peraltro deve passare tutti i test o passano tutti i test o il compito è stato fallito.
4:02Dicevo, ci sono due tipi di di test.
4:04Alcuni sono dei test che vengono detti fail to pass, cioè test che prima fallivano nel comit che è stato dato alla gente e che poi devono in realtà passare. Altri test si chiamano eh pass to pass, cioè erano dei test che servivano per capire se il progetto funzionava bene da alcuni punti di vista e ovviamente dopo le modifiche deve continuare il progetto a funzionare bene. Quindi, diciamo, i test pass to pass sono i test che misurano l'invarianza, cioè il progetto deve non
4:34è che implementi questa specifica, passano di test nuova specifica, eh, però hai rotto tutto il resto. Allo stesso tempo sapete bene che molti modelli fanno training specifico per passare questi test e molti modelli sembrano essere bench maxed, ovvero sembrano avere un allenamento specifico per passare questi benchmark che poi non è detto che abbia poi questo allenamento una diciamo che descriva non è detto che
5:04descriva necessariamente delle caratteristiche generiche del modello di scrivere software allo stesso tempo, va detto anche il contrario, avere dei modelli che hanno delle specializzazioni su determinati benchmark non vuol dire che questi modelli siano non in grado di di in realtà di fare compiti simili in una buona misura anche di compiti che non hanno visto mai.
5:28Comunque questo studio che cos'è che ha fatto? Ho fatto una cosa, devo dire, abbastanza interessante. Io mentre parto però, anche se, ripeto, io sono convinto che poi quello che ne hanno ricavato è perl più una lezione errata. DIP SWE mi pare che è qualche 115 test, una cosa del genere.
5:49Loro ne hanno presi una novantina e li hanno modificati in diversi modi. Alcuni testi li hanno modificati cambiando la specifica in maniera banale, tipo se un certi nomi devono essere in maiuscolo, poi dopo la modifica il modello doveva scrivere Chrome eccetera eccetera in minuscolo. o sennò se l'ordine dei range di un altro progetto doveva essere start, come in Python, poi l'hanno
6:17cambiato in un altro modo o le form il formato dei il formato delle date, cose così. In altre modifiche del test, in realtà hanno eh cambiato il comita, lasciando la specifica uguale. Questo significa però che se il progetto era diverso, la stessa specifica deve fare cose diverse perché se io c'ho una funzione in più, la specifica poi deve tenere conto di quella funzione che si
6:45si crea un una condizione di partenza diversa. In altri casi, invece, è stato modificata la specifica in maniera a volte da estendere in maniera significativa eh quello che era il compito che gli agenti dovevano effettivamente riuscire a compiere. Altre volte invece la specifica è rimasta uguale. Sono cambiati o i test fail to pass o i test pass to pass o tutti e due eccetera. E si è visto che mentre prima Allora, quali sono i
7:14modelli che sono stati utilizzati per sto test? C'è Opus 5. Ops 5.0, mi pare che c'è Astra, c'è GLM 5.3, c'è ehm Deepsic 4.1 Flash. Allora, il test che cosa fa dopo questa modifica?
7:32dice, "Vediamo se dopo la modifica dopo le modifiche che abbiamo fatto i i gli LLM sono in grado ancora di raggiungere lo stesso risultato di prima." e dicono se visto che abbiamo cambiato la specifica in un modo che non cambia sostanzialmente il compito da fare, se dopo queste modifiche alcuni modelli non passano più il test, significa che erano specializzati per questo test perché era in qualche
8:01modo o era trapelato il test stesso dentro il set di training, quindi c'era stata una contaminazione o alternativamente il reinforcement learning era specifico per questo tipo di testa. appena lo cambi un po' non funziona più, anche se magari non era non era trapelato in maniera diretta perché ci sono due modi in cui ci può essere contaminazione.
8:26Un modo è proprio, diciamo, il modello vede il test il risultato, l'altro modo è che fa reinforcement learning specialmente o anche su quei test, quindi indirettamente impara eh che deve essere in grado di di risolvere quel problema mano che il training passa. eh va avanti, imparerà a risolvere quel problema perché poi c'è il reward che fluisce al contrario, quindi è come diciamo lo stesso eh l'effetto è lo
8:56stesso, diciamo. In ogni caso c'è contaminazione. Questa è la tesi la tesi fondamentale e si vede che in effetti mentre prima della modifica delle specifiche tutti tutti i modelli stanno raggruppati in maniera abbastanza vicina tra il 70 e il 75% giù di lì. Eh, immediatamente poi c'è un crollo enorme dei modelli, in particolare open, eh, c'è chi c'è del 25 punti, 20 punti,
9:25eccetera eccetera. Invece gli altri modelli di frontiera Opus 5.
9:30Eh, Astra, se non mi sbaglio quello di Open che hanno testato è Astra o forse Sol, non me lo ricordo, però un altro modello grande, invece rimangono sullo stesso risultato. Addirittura su Opus, se non mi sbaglio, c'è addirittura un impennaccia che guadagna qualche punto, ma è dentro il rumore statistico e questo è uno dei limiti di questo benchmark perché eh alcune differenze eh eh cioè già il rumore statistico
9:59soltanto eh muove un po' le cose, però ovviamente non nella misura dei risultati che vengono trovati. Il fatto è questo, quando uno va a guardare esattamente quello che succede perché i modelli non passano più i test, scopre che le cose sono un po' più complicate di così e in realtà il benching è una delle cause almeno secondarie del risultato che non lo misurano. Perché i
10:26modelli non passano più i test? Allora, il primo eh fattore incredibile è che il modello a volte capisce la specifica, ma praticamente siccome sa di essere testato e lo verbalizza in maniera chiara nella Chain of Thots, sato e quindi pensa "Ah, ma quali test io dovrei riuscire a passare?" si affida più ai test che pensa che ci saranno nel valutatore che alla specifica stessa e quindi sbaglia. A volte perché, ragazzi, semplicemente la specifica viene
10:54modificata in un modo eh che non ha sufficienti dettagli rispetto ai test che vengono aggiunti.
11:02Per cui i modelli più grandi, siccome fanno un lavoro migliore in maniera generale e anche, secondo me, sono più scalti e si immaginano meglio quello che un valutatore potrebbe aggiungere, riescono a passare lo stesso. Ma in realtà il modello, gli altri modelli fanno il lavoro, diciamo, relativamente in maniera relativamente corretta per specifica e non riescono a a passarlo perché non immaginano poi che ci siano queste differenze. In altri casi semplicemente il compito è diventato più
11:31difficile e ci sta che se il compito è più difficile il pass rate è inferiore.
11:36Inoltre in molti casi capita che anche i modelli quelli di fron cioè più grandi non hanno più la stessa percentuale di pass che avevano prima. Per cui è chiaro che se c'è una parte di benchming, questa parte viene condivisa da tutti i modelli perché si vede che addirittura ci sono dei test in cui il modello di frontiera sbaglia due volte su su due, quindi zero su due pass, mentre invece i
12:05modelli più piccoli continuano a passare dopo la modifica. Quindi quando uno va a guardare poi di preciso quello che succede iniziano a sorgere una serie di dubbi. Sorgono dubbi ancora maggiori una volta che uno va a controllare un'altra cosa, ovvero se si va a guardare che in realtà i modelli che perdono più punti non sono quelli op sono i più piccoli.
12:29Più è piccolo il modello e più cede rispetto e questo combacia con una serie di di di questioni. Il modello più piccolo ha meno flessibilità di staccarsi a quello che si aspetta che il valutatore vuole. è meno scaltro, segue più aderisce di più a quello che si aspetta, quello che ha visto nell'inforcement learning, a volte è meno capace di contrastare i prior più più interessante, ora ci arriviamo.
12:59Per cui è una questione sostanzialmente di dimensione. Allora, perché in particolare questo misura non misura veramente le performance reali del questo drop uno può dire "Ah, prima eri 70% ora sei 50 45".
13:17Cioè tu in realtà sei un 45 perché sta venendo fuori ciò. In realtà non è così.
13:23Cioè queste modifiche eh fatte ai benchmark spesso vanno proprio eh sono proprio avverse ad essere poi ehm eh risolte dai modelli, principalmente per due motivi eh importantissimi. Alcune cose per essere diverse, per andare fuori dagli schemi, sono proprio contrari a quello che i modelli hanno visto per tutto il tempo. Per esempio, ci sono progetti open source che avevano un determinato
13:51naming e dopo quando devono affrontare il benchwork questo naming diversa diventa diverso. Invece di scrivere i nomi in un modo o nell'altro, maiuscolo, minuscolo, usano la convenzione e sbagliano perché sono più ancorati a quello che hanno visto fino a quel momento e la specifica non riesce a contrastare questi prior. La stessa cosa avviene nei range, in un certi test dove c'erano dei range, per cui tu stai misurando
14:21sostanzialmente in in molti casi quando il modello pensa al valutatore invece che al testo e quando il modello, cioè a volte proprio il modello verbalizza, sì, la specifica dice questo, però sicuramente il test vuole fare quello e sbaglia in questo modo qui. È molto interessante, no? E quando il modello riesce ad andare contro i priorlessibilità
14:45di dire sì, però qua me l'ha detto molto chiaramente, l'altro, il modello più piccolo proverà in realtà a seguire la cosa che che che ha funzionato di più per lui, ma c'è di più.
14:55Se questi modelli sono in parte benchmed questi benchmark, in realtà andare a modificare eh i benchmark che hanno sono molto simili, quasi uguali, se non per un dettaglio, ha proprio l'effetto di andare contro questo prioro, benchmark specifico, cioè questo prior benchmark che per cui è stato massimizzato e lì praticamente il modello sbaglierà
15:23perché se fosse un compito nuovo di eguale difficoltà che il modello non ha mai visto, magari ce la spunta pure benissimo, ma se tu gli hai fatto fare e tu tipo fai sempre la strada per accompagnare tuo figlio a scuola, il giorno dopo la strada è diversa. Col pilota automatico sbagli al 90% la prima volta, le prime due volte o alla prima settimana rischi che ti infili dall'altra parte. Ok? Se invece io ti dico non hai mai accompagnato tuo figlio
15:53a scuola, per la prima volta lo devi accompagnare qui dove ti faccio vedere io, allora la cosa è diversa perché stare attenta alla strada non la conosci, però sai che è una strada che non conosci e proverai a beccare le svolte giuste. Quindi la cosa veramente da capire di tutta questa storia qui è che non che i modelli non sono benched, sono tutti benchmed,
16:21ma che il drop di performance che è misurato in quello test non vuol dire che i modelli non siano in grado in realtà di fare quei compiti benissimo, ma che proprio i prior e il fatto di essere benched a volte sono il motivo per il quale non passano, mentre invece quelli grandi più scaltri passano. Allora, vi faccio un esempio lampante che fa capire come siano
16:50effettivamente benched e di come i modelli grandi sono veramente scaltri a anche non cadere nel tranello. C'è un test in cui ci sono delle espressioni, un parser di espressioni matematiche e in cui la specifica dice di aggiungere delle eccezioni, quindi tipo try catch o qualcosa del genere, solo che cambia la sintassi e poi nel test, nei test quelli
17:18nascosti, viene testato proprio se anche il formato che c'era nel benchmark originale eh continua ancora a funzionare, cioè se anche se implementa la specifica per bene il modello, come è stato scritto nel test modificato, se comunque anche per non farsi fregare dal dal verificatore, se ha anche supportato la sintassi che in realtà nel benchmark originale è quella giusta, il col test
17:46nuovo modificato non lo passa più.
17:49Quindi i modelli più piccoli dicono "Ah, vabbè, però il verificatore io mi ricordo che voleva quella sintassi là."
17:55Invece quelli più grandi che sono veramente scalti dicono "Ah, però qua attenzione, anche se io mi ricordo magari non c'è menzione esplicita di quella cosa lì, per cui non la devo aggiungere". Questo, diciamo, è proprio la pistola fumante, cioè se se riproduci una una specifica che proprio non è più nel testo, questa è la pistola fumante che chiaramente i modelli sono benched, ma sono benchxed tutti, grandi e piccoli. Il fatto è che questa cosa qui non li danneggia, cioè loro vedono
18:25questi benchmark ed è fondamentale per loro passare sti benchmark perché fa parte del reinforcement learning che fanno, ma questi sono una goccia all'oceano di tutti i test che loro fanno, di tutte le reinforcement learning che fanno e sono veramente bravi poi a scrivere il codice. Però poi ripeto, è strano il fatto che tu già hai visto questo benchmark, possibilmente quindi hai dei priorti per lo stesso benchmark. Poi io ti vado a cambiare le cose. Per esempio, come si chiama? C'è
18:54uno uno di questi di questi repository che è sicuramente il il large language model visto, come si chiama? testem, qualcosa del genere, dove si si cambiano immediatamente tipo le nomenclature, cioè quello va contro sia il prior specifico del benchwork che magari già il modello ha visto o ind direttamente o indirettamente o si va invece contro addirittura un prer anche generico, quindi che è ancora più forte, cioè che di solito ha scritto Chrome con la C
19:22maiuscola quello che è.
19:26Quindi, eh, ecco, l'importante è non leggerci eh cose che non ci sono, però vi dico di più, alla luce di queste cose qua che ci siamo detti, com'è che la gente ancora si fidi di artificial analysis?
19:40nel senso che, cioè stanno diventando una specie di riferimento per i benchmark dei modelli, cioè queste cose le avrebbero dovute scoprire loro, ma tipo all'inizio della dei quindi del loro lavoro, la loro metodologia è talmente debole, a parte il fatto che avete visto hanno fatto gli aggiustamenti in corso d'opera per non fare scontentare poi, cioè fanno aggiustam cambiano, toccano le manopole in modo che le cose, diciamo, riflettano quello che il pubblico si aspetta.
20:09Ma la cosa più grave, secondo me, è che i loro benchwork dovrebbero essere di altro tipo. Per esempio, questo studio com'è che si poteva fare meglio per capire non tanto se i modelli hanno meno memorizzato, ma che comunque, ripeto, in in alcuni testumante, in altri il meccanismo secondo me è diverso.
20:28dovevano fare, prendevano questi stessi benchmark e ne costruivano un altro centinaio con la stessa difficoltà identica e con il cuore del problema ingegneristico conservato, ma veramente diverso, in modo che non ci fosse la confusione col benchwork che già hai visto e senza negare i prioritaba in quel che la nomenclatura di quelle
20:54cose che è quella che Python ha art stop step negli iteratori così quasi come tutto tranne Matlab invece di invertire sta cosa qui. Cioè, non tranelli di questo tipo che il modello si fida di quello che sa, ma proprio fai gli altri 100 test con l'aiuto dei large language model, voglio dire, un po' di revisione umana, lo puoi fare un lavoro del genere su altri repository che esistono davvero e
21:23vedi qual è la percentuale che ora invece viene passata dai dai modelli più grandi e più piccoli di questi altri gendot test che hanno lo stesso scalfolding, lo stesso harness, che hanno lo stesso livello di difficoltà che sono problemi di tipo simile, del tutto simile a quelli che c'erano prima.
21:40Vediamo quanti ne passano ora di modelli. Era questa la la di la cosa da fare. Vediamo qual è la percentuale nuova che eh eh che viene fuori ora modello per modello. Era questa la cosa da fare. Quindi un modello che anche se conosce quei benchmark a memoria ha la capacità di risolvere quel tipo di benchmark. continua ad avere lo stesso scorro.
22:07Altri modelli che invece hanno fatto benching riescono a passare quei test solo perché li conoscono e non perché semanticamente potrebbero passarli, avranno la loro percentuale ehm [schiarire la voce] ridotta di molto, ma eviti tutta la confusione che c'è invece dei diciamo le confounding variables che c'è invece in questo studio, cioè andare contro i prior, il il test diventa difficile eh più difficile di prima o la specifica in realtà
22:37Non è sufficiente a capire poi tutti i test hidden che tu hai aggiunto, eccetera eccetera. Vabbò. Ciao