1. Video su ChatGPT

ll modo migliore per comprendere il funzionamento interno di ChatGPT che abbiamo trovato in Internet è questo video di Andrej Karpathy, ex capo di Tesla Autopilot. Spiega in dettaglio come scrivere in Python un GPT bot generativo per testi simili a Shakespeare.

 Let's build GPT: from scratch, in code, spelled out.

 

Per comprendere il componente chiave della pipeline GPT, il "transformer", consigliamo questa lezione di Pascal Poupart dell'Università di Waterloo. Il video spiega in dettaglio come funziona il componente "transformer" e quali proprietà possiede.

CS480/680 Lecture 19: Attention and Transformer Networks

2. ChatGPT nella letteratura scientifica

Non esiste ancora un buon libro su ChatGPT, il modo migliore per acquisire ulteriore comprensione è leggere questa raccolta di articoli scientifici in ordine cronologico:

1. Bengio et al, 2003, A Neural Probabilistic Language Model
Mostra una matrice condivisa C sui token di input per proiettare i token in uno spazio dimensionale (all'incirca ~30 dimensioni) in modo simile a word2vec. Poi c'è un calcolo con un vettore di feed forward e uno strato softmax che calcola la probabilità per il token successivo, che viene scelto tramite un processo di campionamento della distribuzione multinomiale.

2. Bengio et al, 2015, Neural machine translation by jointly learning to align and translate
Spiega in dettaglio una rete ricorsiva neuronale (Recursive Neural Network, RNN) di tipo Encoder-Decoder to translate from one language to another

3. OpenAI Team, 2017, Attention is all you need
Sostituisce la Recursive Neural Network di [2] con un nuovo componente di rete neurale chiamato Transformer. Descrive in dettaglio il processo di attenzione, come può essere svolto in parallelo con l'attenzione multi-testa e la necessità di mascherare il meccanismo di attenzione sulla parte del decodificatore, in modo che le informazioni dai token precedenti scorrano solo verso i token successivi e non viceversa . Descrive come sovrapporre incorporamenti posizionali ai token.

4. Alec Redford and OpenAI Team, 2018, Improving language understanding by Generative Pre Training
La parte del codificatore di [3] viene eliminata, per passare da un modello per eseguire le traduzioni a un modello che genera la probabilità per il token successivo. Nasce GPT-1. È un decodificatore a 12 livelli con 12 teste di auto-attenzione mascherate che utilizzano 768 dimensioni. Ha 117 milioni di parametri. Introduce il concetto di messa a punto supervisionata per adattare la rete a compiti come l'inferenza del linguaggio naturale, la risposta alle domande, la somiglianza semantica e la classificazione.

5. Alec Redford and OpenAI Team, 2019, Language Models are Unsupervised Multitask Learners
Questo documento introduce GPT-2 e mostra le sue capacità. Ha 1,5 miliardi di parametri. Si osserva che le reti di grandi dimensioni sono più capaci nei compiti descritti in [4].

6. OpenAI Team, luglio 2022, Language Models are Few Shot Learners
Questo documento descrive l'evoluzione da GPT-2 a GPT-3 che ora ha 175 miliardi di parametri. 96 strati con 96 teste con una dimensionalità della testa di 128 producono ciò che conosciamo come ChatGPT, attualmente disponibile su https://chat.openai.com/.

GPT3 ha una finestra di contesto di 2048 token (~ 1500 parole). Con GPT-3.5 la finestra di contesto è stata aumentata a 4096 (3000 parole di testo inglese).

Le operazioni totali di training del modello per calcolare i parametri sono fornite come 3.14E23 flop. Da questo numero, ipotizzando 10 Teraflop GPU, stimiamo che l'addestramento di GPT-3 abbia richiesto un cluster di circa 4.000 GPU calcolando a tempo pieno per 3 mesi. Introduce anche il concetto che dando 1-3 esempi (inquadrature) al modello come contesto, il modello si comporta meglio.

7. OpenAI Team, 2023, GPT-4 Technical Report
GPT-4 ha la finestra di contesto aumentata a 8192 token e ha la capacità di ricevere immagini in input. Il documento descrive cosa può fare il modello e come si comporta su diversi test comuni, ma non rivela alcun numero sulla dimensione del modello o sul tempo di addestramento necessario per calcolarlo.

8. Un'altra fonte interessante per conoscere ChatGPT è: basta chiedere a ChatGPT 3.5 come funziona! Per accedere è necessario un account Google, ma è gratuito. Nella migliore delle ipotesi, chiedi di "chatbot complessi" perché l'utilizzo di "ChatGPT" nella domanda attiva una sorta di risposta standard.

 

3. Esegui ChatGPT in locale sul tuo computer

Il miglior progetto Open Source da seguire è GPT4All. È un chatbot completo che gira localmente sul tuo computer dove è possibile selezionare tra vari modelli tra 4 miliardi e 13 miliardi di parametri. La RAM richiesta è di 16 GB per i modelli più grandi con 13 miliardi di parametri. Modelli più piccoli e più veloci nella generazione delle risposte con 7 miliardi di parametri richiedono soltanto 8 GB di RAM. Sono disponibili programmi di installazione per Windows, Linux e Mac OS X. Ogni settimana sono disponibili aggiornamenti al software o ai modelli disponibili.

Download GPT4All...

 

4. Comportamenti Emergenti

Qui abbiamo chiesto a ChatGPT 3.5, disponibile online da OpenAI, su una bella funzionalità dei chatbot: ad esempio sono in grado di tradurre in lingue che non hanno imparato o sono in grado di creare codice sorgente in diversi linguaggi informatici:

Utente> Qual è la definizione di "comportamento emergente" un fenomeno che osserviamo in chatbot complessi?

ChatGPT 3.5> Il "comportamento emergente" si riferisce a un fenomeno in cui un sistema complesso, come un chatbot, manifesta comportamenti o proprietà che non sono esplicitamente programmati o previsti dai suoi creatori. In altre parole, il comportamento emergente si manifesta quando un chatbot mostra una capacità di agire o rispondere in modi che sembrano andare oltre la sua programmazione iniziale.

Un chatbot complesso può essere progettato utilizzando algoritmi di intelligenza artificiale avanzati, come ad esempio il deep learning, che gli permettono di apprendere da grandi quantità di dati e adattarsi alle interazioni con gli utenti. Quando un chatbot di questo tipo è esposto a un ampio spettro di input e stimoli, può iniziare a sviluppare comportamenti che non sono stati specificamente programmati dai suoi sviluppatori.

Il comportamento emergente può includere la capacità di comprendere meglio il contesto, rispondere in modo più accurato o creativo, generare risposte inaspettate o adattarsi a situazioni nuove. Ad esempio, un chatbot potrebbe iniziare a utilizzare modelli di linguaggio più complessi, imparare nuove parole o frasi, o sviluppare una personalità o uno stile di comunicazione unico.

Tuttavia, è importante notare che il comportamento emergente può anche portare a risultati indesiderati o imprevisti. Un chatbot potrebbe adottare opinioni o atteggiamenti inappropriati, generare contenuti offensivi o fuorvianti, o manifestare altri comportamenti indesiderati a causa dell'apprendimento dai dati di addestramento o delle influenze esterne.

In sintesi, il comportamento emergente nei chatbot complessi si riferisce alla manifestazione di comportamenti o proprietà che vanno oltre la programmazione iniziale, in seguito all'apprendimento automatico e all'interazione con gli utenti e l'ambiente.

5. Dimensioni di GPT 3-5 rispetto alle dimensioni del cervello umano

Sappiamo per certo nel documento scientifico su GPT-3 che il numero di parametri in GPT 3.5 è di circa 175 miliardi. Il numero di parametri in una rete neurale artificiale è il numero di neuroni matematici (ogni neurone ha un parametro chiamato "bias") più il numero di connessioni tra i neuroni (i pesi nelle matrici W). Se assumiamo che la dimensionalità del modello (d=12'288 per GPT 3.5 [6]) sia il numero medio di connessioni tra i neuroni, allora risolvendo questa semplice equazione x + 12288x = 175E9, possiamo ipotizzare che GPT 3.5 ha quindi x=14,2 milioni di neuroni matematici.

Ora diventiamo audaci e sosteniamo che un neurone matematico potrebbe essere potente quanto un neurone biologico, che nessuno sa finora, supponiamo qui che almeno sembrino svolgere compiti simili.

Il cervello umano secondo Wikipedia ha circa 86 miliardi di neuroni e ogni neurone ha almeno 10.000 e fino a 100.000 sinapsi che sono connessioni tra i neuroni. Torniamo all'audacia e supponiamo che 12'000 sia vicino al numero medio delle sinapsi del cervello e che i neuroni GPT 3-5 con 12'288 connessioni siano paragonabili ai neuroni del cervello umano anche per quanto riguarda il numero medio di connessioni poiché la dimensionalità della pipeline GPT è il numero di connessioni tra i neuroni GPT.

Dopo tutte queste ipotesi, possiamo confrontare direttamente il numero di neuroni matematici in GPT 3-5 (14.2E6) e il numero di neuroni biologici nel cervello umano. Calcolando il rapporto tra i due numeri, vediamo che GPT-3.5 è circa 6000 volte più piccolo del cervello umano.

Supponiamo inoltre che ogni anno il numero di neuroni matematici in modelli linguistici di grandi dimensioni come GPT 3-5 possa essere raddoppiato ogni anno dai progressi dell'hardware e del software e che i neuroni possano essere addestrati in tempi ragionevoli sempre inferiore ad un anno in cui deve succedere il prossimo raddoppio. In uno scenario del genere entro 13 anni dovremmo essere in grado di ottenere un cervello artificiale delle dimensioni del cervello umano (log_2(6000) = 12,55).