{"id":27641252,"url":"https://github.com/francomano/mygpt2","last_synced_at":"2026-04-29T00:32:27.519Z","repository":{"id":289294602,"uuid":"970370169","full_name":"francomano/myGPT2","owner":"francomano","description":"My GPT2 implementation from scratch","archived":false,"fork":false,"pushed_at":"2025-04-22T14:29:10.000Z","size":43,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-22T15:38:13.241Z","etag":null,"topics":["from-scratch","gpt-2","nlp","pytorch"],"latest_commit_sha":null,"homepage":"https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/francomano.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-21T23:06:20.000Z","updated_at":"2025-04-22T14:29:14.000Z","dependencies_parsed_at":"2025-04-22T15:50:58.126Z","dependency_job_id":null,"html_url":"https://github.com/francomano/myGPT2","commit_stats":null,"previous_names":["francomano/mygpt2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/francomano%2FmyGPT2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/francomano%2FmyGPT2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/francomano%2FmyGPT2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/francomano%2FmyGPT2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/francomano","download_url":"https://codeload.github.com/francomano/myGPT2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250535031,"owners_count":21446503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["from-scratch","gpt-2","nlp","pytorch"],"created_at":"2025-04-23T23:41:55.189Z","updated_at":"2026-04-29T00:32:27.486Z","avatar_url":"https://github.com/francomano.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mini GPT-2 (char-level) in PyTorch\n\nImplementazione minimale di GPT-2 in PyTorch, per scopi didattici. Include attenzione causale, MLP e blocchi Transformer. Funziona a livello di caratteri.\n\n## Chatbot nel Notebook\n\nQuesto 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.\n\n### Tecniche di Ottimizzazione Utilizzate\n\nDurante il processo di addestramento e inferenza sono stati implementati vari miglioramenti per ottimizzare il modello e le prestazioni:\n\n1. **Precisione Mista (Mixed Precision)**:\n   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.\n\n2. **Clip Gradienti**:\n   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.\n\n3. **Scheduling del Tasso di Apprendimento (Learning Rate Scheduling)**:\n   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.\n\n4. **Warm-up del Tasso di Apprendimento**:\n   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.\n\n5. **Early Stopping con Salvataggio del Miglior Modello**:\n   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.\n\n### Utilizzo del Chatbot\n\nIl chatbot è implementato nel notebook come segue:\n\n1. **Esegui il Codice di Setup**: Inizializza il modello, le variabili e i dizionari necessari per la tokenizzazione.\n2. **Inserisci un Messaggio**: L'utente può digitare una domanda o una frase nel campo di input.\n3. **Generazione della Risposta**: Il modello genererà una risposta basata sull'input dell'utente.\n4. **Risposte Iterative**: Il chatbot continua a rispondere alle nuove domande finché non viene interrotto.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrancomano%2Fmygpt2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrancomano%2Fmygpt2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrancomano%2Fmygpt2/lists"}