.. | ||
0.-basic-llm-concepts.md | ||
1.-tokenizing.md | ||
3.-token-embeddings.md | ||
4.-attention-mechanisms.md | ||
5.-llm-architecture.md | ||
7.0.-lora-improvements-in-fine-tuning.md | ||
7.2.-fine-tuning-to-follow-instructions.md | ||
README.md |
LLM Training - Data Preparation
Ce sont mes notes du livre très recommandé https://www.manning.com/books/build-a-large-language-model-from-scratch avec quelques informations supplémentaires.
Basic Information
Vous devriez commencer par lire ce post pour quelques concepts de base que vous devez connaître :
{% content-ref url="0.-basic-llm-concepts.md" %} 0.-basic-llm-concepts.md {% endcontent-ref %}
1. Tokenization
{% hint style="success" %} L'objectif de cette phase initiale est très simple : Diviser l'entrée en tokens (ids) d'une manière qui a du sens. {% endhint %}
{% content-ref url="1.-tokenizing.md" %} 1.-tokenizing.md {% endcontent-ref %}
2. Data Sampling
{% hint style="success" %} L'objectif de cette deuxième phase est très simple : Échantillonner les données d'entrée et les préparer pour la phase d'entraînement, généralement en séparant le jeu de données en phrases d'une longueur spécifique et en générant également la réponse attendue. {% endhint %}
{% content-ref url="2.-data-sampling.md" %} 2.-data-sampling.md {% endcontent-ref %}
3. Token Embeddings
{% hint style="success" %}
L'objectif de cette troisième phase est très simple : Attribuer à chacun des tokens précédents dans le vocabulaire un vecteur des dimensions souhaitées pour entraîner le modèle. Chaque mot dans le vocabulaire sera un point dans un espace de X dimensions.
Notez qu'initialement, la position de chaque mot dans l'espace est juste initialisée "aléatoirement" et ces positions sont des paramètres entraînables (seront améliorés pendant l'entraînement).
De plus, pendant l'embedding des tokens, une autre couche d'embeddings est créée qui représente (dans ce cas) la position absolue du mot dans la phrase d'entraînement. De cette manière, un mot à différentes positions dans la phrase aura une représentation (signification) différente. {% endhint %}
{% content-ref url="3.-token-embeddings.md" %} 3.-token-embeddings.md {% endcontent-ref %}
4. Attention Mechanisms
{% hint style="success" %}
L'objectif de cette quatrième phase est très simple : Appliquer certains mécanismes d'attention. Ceux-ci vont être beaucoup de couches répétées qui vont capturer la relation d'un mot dans le vocabulaire avec ses voisins dans la phrase actuelle utilisée pour entraîner le LLM.
Beaucoup de couches sont utilisées pour cela, donc beaucoup de paramètres entraînables vont capturer cette information.
{% endhint %}
{% content-ref url="4.-attention-mechanisms.md" %} 4.-attention-mechanisms.md {% endcontent-ref %}
5. LLM Architecture
{% hint style="success" %} L'objectif de cette cinquième phase est très simple : Développer l'architecture du LLM complet. Mettre tout ensemble, appliquer toutes les couches et créer toutes les fonctions pour générer du texte ou transformer du texte en IDs et vice versa.
Cette architecture sera utilisée pour l'entraînement et la prédiction de texte après qu'il ait été entraîné. {% endhint %}
{% content-ref url="5.-llm-architecture.md" %} 5.-llm-architecture.md {% endcontent-ref %}
6. Pre-training & Loading models
{% hint style="success" %} L'objectif de cette sixième phase est très simple : Entraîner le modèle depuis zéro. Pour cela, l'architecture LLM précédente sera utilisée avec quelques boucles parcourant les jeux de données en utilisant les fonctions de perte et l'optimiseur définis pour entraîner tous les paramètres du modèle. {% endhint %}
{% content-ref url="6.-pre-training-and-loading-models.md" %} 6.-pre-training-and-loading-models.md {% endcontent-ref %}
7.0. LoRA Improvements in fine-tuning
{% hint style="success" %} L'utilisation de LoRA réduit beaucoup le calcul nécessaire pour affiner les modèles déjà entraînés. {% endhint %}
{% content-ref url="7.0.-lora-improvements-in-fine-tuning.md" %} 7.0.-lora-improvements-in-fine-tuning.md {% endcontent-ref %}
7.1. Fine-Tuning for Classification
{% hint style="success" %} L'objectif de cette section est de montrer comment affiner un modèle déjà pré-entraîné afin qu'au lieu de générer un nouveau texte, le LLM donnera les probabilités que le texte donné soit catégorisé dans chacune des catégories données (comme si un texte est un spam ou non). {% endhint %}
{% content-ref url="7.1.-fine-tuning-for-classification.md" %} 7.1.-fine-tuning-for-classification.md {% endcontent-ref %}
7.2. Fine-Tuning to follow instructions
{% hint style="success" %} L'objectif de cette section est de montrer comment affiner un modèle déjà pré-entraîné pour suivre des instructions plutôt que de simplement générer du texte, par exemple, répondre à des tâches en tant que chatbot. {% endhint %}
{% content-ref url="7.2.-fine-tuning-to-follow-instructions.md" %} 7.2.-fine-tuning-to-follow-instructions.md {% endcontent-ref %}