>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Unknown

Come Costruire e Addestrare il Tuo GPT su un Laptop Comune

La maggior parte dei tutorial sulle reti neurali oggi si riduce a due scenari. Ti viene chiesto di chiamare l'API OpenAI con un paio di righe di Python, oppure di scaricare un modello già pronto da Hugging Face e chiamare il metodo .generate(). In entrambi i casi, tutti i meccanismi interni rimangono dietro le quinte. Ottieni un risultato, ma a malapena capisci come le moltiplicazioni matriciali trasformino il testo grezzo in frasi significative.

Recentemente ho scoperto il repository llm-from-scratch dello sviluppatore angelos-p. È un workshop interattivo dove scrivi ogni componente di un modello linguistico da zero. Nessuna astrazione pesante: solo PyTorch puro, matematica chiara, e addestramento di un modello da 10 milioni di parametri sul tuo laptop in meno di un'ora.

Входной текст
    
    
┌─────────────────┐
   Tokenizer       "hello"  [20, 43, 50, 50, 53]
└────────┬────────┘
         
┌─────────────────┐
  Token Embed +    Векторы токенов + позиция
  Position Embed   (размерность n_embd)
└────────┬────────┘
         
┌─────────────────┐
  Transformer      × n_layer слоев
  Block:         
  ┌────────────┐ 
   LayerNorm   
   Self-Attn     n_head параллельных голов внимания
   + Residual  
  ├────────────┤ 
   LayerNorm   
   MLP (FFN)     расширение 4x, GELU, проекция назад
   + Residual  
  └────────────┘ 
└────────┬────────┘
         
┌─────────────────┐
   LayerNorm     
   Linear  logits│  вероятности следующего символа
└─────────────────┘

Da Dove Tutto È Iniziato

Molti hanno sentito parlare del progetto nanoGPT di Andrej Karpathy. Karpathy ha dimostrato che un'architettura GPT-2 completa con 124 milioni di parametri può stare in appena un paio di centinaia di righe di codice. Tuttavia, riprodurre il GPT-2 originale richiede ancora una discreta quantità di calcolo e tempo.

L'autore di llm-from-scratch è andato oltre. Ha rimosso tutte le ottimizzazioni di cluster non necessarie e ha adattato il codice in modo che possa essere scritto a mano in una sola serata. Il modello finale si addestra su Apple Silicon (MPS), GPU Nvidia tramite CUDA, o persino su una semplice CPU. Se non hai hardware locale, tutto funziona su Google Colab gratuito.

Cosa Contiene il Workshop

Il materiale è suddiviso in moduli passo-passo nella cartella docs/. Crei sequenzialmente tre file funzionanti: model.py, train.py e generate.py.

1. Tokenizzazione a Livello di Carattere

Quando si lavora con corpora di testo massicci, la soluzione standard è l'algoritmo BPE (Byte Pair Encoding) con un vocabolario di 50.000 token. Ma se stai addestrando una piccola rete su un dataset di 1 megabyte, BPE romperà il tuo addestramento. La maggior parte delle coppie di token apparirà solo un paio di volte in tutto il testo, e i pesi semplicemente non convergeranno per esse.

Ecco perché l'autore usa un tokenizer a livello di carattere per l'addestramento sui drammi di Shakespeare. L'alfabeto è composto da soli 65 caratteri unici. Questo vocabolario è compatto, si codifica rapidamente e dà a un piccolo modello la possibilità di catturare la grammatica e la struttura del dialogo.

2. Costruire il Transformer

Qui assembli manualmente l'architettura del decoder GPT:

  • Tabelle di embedding per caratteri e posizioni nel testo.
  • Blocco Multi-Head Self-Attention, dove il vettore di ogni carattere interagisce con il contesto attraverso query, chiavi e valori (Q, K, V).
  • Meccanismo di maschera causale che impedisce al modello di sbirciare i token futuri durante la generazione.
  • Livelli completamente connessi (MLP) con attivazione GELU e normalizzazione LayerNorm.

L'architettura viene assemblata senza magia da framework di terze parti. Puoi vedere chiaramente dove fluisce ogni tensore e in quale fase vengono aggiunte le connessioni residue.

3. Ciclo di Addestramento

Nella terza fase, scrivi la pipeline di addestramento. Include:

  • Calcolo della perdita di entropia incrociata tra i logit predetti ei caratteri successivi effettivi.
  • Ottimizzatore AdamW con regolazione del weight decay.
  • Gradient clipping per evitare esplosioni dei pesi durante l'addestramento.
  • Scheduler del learning rate con warmup e decadimento cosinusoidale.

4. Generazione del Testo e Campionamento

Il modello finito deve essere fatto parlare. Implementi un ciclo autoregressivo: prendi un seed di testo, lo passi attraverso il transformer, estrai la distribuzione di probabilità per il token successivo e lo selezioni usando la temperatura con ricerca greedy o campionamento top-k.

Configurazioni per Esperimenti

Il repository offre tre profili di modello. Puoi scegliere in base a quanto tempo libero hai.

| Profilo | Parametri | Livelli (n_ layer) | Teste (n_head) | Dimensione (n_embd) | Tempo di Addestramento (M3 Pro) | |---|---|---|---|---|---| | Tiny | ~0,5M | 2 | 2 | 128 | ~5 minuti | | Small | ~4M | 4 | 4 | 256 | ~20 minuti | | Medium | ~10M | 6 | 6 | 384 | ~45 minuti |

Tutti i profili funzionano con una lunghezza di contesto di 256 caratteri. Il profilo Tiny è ottimo per il debug rapido quando devi verificare che il codice funzioni senza errori shape mismatch. Il profilo Medium produce già prosa shakespeariana abbastanza leggibile con divisioni del dialogo tra i personaggi.

Come Eseguire il Progetto

Per la gestione dell'ambiente, l'autore consiglia il gestore di pacchetti veloce uv.

Installazione delle dipendenze e creazione di una cartella di lavoro:

# Установка uv (если еще не установлен)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Клонируем репозиторий и синхронизируем окружение
git clone https://github.com/angelos-p/llm-from-scratch
cd llm-from-scratch
uv sync
mkdir scratchpad && cd scratchpad

Se preferisci Google Colab, installare un set minimale di librerie è sufficiente:

!pip install torch numpy tqdm tiktoken

Poi prendi il file data/shakespeare.txt, apri la prima guida docs/01-tokenization.md e inizia a scrivere codice passo dopo passo.

A Chi È Destinato Questo Workshop

Il progetto piacerà a chi è stanco di articoli astratti con grafici dell'attenzione e vuole vedere codice reale. Non è richiesta una conoscenza approfondita del machine learning per completarlo. Basta sentirsi a proprio agio con la lettura della sintassi Python e la comprensione delle operazioni base sugli array.

Dopo aver completato tutte e sei le guide, ti libererai della sensazione di magia attorno ai LLM. Capirai in pratica perché i modelli hanno bisogno del warmup del learning rate, come la temperatura influenza la casualità delle risposte, e perché i piccoli modelli sono così sensibili alla dimensione del vocabolario. È un ottimo modo per trascorrere un weekend in modo produttivo per le tue conoscenze di ingegneria.

Progetti correlati