Skip to content

Commit 1bdf43b

Browse files
committed
Added NanoGpt and update website
1 parent 8d14b0b commit 1bdf43b

File tree

6 files changed

+40636
-7
lines changed

6 files changed

+40636
-7
lines changed

NanoGPT/README.md

+125
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
# Documentation
2+
3+
1. Lancement du programme
4+
2. Explication du code
5+
6+
<hr>
7+
8+
## 1. Lancement du programme
9+
10+
Entraîner le modèle :
11+
```bash
12+
py main.py --train --save_model model.pth
13+
```
14+
15+
<br/>
16+
17+
Effectuer une inférence sur le modèle:
18+
```bash
19+
py main.py --infer --load_model model.pth
20+
```
21+
22+
<br/>
23+
24+
Remplacez `model.pth` par le nom du fichier où vous voulez enregistrer/charger le modèle
25+
26+
<br/>
27+
28+
Toute une liste de paramètres supplémentaires sont précisables :
29+
30+
31+
* `--train` : Mode entraînement
32+
33+
* `--infer` : Mode inférence
34+
35+
* `--save_model SAVE_MODEL` : Sauvegarde le modèle dans le fichier spécifié
36+
37+
* `--load_model LOAD_MODEL` : Charge le modèle depuis le fichier spécifié
38+
39+
* `--batch_size BATCH_SIZE` : Nombre d'I/O que le modèle doit apprendre par batch
40+
41+
* `--block_size BLOCK_SIZE` : Longueur des séquences que le transformer doit apprendre
42+
43+
* `--max_iters MAX_ITERS` : Nombre d'itérations d'apprentissage
44+
45+
* `--eval_interval EVAL_INTERVAL` : Intervalle d'évaluation pendant l'entraînement
46+
47+
* `--learning_rate LEARNING_RATE` : Taux d'apprentissage
48+
49+
* `--eval_iters EVAL_ITERS` : Nombre d'itérations d'évaluation
50+
51+
* `--n_embd N_EMBD` : Dimension de l'espace dans lequel on projette les caractères
52+
53+
* `--n_head N_HEAD` : Nombre de têtes d'attention
54+
55+
* `--n_layer N_LAYER` : Nombre de couches
56+
57+
* `--dropout DROPOUT` : Probabilité de dropout
58+
59+
* `--head_size HEAD_SIZE` : Dimension des têtes d'attention dans laquelle sont projettés les caractères
60+
61+
<br/>
62+
63+
## 2. Explication du code
64+
65+
* _lignes 1 à 34 :_ <br>
66+
Cette première partie du code prépare les données nécessaires pour l'apprentissage du modèle.
67+
68+
<br>
69+
70+
### Classes
71+
72+
* _classe `BigramLanguageModel`_ : <br>
73+
Modèle de language basé sur des bigrammes utilisant un système de transformer.
74+
- `__init__()`: Initialise les composants du modèle (couches, blocs de transformer, tête de prédiction).
75+
- `forward()`: Effectue la propagation avant du modèle, calcule les logits des prédictions pour les caractères en fonction des entrées données.
76+
- `generate()`: Génère du texte à partir du modèle en prédisant itérativement le caractère suivant dans la séquence en fonction des caractères précédemment générés.
77+
78+
<br>
79+
80+
* _classe `Block`_ : <br>
81+
Bloc d'un modèle de transformer, composé de quatres couches.
82+
- `__init__()`: Initialise le bloc avec une couche d'attention multi-tête, une couche d'alimentation avant, et deux couches de normalisation.
83+
- `forward()`: Effectue la propagation avant du bloc en passant l'entrée à travers les deux premières couches.
84+
85+
<br>
86+
87+
* _classe `Head`_ : <br>
88+
Tête d'attention du modèle.
89+
- `__init__()`: Initialise la tête avec trois couches linéaires (clés, requêtes, valeurs).
90+
- `forward()`: Effectue la propagation avant de la tête en calculant les clés, requêtes et valeurs.
91+
92+
<br>
93+
94+
* _classe `FeedForward`_ : <br>
95+
Réseau de neurones à propagation avant utilisé dans chaque bloc du modèle.
96+
- `__init__()`: Initialise le réseau de neurones avec deux couches linéaires, une fonction d'activation ReLU et une couche de dropout.
97+
- `forward()`: Effectue la propagation avant du réseau en passant à travers chaque couche.
98+
99+
<br>
100+
101+
### Fonctions
102+
103+
* `get_batch()`: Obtient un batch de données pour l'entraînement en sélectionnant aléatoirement un offset et en séparant les données en entrées (x) et en cibles (y) de taille _block_size_.
104+
105+
* `estimate_loss()`: Calcule la perte moyenne sur un seul batch pour les deux ensembles (entraînement et validation).
106+
107+
* `train()`: Entraîne le modèle sur un nombre maximal d'itérations donné en optimisant les paramètres du modèle.
108+
109+
* *`inference()`: Effectue l'inférence avec le modèle en générant du texte à partir d'un contexte initial.
110+
111+
* `save_model()`: Sauvegarde le modèle donné dans un fichier.
112+
113+
* `load_model()`: Charge un modèle à partir d'un fichier spécifié.
114+
115+
* `parse_args()`: Récupère les arguments spécifiés lors du lancement du script (cf 1. Lancement du programme).
116+
117+
<br>
118+
119+
### Modes
120+
121+
* **Mode entraînement (`--train`)** : initialise et entraîne le modèle tout en l'évaluant périodiquement pour surveiller ses performances afin d'éviter le surapprentissage. Pensez à enregistrer le modèle avec `--save_model` si vous voulez le réutiliser plus tard.
122+
123+
<br>
124+
125+
* **Mode inférence (`--infer`)** : génère du texte à partir du modèle entraîné puis l'affiche. Attention à bien lui préciser le modèle à charger avec `--load_model`.

0 commit comments

Comments
 (0)