aitextgen
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
aitextgen [2020/07/01 14:33] – [Victor Hugo] serge | aitextgen [2022/02/08 15:59] (Version actuelle) – Tag0 Removed: text_gen serge | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Génération de textes avec aitextgen et GPT-2====== | ====== Génération de textes avec aitextgen et GPT-2====== | ||
+ | |||
+ | <WRAP center round box 60% centeralign> | ||
+ | **{{tagpage> | ||
+ | </ | ||
+ | <WRAP center round box 60% centeralign> | ||
+ | **[[les_pages_intelligence_artificielle_en_details|Les Pages Intelligence Artificielle en détails]]** | ||
+ | </ | ||
<WRAP center round box 80% centeralign> | <WRAP center round box 80% centeralign> | ||
- | **{{tagpage> | + | **{{tagpage> |
</ | </ | ||
<WRAP center round box 80% centeralign> | <WRAP center round box 80% centeralign> | ||
- | **Cette page est la suite de [[textgenrnn|Générer du texte en python avec textgenrnn]]** | + | **Cette page est la suite de [[archives:textgenrnn|Générer du texte en python avec textgenrnn]]** |
</ | </ | ||
<WRAP center round box 80% centeralign> | <WRAP center round box 80% centeralign> | ||
- | Les chercheurs retardent la publication de leurs recherches car ils estiment que GPT2 a un potentiel « trop dangereux », étant donné que cette IA pourrait à terme servir à des actes mal intentionnées comme générer des avis négatifs ou positifs sur des produits, des spams, des textes complotistes, | + | Les chercheurs retardent la publication de leurs recherches car ils estiment que GPT2 a un potentiel « trop dangereux », étant donné que cette IA pourrait à terme servir à des actes mal intentionnées comme générer des avis négatifs ou positifs sur des produits, des spams, des textes complotistes, |
+ | Bien sûr, tout a été publié, y compris le modèle big de 1.5 Go. | ||
</ | </ | ||
- | =====Quel carte graphique choisir en Juin 2020===== | + | =====Why do we like Word2vec?===== |
- | * **[[https:// | + | {{ : |
+ | * **[[https:// | ||
+ | * **[[https:// | ||
- | * RTX 2060 (6 GB): if you want to explore deep learning in your spare time. 360€ | ||
- | * RTX 2070 or 2080 (8 GB): if you are serious about deep learning, but your GPU budget is $600-800. Eight GB of VRAM can fit the majority of models. | ||
- | * RTX 2080 Ti (11 GB): if you are serious about deep learning and your GPU budget is ~$1,200. The RTX 2080 Ti is ~40% faster than the RTX 2080. | ||
- | * Titan RTX and Quadro RTX 6000 (24 GB): if you are working on SOTA models extensively, | ||
- | * Quadro RTX 8000 (48 GB): you are investing in the future and might even be lucky enough to research SOTA deep learning in 2020. 5500€ | ||
===== Ressources ===== | ===== Ressources ===== | ||
====aitextgen==== | ====aitextgen==== | ||
Ligne 28: | Ligne 33: | ||
====OpenAI==== | ====OpenAI==== | ||
- | * **[[https:// | + | * **[[https:// |
====Controverse sur GPT-2==== | ====Controverse sur GPT-2==== | ||
Ligne 53: | Ligne 58: | ||
The FlauBERT model was proposed in the paper FlauBERT: Unsupervised Language Model Pre-training for French by Hang Le et al. It’s a transformer pre-trained using a masked language modeling (MLM) objective (BERT-like). | The FlauBERT model was proposed in the paper FlauBERT: Unsupervised Language Model Pre-training for French by Hang Le et al. It’s a transformer pre-trained using a masked language modeling (MLM) objective (BERT-like). | ||
- | ===== Fables de La Fontaine ===== | + | =====Générateur de texte en ligne===== |
- | Suite de [[textgenrnn# | + | * **[[https:// |
+ | ===== Fables de La Fontaine | ||
+ | Suite de [[archives:textgenrnn# | ||
<code python training.py> | <code python training.py> | ||
Ligne 79: | Ligne 86: | ||
def training(): | def training(): | ||
file_name | file_name | ||
- | train_tokenizer(file_name) | + | train_tokenizer(file_name, vocab_size=20000) |
vocab_file = " | vocab_file = " | ||
merges_file = " | merges_file = " | ||
Ligne 227: | Ligne 234: | ||
===== Mails de La Labomedia ===== | ===== Mails de La Labomedia ===== | ||
- | |||
====Configuration==== | ====Configuration==== | ||
<code python> | <code python> | ||
Ligne 251: | Ligne 257: | ||
</ | </ | ||
- | =====Victor Hugo===== | + | Les datas sont trop pourries, le résultat est très médiocre ! |
- | Toutes l’œuvre de Victor Hugo est libre, et comme Victor a beaucoup écrit et particulièrement bien, cela fournit de bonnes datas pour l' | + | ===== Des textes dans le domaine public du Projet Gutemberg |
+ | **[[http:// | ||
- | Toutes sont oeuvre a été téléchargée sur [[http://www.bouquineux.com/index.php? | + | Extrait de [[https://fr.wikipedia.org/wiki/ |
- | Conversion de *.epub vers *.txt avec pypandoc, puis regroupement de tous les poèmes | + | Le projet Gutenberg est une bibliothèque de versions électroniques libres de livres physiquement existants. Les textes fournis sont essentiellement du domaine public, soit parce qu'ils n'ont jamais été sujets à des droits d' |
+ | |||
+ | Ce site n' | ||
+ | |||
+ | Conversion de *.epub vers *.txt avec ebook-convert, puis regroupement de tous les textes | ||
+ | |||
+ | Les fichiers non nettoyés font 300 Mo, et nettoyés font 280 Mo. | ||
===Nettoyage des datas=== | ===Nettoyage des datas=== | ||
Les sauts de lignes, les sommaires ... doivent être nettoyés: avec clean_txt.py | Les sauts de lignes, les sommaires ... doivent être nettoyés: avec clean_txt.py | ||
+ | |||
+ | Le plus grand nettoyage est fait avec une détection de langue: | ||
+ | from langdetect import detect_langs | ||
+ | je garde la ligne si langue.lang == ' | ||
+ | Cela supprime les textes en anglais, en particulier les licences, les chiffres romains ... | ||
Le nettoyage des datas est très important, ce n'est pas drôle, il faut vérifier le résultat obtenu en tapant au hasard dans le texte, ça prend un temps fou ... | Le nettoyage des datas est très important, ce n'est pas drôle, il faut vérifier le résultat obtenu en tapant au hasard dans le texte, ça prend un temps fou ... | ||
Ligne 265: | Ligne 283: | ||
La génération de texte est une représentation fidèle du texte d' | La génération de texte est une représentation fidèle du texte d' | ||
- | ====Poésie==== | + | ====Training==== |
+ | ===OOM = Out Of Memory=== | ||
+ | Finetuning the 355M GPT-2 model or larger on a GPU will cause the GPU to go OOM, even 16 GB VRAM GPUs | ||
- | ===Config=== | + | * Le fichier d' |
- | < | + | |
- | vocab_size=10000 | + | * batch_size |
- | n_positions=1024 | + | * Ram CPU = 16 Go, Swap=64 Go, valeur totale de l' |
- | n_ctx=1024 | + | |
- | n_embd=768 | + | |
- | n_layer=12 | + | |
- | n_head=12 | + | |
- | bos_token_id=0 | + | |
- | eos_token_id=0 | + | |
- | max_length=1024 | + | |
- | dropout=0.0 | + | |
- | batch_size=32 | + | |
- | num_steps=180000 | + | |
- | temps de training 26:37:34 | + | Efficacité au bout de 144 heures: |
- | Encoding 50,741 sets of tokens | + | {{ :media_10: |
- | debut Loss: 6.521 — Avg: 8.438 — GPU Mem: 5174 MB | + | |
- | fin Loss: 0.140 — Avg: 0.141 | + | =====Fables de La Fontaine avec la config de bouquineux===== |
- | </ | + | ==== Avec la configuration de bouquineux et vocab=40000 ==== |
- | ====Roman==== | + | {{ : |
+ | Remarque: Les Fables ont environ 13000 tokens, le vocab devrait se limiter à 14000 !\\ | ||
+ | Testing pas mal mais quand même bourré d' | ||
+ | |||
+ | ==== A partir du model tf_gpt2=" | ||
+ | * vocab_size=5000 | ||
+ | * Apprentissage très rapide | ||
+ | * texte générés comme les précédents | ||
+ | |||
+ | =====Fables de La Fontaine à partir du model tf_gpt2=" | ||
+ | <WRAP center round tip 60%> | ||
+ | C'est le meilleur générateur de texte, avec un apprentissage de 16 heures ! | ||
+ | </ | ||
+ | <WRAP center round tip 60%> | ||
+ | tf_gpt2=" | ||
+ | </ | ||
+ | ====Affinage du model existant tf_gpt2=" | ||
+ | * [[https:// | ||
+ | |||
+ | La ligne: | ||
+ | ai = aitextgen(tf_gpt2=" | ||
+ | va télécharger automatiquement le model.\\ | ||
+ | Le training va affiner ce model. C'est un model construit sur un texte anglais, et pourtant cela va générer du texte français. | ||
+ | |||
+ | |||
+ | ====Shot de l' | ||
+ | Pendant le trainning, les test de generate() retourne de l' | ||
+ | {{ :media_10: | ||
+ | |||
+ | ====Courbe de loss==== | ||
+ | J' | ||
+ | {{ :media_10: | ||
+ | |||
+ | ====Testing==== | ||
+ | {{ :media_10:test_fables_small.png? | ||
+ | Le résultat comporte peu de mots mal construits, inexistants en français. Par contre, il n'y a aucun sens au texte, c'est mieux que du Nostradamus, | ||
+ | |||
+ | ====Développement à suivre==== | ||
+ | Construire sur le gros model de 1.5 Go ! | ||
+ | |||
+ | ====Les sources sur GitHub==== | ||
+ | * **[[https:// | ||
- | =====Pense bête pour NFS===== | ||
- | * [[https:// | ||
- | {{tag>ia python | + | {{tag> ia python sb tal }} |
aitextgen.1593614007.txt.gz · Dernière modification : 2020/07/01 14:33 de serge