https://github.com/francomano/mygpt2
My GPT2 implementation from scratch
https://github.com/francomano/mygpt2
from-scratch gpt-2 nlp pytorch
Last synced: about 1 month ago
JSON representation
My GPT2 implementation from scratch
- Host: GitHub
- URL: https://github.com/francomano/mygpt2
- Owner: francomano
- Created: 2025-04-21T23:06:20.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-22T14:29:10.000Z (about 1 year ago)
- Last Synced: 2025-04-22T15:38:13.241Z (about 1 year ago)
- Topics: from-scratch, gpt-2, nlp, pytorch
- Language: Jupyter Notebook
- Homepage: https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
- Size: 42 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Mini GPT-2 (char-level) in PyTorch
Implementazione minimale di GPT-2 in PyTorch, per scopi didattici. Include attenzione causale, MLP e blocchi Transformer. Funziona a livello di caratteri.
## Chatbot nel Notebook
Questo progetto implementa un modello GPT-2 a livello di carattere in PyTorch, che può essere utilizzato come chatbot in un notebook interattivo. L'utente può scrivere un input e il modello risponde generando un testo di continuità basato sull'input fornito.
### Tecniche di Ottimizzazione Utilizzate
Durante il processo di addestramento e inferenza sono stati implementati vari miglioramenti per ottimizzare il modello e le prestazioni:
1. **Precisione Mista (Mixed Precision)**:
La precisione mista è stata utilizzata durante il training e l'inferenza per accelerare i calcoli e ridurre l'utilizzo della memoria. PyTorch supporta la precisione mista tramite `torch.cuda.amp.autocast()`, che aiuta a velocizzare l'elaborazione senza compromettere troppo la qualità dei risultati.
2. **Clip Gradienti**:
Durante il training, il clipping dei gradienti è stato applicato per evitare il problema dei gradienti esplosivi. Questo è particolarmente utile per i modelli con molteplici parametri, come i Transformer.
3. **Scheduling del Tasso di Apprendimento (Learning Rate Scheduling)**:
Un scheduler per il tasso di apprendimento è stato utilizzato per ridurre il tasso di apprendimento durante il training, migliorando la stabilità e l'efficacia dell'ottimizzazione.
4. **Warm-up del Tasso di Apprendimento**:
Un periodo di warm-up per il tasso di apprendimento è stato implementato all'inizio del training per permettere al modello di adattarsi gradualmente, migliorando la convergenza nelle prime fasi del training.
5. **Early Stopping con Salvataggio del Miglior Modello**:
L'addestramento si ferma se non si osserva un miglioramento nelle metriche di validazione, e il modello con la miglior performance viene salvato per evitare l'overfitting.
### Utilizzo del Chatbot
Il chatbot è implementato nel notebook come segue:
1. **Esegui il Codice di Setup**: Inizializza il modello, le variabili e i dizionari necessari per la tokenizzazione.
2. **Inserisci un Messaggio**: L'utente può digitare una domanda o una frase nel campo di input.
3. **Generazione della Risposta**: Il modello genererà una risposta basata sull'input dell'utente.
4. **Risposte Iterative**: Il chatbot continua a rispondere alle nuove domande finché non viene interrotto.