NanoGPT

Vous trouverez ci-dessous les instructions et détails sur l’application de NanoGPT. le but de cette application est de génerer automatiquement du texte “à la manière de”. Dans notre exemple le programme genère des textes ressemblants à des oeuvres de Shakespeare.

Installation

Pour installer l’application, commencez par copier le dépot du livre ([AI-book sur github][ia-gh]), soit en recupérant l’archive zip depuis github, soit à l’aide de l’outil git:

git clone https://github.com/iridia-ulb/AI-book

Puis, accedez au dossier:

cd NanoGPT

Après avoir installé python et poetry, rendez vous dans ce dossier et installez les dépendances du projet:

poetry install

Utilisation

Pour lancer un entrainement avec le corpus de Shakespeare il suffit de lancer, par exemple, avec une block_size de 512 et 10 000 itérations:

poetry run python main.py --train --save_model my_new_model.pth --block_size 512 --eval_iters 10000

Il est aussi possible de changer le corpus d’entrainement avec le paramètre --input (par défaut celui-ci le programme prend le fichier input.txt contenant le corpus de Shakespeare).

Par la suite, une fois entrainé, pour tester votre modèle:

poetry run python main.py --infer --load_model my_new_model.pth --block_size 512

Veillez à bien sélectionner les mêmes paramètres lors de l’entrainement et de l’inférence (ici par exemple la block_size)

Toute une liste de paramètres supplémentaires sont configurables :

  • --train : Mode entraînement

  • --infer : Mode inférence

  • --input : fichier d’entrée de corpus d’entrainement

  • --save_model SAVE_MODEL : Sauvegarde le modèle dans le fichier spécifié

  • --load_model LOAD_MODEL : Charge le modèle depuis le fichier spécifié

  • --batch_size BATCH_SIZE : Nombre d’I/O que le modèle doit apprendre par batch

  • --block_size BLOCK_SIZE : Longueur des séquences que le transformer doit apprendre

  • --max_iters MAX_ITERS : Nombre d’itérations d’apprentissage

  • --eval_interval EVAL_INTERVAL : Intervalle d’évaluation pendant l’entraînement

  • --learning_rate LEARNING_RATE : Taux d’apprentissage

  • --eval_iters EVAL_ITERS : Nombre d’itérations d’évaluation

  • --n_embd N_EMBD : Dimension de l’espace dans lequel on projette les caractères

  • --n_head N_HEAD : Nombre de têtes d’attention

  • --n_layer N_LAYER : Nombre de couches

  • --dropout DROPOUT : Probabilité de dropout

En résumé:

usage: main.py [-h] [--train] [--infer] [--save_model SAVE_MODEL] [--load_model LOAD_MODEL] [--input INPUT] [--batch_size BATCH_SIZE]
               [--block_size BLOCK_SIZE] [--max_iters MAX_ITERS] [--eval_interval EVAL_INTERVAL] [--learning_rate LEARNING_RATE]
               [--eval_iters EVAL_ITERS] [--n_embd N_EMBD] [--n_head N_HEAD] [--n_layer N_LAYER] [--dropout DROPOUT]

Train and/or infer with a language model

options:
  -h, --help            show this help message and exit
  --train               Mode entraînement
  --infer               Mode inférence
  --save_model SAVE_MODEL
                        Sauvegarde le modèle dans le fichier spécifié
  --load_model LOAD_MODEL
                        Charge le modèle depuis le fichier spécifié
  --input INPUT         Utilise les données d'entrainement depuis le fichier spécifié
  --batch_size BATCH_SIZE
                        Nombre d'I/O que le modèle doit apprendre par batch
  --block_size BLOCK_SIZE
                        Longueur des séquences que le transformer doit apprendre
  --max_iters MAX_ITERS
                        Nombre d'itérations d'apprentissage
  --eval_interval EVAL_INTERVAL
                        Intervalle d'évaluation pendant l'entraînement
  --learning_rate LEARNING_RATE
                        Taux d'apprentissage
  --eval_iters EVAL_ITERS
                        Nombre d'itérations d'évaluation
  --n_embd N_EMBD       Dimension de l'espace dans lequel on projette les caractères
  --n_head N_HEAD       Nombre de têtes d'attention
  --n_layer N_LAYER     Nombre de couches
  --dropout DROPOUT     Probabilité de dropout