Outils pour utilisateurs

Outils du site


numeriser_jean_de_la_fontaine

Ceci est une ancienne révision du document !


Numériser Jean de La Fontaine

Contexte

Dans le cadre du Bestiaire d'Intelligences Artificielles, nous avons décidé de ressusciter ce fameux Jean de La Fontaine.

C'est Serge qui a fait le plus gros du travail en défrichant la technologie aitextgen, qui utilise Python et la GPT2 afin de proposer une intelligence artificielle capable de produire du texte à partir d'un corpus de base, en imitant le style et le vocable de l'auteur original.

Dans notre cas, c'est donc l'auteur des fables qui a été choisi pour ce cruel exercice.

Je suis parti assez rapidement sur le projet, sans prendre trop le temps de me renseigner sur les technologies manipulées. Vous pardonnerez donc les lacunes explicatives des étapes qui suivent.

Installaton d'aitextgen

J'ai pour ce faire utilisé les instructions de Serge, présentes sur la page Bestiaire IA Fables de la Fontaine.

Pour des raisons pratiques, on commence par mettre-à-jour pip et installer le module d'environnement virtuel de Python :

# Installation et Mise à jour du module pip
sudo apt install python3-pip
python3 -m pip install --upgrade pip
# Installation de venv
sudo apt install python3-venv

pip permet d'installer de manière simple les différentes librairies Python. Quand à l'environnement virtuel, il permet de faire cohabiter plusieurs projets Python en parallèle dont les librairies seraient contradictoires (par exemple si deux versions différentes d'une même librairie sont nécessaires à deux projets). Plus d'info à ces sujets, en anglais, ici.

Après cela, une fois dans le bon dossier ( par exemple /home/machin/projets ), nous clonons le répertoire de Serge depuis git, ce qui nous facilite toute l'installation :

git clone https://github.com/sergeLabo/La_Fontaine
# Allez dans le dossier des sources
cd ./La_Fontaine
python3 -m venv mon_env
source mon_env/bin/activate
python3 -m pip install -r requirements.txt

Ici, vous pouvez voir qu'après avoir récupéré le dossier, nous mettons en place l'environnement virtuel. De fait, à partir de maintenant, nous n'utiliserons plus la commande Python de base, mais nous appellerons le binaire de l'environnement virtuel :

./mon_env/bin/python3 mon_fichier.py

Entraîner l'intelligence artificielle à partir d'un corpus

Vous pourrez trouver le corpus qui a servi de base d'entraînement pour ce projet : fables.txt. J'ai essayé à partir d'un autre corpus : l'Éthique de Spinoza. Le résultat était aussi chiant que l'original.

Il vous faudra donc avoir un fichier texte qui contient le modèle textuel à calquer. Attention, plus celui-ci est grand, plus cela fonctionne bien. Et quand je dis grand, j'entends bien grand… Les modèles des Fables, ou de l'Éthique, qui fait pourtant 150 pages, sont beaucoup trop petit pour entraîner de manière correcte le modèle. C'est comme ça.

Il sera souvent nécessaire de retoucher le fichier texte avant l'entraînement. Dans le cas de l'Éthique, les numéros de pages étaient encore présent dans le fichier texte, je les ai donc supprimés. Il y avait également des césures à la plupart des sauts de lignes… Je n'ai pas eu le courage de trouver l'algorithme pour les corriger. Il n'apparaissaient pas dans les textes générés mais je pense qu'ils ont freiné l'apprentissage. De la même manière, il faut supprimer les notes de bas de pages, les légendes des dessins, etc.

Une fois votre corpus enregistré en fichier texte dans le dossier, voici le script python qui permet de ré entraîner le modèle :

text_training.py
from aitextgen.TokenDataset import TokenDataset
from aitextgen.tokenizers import train_tokenizer
from aitextgen.utils import GPT2ConfigCPU
from aitextgen import aitextgen
 
# The name of the downloaded text for training
file_name = "fables.txt"
 
# Train a custom BPE Tokenizer on the downloaded text
# This will save one file: `aitextgen.tokenizer.json`, which contains the
# information needed to rebuild the tokenizer.
train_tokenizer(file_name)
tokenizer_file = "aitextgen.tokenizer.json"
 
# GPT2ConfigCPU is a mini variant of GPT-2 optimized for CPU-training
# e.g. the # of input tokens here is 64 vs. 1024 for base GPT-2.
config = GPT2ConfigCPU()
 
# Instantiate aitextgen using the created tokenizer and config
ai = aitextgen(tokenizer_file=tokenizer_file, config=config)
 
# You can build datasets for training by creating TokenDatasets,
# which automatically processes the dataset with the appropriate size.
data = TokenDataset(file_name, tokenizer_file=tokenizer_file, block_size=64)
 
# Train the model! It will save pytorch_model.bin periodically and after completion to the `trained_model` folder.
ai.train(data, batch_size=8, num_steps=50000, generate_every=5000, save_every=5000)

Il faut spécifier le fichier texte du corpus à la ligne 7 .

D'autres configurations sont possibles, ici c'est la version qui utilise le CPU. Sur ma machine, équipée d'un Core I5 9th Gen, les entraînements pour les Fables et l'Éthique ont pris un peu plus d'une heure.

[EN CONSTRUCTION]

numeriser_jean_de_la_fontaine.1646405965.txt.gz · Dernière modification : 2022/03/04 14:59 de Simon Deplat