Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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 this issue Sep 26, 2019 · 7 comments

Comments

@aquadzn
Copy link

aquadzn commented Sep 26, 2019

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

@aquadzn aquadzn changed the title Est-il possible de fine-tuner Est-il possible de fine-tuner le modèle pré-entrainé sur un nouveau dataset pour de la génération de texte ? Sep 26, 2019
@piegu
Copy link
Owner

piegu commented Sep 26, 2019

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
Copy link
Author

aquadzn commented Sep 26, 2019

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
Copy link
Owner

piegu commented Sep 26, 2019

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
Copy link
Author

aquadzn commented Sep 26, 2019

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
Copy link
Owner

piegu commented Sep 26, 2019

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
Copy link
Author

aquadzn commented Sep 26, 2019

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
Copy link
Owner

piegu commented Sep 26, 2019

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants