piegu/language-models

Est-il possible de fine-tuner le modèle pré-entrainé sur un nouveau dataset pour de la génération de texte ?

aquadzn opened this issue · 7 comments

Bonjour, merci d'avoir partagé votre code et les différents modèles pré-entrainés.
J'ai téléchargé le corpus de Wikipédia et le premier modèle afin de faire tourner le notebook lm-french-generation.ipynb.

Est-il possible d'utiliser son propre dataset sans devoir réentraîner tout le modèle pendant 10h ?
Un peu comme fait sur ce repo ?

Faut-il charger le modèle, freeze les layers et entraîner sur le nouveau dataset?

Merci

piegu commented

Bonjour,

En ce qui concerne le LM général, je vous conseille d'utiliser directement mon 3ème modèle qui est plus performant (il utilise la configuration MultiFit, alors que le premier utilise la configuration ULMFiT): lm3-french.ipynb. Il vous pour cela alors télécharger ses paramètres et son vocab (lien dans le répertoire models).

Ensuite, vous pouvez le spécialiser (fine-tuner) sur votre propre corpus. Le code pour faire cela se trouve en première partie du notebook lm3-french-classifier-amazon.ipynb.

Si besoin de plus d'informations, n'hésitez pas à me demander.

Bonjour,

En ce qui concerne le LM général, je vous conseille d'utiliser directement mon 3ème modèle qui est plus performant (il utilise la configuration MultiFit, alors que le premier utilise la configuration ULMFiT): lm3-french.ipynb. Il vous pour cela alors télécharger ses paramètres et son vocab (lien dans le répertoire models).

Ensuite, vous pouvez le spécialiser (fine-tuner) sur votre propre corpus. Le code pour faire cela se trouve en première partie du notebook lm3-french-classifier-amazon.ipynb.

Si besoin de plus d'informations, n'hésitez pas à me demander.

D'accord merci je vais faire cela!
La partie fine-tuning sur lm3-french-classifier-amazon.ipynb est bien celle comprenant Fine-tuning "forward LM" et Fine-tuning "backward LM" ?

Est-ce que vous comptez faire un notebook pour de la génération de texte ?

piegu commented

La partie fine-tuning sur lm3-french-classifier-amazon.ipynb est bien celle comprenant Fine-tuning "forward LM" et Fine-tuning "backward LM" ?

Oui, c'est cela (forward et backward pour entraîner un LM bidirectionnel).

  1. Vous créez un databunch à partir de votre corpus particulier
  2. Vous créez votre learner en utilisant ce nouveau databunch mais en important les paramètres et vocab du LM général. Ainsi votre nouveau LM ne part pas de zéro. Il contient les embeddings entraînés sur le corpus général et qui seront fine-tuned lors de l'entraînement du nouveau LM sur le corpus particulier.

Est-ce que vous comptez faire un notebook pour de la génération de texte

Oui mais pas à partir du même LM général (lm3-french.ipynb) car son architecture (4 QRNN avec 1550 activations par couche) n'est pas assez profonde pour faire de la génération de texte de manière qualitative (alors qu'elle est suffisante pour atteindre de haute performance en classification). Il faut regarder du côté des Transformers pour faire de la génération de texte de manière qualitative.

La partie fine-tuning sur lm3-french-classifier-amazon.ipynb est bien celle comprenant Fine-tuning "forward LM" et Fine-tuning "backward LM" ?

Oui, c'est cela (forward et backward pour entraîner un LM bidirectionnel).

  1. Vous créez un databunch à partir de votre corpus particulier
  2. Vous créez votre learner en utilisant ce nouveau databunch mais en important les paramètres et vocab du LM général. Ainsi votre nouveau LM ne part pas de zéro. Il contient les embeddings entraînés sur le corpus général et qui seront fine-tuned lors de l'entraînement du nouveau LM sur le corpus particulier.

Est-ce que vous comptez faire un notebook pour de la génération de texte

Oui mais pas à partir du même LM général (lm3-french.ipynb) car son architecture (4 QRNN avec 1550 activations par couche) n'est pas assez profonde pour faire de la génération de texte de manière qualitative (alors qu'elle est suffisante pour atteindre de haute performance en classification). Il faut regarder du côté des Transformers pour faire de la génération de texte de manière qualitative.

D'accord du coup pour de la génération de texte en français, vous me conseilleriez d'utiliser BERT (vu que c'est le seul déjà entraîné en français si j'ai bien compris d'après ce qu'ils disent ici https://github.com/google-research/bert/blob/master/multilingual.md) afin d'obtenir des meilleurs résultats ?

piegu commented

Il est certain qu'il faut passer à des Transformers du type BERT pour la génération de texte. Et si seul BERT a été entraîné en français, ça vaut le coup de le tester mais aussi de "franciser" ses collègues comme GPT-2, non? ;-)

Il est certain qu'il faut passer à des Transformers du type BERT pour la génération de texte. Et si seul BERT a été entraîné en français, ça vaut le coup de le tester mais aussi de "franciser" ses collègues comme GPT-2, non? ;-)

oui après il faut le budget ou plusieurs comptes GCP !

piegu commented

Autre conseil: regarder aussi lm3-portuguese.ipynb et lm3-portuguese-classifier-TCU-jurisprudencia.ipynb qui utilisent toutes les techniques MultiFiT et en particulier Label Smoothing.