Coding the Blues
Il codice e gli esperimenti
Il codice e gli esperimenti
Lo script 'genera2.py' genera secondo il modello 'google/gemma-3.4b-it' (4 miliardi di parametri) scaricato in macchina da Hugging Face, i successori di una frase prodotta dall'unione di un contesto fornito da un file in input con un prompt utente. Opzionalmente viene generato il vettore di contesto finale. Lo script è documentato in 'Analisi tecnica e funzionale di genera2.py'. Lo script è totalmente parametrico e consente di definire il modello, dei file di contesto, introdurre un prompt, generare il vettore contestuale e infine il numero desiderato di generazioni specificando per ogni run il numero di token, e la modalità (alte temperatura e bassa temperatura). Nel caso della bassa temperatura è possibile specificare il rapporto tra beams (alternative seguite dal modello) e le effettive generazioni prodotte. Sono riportate pruduzioni nei casi di contesto con tono negativo e positivo ad alta e bassa temperatura e vettori contestuali sempre ad alta e bassa temperatura. Le generazioni sono brevi (15 token) per limitare i tempi di esecuzione. Produzioni più lunghe (centinaia di token) sarebbero molto più significative ma al momento non sono state prodotte.
L'inferenza avviene in locale su un normale PC con 16GB di RAM senza schede grafiche su una macchina virtuale Ubuntu in ambiente Windows. Le condizioni sperimentali (incluso il tempo di esecuzione) sono riportate su ogni report.
Le allucinazioni (o stronzate come dice qualcuno) sono nella natura profonda dei Modelli Linguistici e dipendono dal calcolo della vicinanza del vettore contestuale con quelli dei termini del vocabolario del modello, gli embedding costruiti sulla base delle casistiche effettuate sul corpus di addestramento. Secondo questa teoria le stronzate sono la norma e le risposte "buone" sono le eccezioni, ma il loro rapporto varia in funzione della grandezza del modello: tanto più il modello è grande tanto più è in grado di generare risposte plausibili.
In un esempio con il modello GP-oss-20B da 20 miliardi di parametri utilizzato in locale ma con una particolare applicazione open source che ne consente l'uso malgrado le sue dimensioni: Ollama. Si riporta un dialogo, in cui il modello si incaponisce sulla fonte del fiume Po e non vuole sentire ragioni di sorta, sostenendo che nasce dalla Dora Baltea e non si sa da quale altro torrente.
La morale? Tutti i modelli, anche quelli con un trilione di parametri, sparano sempre stronzate, per come sono fatti, ma quelle di quelli grossi sono statisticamente più aderenti alla realtà dei fatti. Talvolta, come si narra nell'articolo di "Volere la luna", producono risultati esilaranti. Quando meno te lo aspetti, la minchiata colossale emerge. Siccome può essere pericoloso, se non altro per le figuracce che si possono rimediare, verificare, verificare, verificare sempre e ancora verificare.
Questo è l'esperimento più interessante di tutti, che dimostra come la Chiromante Stocastica sia in grado di predire il tono di una conversazione. Del resto non può farne a meno, se vuole veramente indovinare il termine più adatto a far da successore.
Nel nostro caso, parliamo del tono che salta fuori quando si usa il prompt "Ti è piaciuto il ragù?", quando questa frase completa contesti di tono decisamente diverso, uno negativo e l'altro positivo. Qui, chi gioca un ruolo veramente importante è l'ultimo termine del prompt, in questo caso il token "?" (l'ultimo carattere del prompt. Qui il transformer "accumula" il significato di tutto quello che viene prima (dal livello basso - grammaticale - a quello più alto - appunto il "tono del discorso") in un vettore, in questo caso di 2560 numeri, cosiddetto contestuale. E' il risultato della complessa "digestione" di stile "bovino", a molti livelli, dell'iniziale vettore di embedding del termine stesso. Questo vettore colloca l'intera sequenza (contesto + prompt) in uno spazio semantico a 2560 dimensioni, in una posizione intorno alla quale il transformer del modello cerca come successore uno tra quelli del vocabolario che abbia un significato "simile".
Sotto vediamo due vettori contestuali di "?", calcolati dal nostro script genera2.py, nei due contesti, quello negativo e quello positivo, prima citati.
Secondo la psicologia del linguaggio, i significati espressi dagli uomini si collocano in spazi semantici dove le dimensioni importanti sono poche. Nel nostro caso, abbiamo chiesto a Gemini di analizzarle confrontando i due casi. Il tutto è riportato nel dialogo 'Analisi comparata dimensioni semantiche per contesto positivo e negativo'.
In base ai risultati, meritevoli di ulteriori approfondimenti, non possiamo che raccomandare, di nuovo, di usare, nei dialoghi con l'Intelligenza Artificiale, toni neutri e non emotivi, perché la Chiromante nella sua tenda digitale è in grado di capirli benissimo, e di catalogarci di conseguenza. Essere neutri fa parte di una forma di difesa usatissima in natura e dai servizi segreti di tutto il mondo: il mimetismo sociale, come fanno i polpi in mare con quanto li circonda.