mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
99 lines
4.0 KiB
Markdown
99 lines
4.0 KiB
Markdown
# LLM Training - Data Preparation
|
|
|
|
**Queste sono le mie note dal libro molto raccomandato** [**https://www.manning.com/books/build-a-large-language-model-from-scratch**](https://www.manning.com/books/build-a-large-language-model-from-scratch) **con alcune informazioni extra.**
|
|
|
|
## Basic Information
|
|
|
|
Dovresti iniziare leggendo questo post per alcuni concetti di base che dovresti conoscere:
|
|
|
|
{{#ref}}
|
|
0.-basic-llm-concepts.md
|
|
{{#endref}}
|
|
|
|
## 1. Tokenization
|
|
|
|
> [!TIP]
|
|
> L'obiettivo di questa fase iniziale è molto semplice: **Dividere l'input in token (ids) in un modo che abbia senso**.
|
|
|
|
{{#ref}}
|
|
1.-tokenizing.md
|
|
{{#endref}}
|
|
|
|
## 2. Data Sampling
|
|
|
|
> [!TIP]
|
|
> L'obiettivo di questa seconda fase è molto semplice: **Campionare i dati di input e prepararli per la fase di addestramento solitamente separando il dataset in frasi di una lunghezza specifica e generando anche la risposta attesa.**
|
|
|
|
{{#ref}}
|
|
2.-data-sampling.md
|
|
{{#endref}}
|
|
|
|
## 3. Token Embeddings
|
|
|
|
> [!TIP]
|
|
> L'obiettivo di questa terza fase è molto semplice: **Assegnare a ciascuno dei token precedenti nel vocabolario un vettore delle dimensioni desiderate per addestrare il modello.** Ogni parola nel vocabolario sarà un punto in uno spazio di X dimensioni.\
|
|
> Nota che inizialmente la posizione di ogni parola nello spazio è semplicemente inizializzata "casualmente" e queste posizioni sono parametri addestrabili (saranno migliorati durante l'addestramento).
|
|
>
|
|
> Inoltre, durante l'embedding dei token **viene creata un'altra layer di embeddings** che rappresenta (in questo caso) la **posizione assoluta della parola nella frase di addestramento**. In questo modo, una parola in posizioni diverse nella frase avrà una rappresentazione (significato) diversa.
|
|
|
|
{{#ref}}
|
|
3.-token-embeddings.md
|
|
{{#endref}}
|
|
|
|
## 4. Attention Mechanisms
|
|
|
|
> [!TIP]
|
|
> L'obiettivo di questa quarta fase è molto semplice: **Applicare alcuni meccanismi di attenzione**. Questi saranno molti **layer ripetuti** che andranno a **catturare la relazione di una parola nel vocabolario con i suoi vicini nella frase attuale utilizzata per addestrare il LLM**.\
|
|
> Vengono utilizzati molti layer per questo, quindi molti parametri addestrabili andranno a catturare queste informazioni.
|
|
|
|
{{#ref}}
|
|
4.-attention-mechanisms.md
|
|
{{#endref}}
|
|
|
|
## 5. LLM Architecture
|
|
|
|
> [!TIP]
|
|
> L'obiettivo di questa quinta fase è molto semplice: **Sviluppare l'architettura del LLM completo**. Metti tutto insieme, applica tutti i layer e crea tutte le funzioni per generare testo o trasformare testo in ID e viceversa.
|
|
>
|
|
> Questa architettura sarà utilizzata sia per l'addestramento che per la previsione del testo dopo che è stata addestrata.
|
|
|
|
{{#ref}}
|
|
5.-llm-architecture.md
|
|
{{#endref}}
|
|
|
|
## 6. Pre-training & Loading models
|
|
|
|
> [!TIP]
|
|
> L'obiettivo di questa sesta fase è molto semplice: **Addestrare il modello da zero**. Per questo verrà utilizzata l'architettura LLM precedente con alcuni cicli sui dataset utilizzando le funzioni di perdita e l'ottimizzatore definiti per addestrare tutti i parametri del modello.
|
|
|
|
{{#ref}}
|
|
6.-pre-training-and-loading-models.md
|
|
{{#endref}}
|
|
|
|
## 7.0. LoRA Improvements in fine-tuning
|
|
|
|
> [!TIP]
|
|
> L'uso di **LoRA riduce notevolmente il calcolo** necessario per **ottimizzare** modelli già addestrati.
|
|
|
|
{{#ref}}
|
|
7.0.-lora-improvements-in-fine-tuning.md
|
|
{{#endref}}
|
|
|
|
## 7.1. Fine-Tuning for Classification
|
|
|
|
> [!TIP]
|
|
> L'obiettivo di questa sezione è mostrare come ottimizzare un modello già pre-addestrato in modo che, invece di generare nuovo testo, il LLM fornisca le **probabilità che il testo fornito venga categorizzato in ciascuna delle categorie date** (come se un testo fosse spam o meno).
|
|
|
|
{{#ref}}
|
|
7.1.-fine-tuning-for-classification.md
|
|
{{#endref}}
|
|
|
|
## 7.2. Fine-Tuning to follow instructions
|
|
|
|
> [!TIP]
|
|
> L'obiettivo di questa sezione è mostrare come **ottimizzare un modello già pre-addestrato per seguire istruzioni** piuttosto che semplicemente generare testo, ad esempio, rispondendo a compiti come un chatbot.
|
|
|
|
{{#ref}}
|
|
7.2.-fine-tuning-to-follow-instructions.md
|
|
{{#endref}}
|