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/09 15:32] – [Roman] 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 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 227: | Ligne 234: | ||
===== Mails de La Labomedia ===== | ===== Mails de La Labomedia ===== | ||
- | |||
====Configuration==== | ====Configuration==== | ||
<code python> | <code python> | ||
Ligne 251: | Ligne 257: | ||
</ | </ | ||
- | =====Hugo Zola Balzac===== | + | Les datas sont trop pourries, le résultat est très médiocre ! |
- | Toutes les œuvres de ces auteurs est libre, et comme ils ont beaucoup écrit et particulièrement bien, cela fournit de bonnes datas pour l' | + | ===== Des textes dans le domaine public du Projet Gutemberg |
+ | **[[http:// | ||
- | Toutes les oeuvres 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' | ||
+ | ====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 | ||
+ | |||
+ | * Le fichier d' | ||
+ | * vocab_size = 40 000 | ||
+ | * batch_size = 48, valeur maxi possible avec 6 Go de Ram GPU (1060 GTX) | ||
+ | * Ram CPU = 16 Go, Swap=64 Go, valeur totale de l' | ||
+ | |||
+ | Efficacité au bout de 144 heures: | ||
+ | {{ : | ||
+ | |||
+ | =====Fables de La Fontaine avec la config de bouquineux===== | ||
+ | ==== Avec la configuration de bouquineux et vocab=40000 ==== | ||
+ | {{ : | ||
+ | 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' | ||
+ | {{ : | ||
+ | |||
+ | ====Courbe de loss==== | ||
+ | J' | ||
+ | {{ : | ||
+ | |||
+ | ====Testing==== | ||
+ | {{ : | ||
+ | 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 ! | ||
- | ====Roman==== | + | ====Les sources sur GitHub==== |
+ | * **[[https:// | ||
- | ===== Avec tous les textes dans le domaine public du Projet Gutemberg ===== | ||
- | =====Pense bête pour NFS===== | ||
- | * [[https:// | ||
- | {{tag>ia python | + | {{tag> ia python sb tal }} |
aitextgen.txt · Dernière modification : 2022/02/08 15:59 de serge