Mon 1er combat avec Optimus...
Donc BERT, de la famille des Encoder *1...
Comme vous l'imaginez facilement, ce fut un échec cuisant... Oui s'opposer directement au Leader des Autobots c'était pas bien... judicieux 😅
L'idée de départ était de faire ce que l'on appelle dans le jargon "de l'adaptation au domaine". Le domaine ici, étant le style de Manuel Dorne , de son blog Korben.info .
Afin de faire les choses dans les "règles de l'art", je me suis documenté sur le site de Hugging Face. Je pensais au départ que le fine tune d'un tel modèle se ferait sans étiquetage au préalable, qu'il suffirait juste de "masquer" des mots dans le corpus, de façon aléatoire, afin d'entraîner le modèle... En fait, n'étant pas, encore, familier avec les librairies de Hugging Face, je me suis reposé sur leurs tutoriels et l'un d'eux expliquait comment entraîner un modèle de type BERT, pour faire du résumé de texte...
Pour compléter mes propos, je pensais entraîner en même temps l'Encoder et le Decoder qui formeraient mon Transformer. L'Encoder servant en théorie, pour "numériser le sens" d'un Corpus, le "style"; et le Decoder pour compléter, poursuivre, un texte en s'aidant de l'Encoder pour comprendre l'attente de l'entrée. En d'autres termes et par exemple, l'Encoder sert a indiquer si le texte de départ est une question, ou si il y a une demande de résumer cette entrée, ou encore de traduire celle-ci etc...
Pour en revenir au Tuto, il y était indiqué de fournir un texte et son résumé. Donc il fallait en quelque sorte un étiquetage dans le sens où il fallait l'entrée, mais aussi la sortie pour entraîner le modèle à faire ce résumé...
J'ai alors décidé d'y... "Aller un peu fort" en utilisant l'article comme entrée et le titre de celui-ci comme sortie 😅 Oui je suis un jeune Data Scientist et comme tous les jeunes, nous avons cette tendance à vouloir aller "plus vite que la musique". J'étais vraiment impatient de vérifier mes intuitions et de réaliser une idée qui m'était venu plusieurs mois auparavant, mais sans pouvoir y travailler sereinement, comme il fallait que je me concentre sur mes études...
M'est venue une autre "pincée de sable dans les rouages", la VRAM, la mémoire dédiée au GPU, à la carte graphique. Pour ce type de modèle il en faut énormément... Je pensais avoir une carte puissante, une 3050Ti, mais avec juste 4Go de VRAM 🙁 C'était bien entendu, trop peu.
J'ai donc pris le partie d'utiliser un Colab *2 . Et ce fut long... Très long, surtout qu'utilisant la partie gratuite de ce service, son exécution est limité dans le temps, et vous ne pouvez pas laisser la page sans "montrer votre présence" durant plus d'une demi-heure... Heureusement que la poursuite d'un entraînement est possible, car je me serais vu dans l'obligation de passer une nuit blanche!
Recommandé par LinkedIn
Le résultat... Et bien je serai transparent:
"Edito du 10/12/2010040404.04..zzz vos fichierss...rzezz les fichierss?erz les fichiers?z!ment,e32ntéun)isezz vosboxs......z......zrr!z le-déoutuitilantptdown"
Kiki 0 - Optimus 1!!
Mais n'étant pas du genre à lâcher un problème si facilement, j'eus vite fait de trouver un "plan B".
Lequel? Nous y reviendrons Vendredi prochain!?
Rodrigue, indépendant et jeune ingénieur en Intelligence Artificielle; prêt à répondre à vos appels avec son expérience et sa passion...
Digression&Co
*1 La particularité des Encoder est de "porter leur attention" sur les mots à gauche d'une phrase, comme les Decoder d'ailleurs, mais aussi à droite, un peu comme si ils avaient le pouvoir de "regarder vers le futur" :)
*2 le Colab est un service Google qui permet d'exécuter des instructions en Python, dans un Notebook. Le Notebook c'est comme un programme, à part que l'ordre d'exécution est "à la carte", vous pouvez exécuter les lignes de ce programme dans l'ordre qui vous convient! Vous pouvez modifier du code précédent et le ré exécuter sans devoir relancer l'intégralité du code! C'est tellement pratique pour l'expérimentation!