piegu / language-models

pre-trained Language Models
287 stars 98 forks source link

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

Open aquadzn opened 5 years ago

aquadzn commented 5 years ago

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 5 years ago

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.

aquadzn commented 5 years ago

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 5 years ago

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.

aquadzn commented 5 years ago

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 5 years ago

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? ;-)

aquadzn commented 5 years ago

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 5 years ago

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.