La recherche en IA te passionne ?
Les papers et avancées qui comptent, expliqués simplement, chaque soir. Gratuit.
Inclus dès l'inscription : notre sélection des meilleurs guides & comparatifs IA.
Choisis ton rythme
Gratuit · Pas de spam · Désabonnement en 1 clic
Entraîner GPT-2 depuis zéro sur une GTX1050
L'initiative d'entraîner un modèle GPT-2 sur une GTX1050 a commencé par pure curiosité, sans plan précis. L'objectif initial était de comprendre le processus d'entraînement des modèles de langage et d'explorer la possibilité de le faire sur du matériel local. Ce projet a évolué au fil du temps, passant de l'idée de créer un assistant de codage à un modèle axé sur la fiscalité turque.
Les Débuts de l'Expérience
Au début de cette aventure, l'auteur ne disposait que d'une GTX1050, un GPU avec une VRAM limitée, et d'une configuration Linux locale. Bien que le matériel ne soit pas idéal, l'objectif était d'explorer les possibilités d'expérimentation dans des conditions matérielles contraignantes. Les sessions d'entraînement prolongées ont soulevé des préoccupations pratiques, telles que la gestion de la chaleur, la stabilité du système et les risques d'interruption de l'alimentation.
Un Objectif Initial Différent
L'idée initiale n'était pas de travailler sur des modèles de langue turcs, mais de développer un modèle de codage localement. L'auteur a commencé par télécharger de grands ensembles de données de code open-source, certains atteignant plusieurs dizaines de gigaoctets, et a tenté de lancer des expériences d'entraînement sur sa machine locale. Cependant, ces essais ont échoué presque immédiatement en raison de la taille excessive des ensembles de données et de l'instabilité de la mémoire, ce qui a mis en évidence la nécessité de construire un flux de travail adapté aux contraintes matérielles.
Changement de Direction
Face à l'échec des expériences de codage, l'auteur a décidé de changer de cap et de se concentrer sur un assistant axé sur la fiscalité turque. Travaillant dans le domaine de la comptabilité et des impôts, il disposait déjà de connaissances structurées et de sources de textes juridiques. Un ensemble de données initial a été préparé à partir de documents de loi fiscale turque, et une petite expérience de fine-tuning a été tentée sur des modèles de type GPT-2, mais les résultats se sont avérés décevants.
Problèmes de Modèle
Le modèle de base ne comprenait pas suffisamment bien le turc, ce qui a conduit l'auteur à rechercher des modèles pré-entraînés en turc sur Hugging Face. Plusieurs alternatives ont été téléchargées et testées, mais les résultats sont restés insatisfaisants. Certains modèles produisaient un turc incorrect, d'autres des sorties instables, et certains ne parvenaient pas à se généraliser de manière utile. Cette expérience a souligné que tous les modèles pré-entraînés ne sont pas nécessairement bien entraînés ou utilisables en pratique.
Découverte de l'Entraînement sur Wikipedia
Une fois le problème principal identifié comme étant l'absence d'un bon modèle de base en turc, l'attention s'est déplacée vers l'entraînement d'un petit modèle de type GPT capable d'apprendre correctement le turc. Les architectures de taille GPT-2 étant les seules options réalistes pour le matériel disponible, l'auteur a exploré le pré-entraînement à petite échelle en turc, ce qui l'a conduit aux ensembles de données de Wikipedia.
Problèmes de Tokenizer
Bien que Wikipedia soit plus gérable que les énormes ensembles de données de codage, chaque étape a introduit de nouveaux défis. L'entraînement des tokenizers est devenu un goulot d'étranglement majeur, avec des problèmes liés à la taille du vocabulaire, à la stabilité du prétraitement et aux contraintes de mémoire. De nombreux échecs survenaient avant même le début de l'entraînement du modèle.
Évolution du Flux de Travail
Un tournant majeur a été atteint lorsque l'auteur a commencé à diviser les ensembles de données en parties plus petites. Initialement, il a expérimenté avec environ six morceaux de données, espérant que l'entraînement séquentiel réduirait la pression sur le temps d'exécution et l'instabilité de la mémoire. Cette approche a mieux fonctionné que prévu, permettant un entraînement progressif à travers plusieurs parties de l'ensemble de données et évoluant vers un flux de travail d'entraînement en chaîne.
La Naissance de la Boucle d'Entraînement
À mesure que le nombre de parties de l'ensemble de données augmentait, la gestion manuelle des sessions d'entraînement devenait impraticable. Au début, les sessions étaient lancées individuellement et surveillées manuellement, mais cette méthode a cessé de fonctionner lorsque le flux de travail s'est étendu à des dizaines, puis à plus d'une centaine de parties de l'ensemble de données. Un système capable de continuer l'entraînement automatiquement tout en permettant l'inspection des résultats intermédiaires est devenu nécessaire, conduisant à la première version du système d'entraînement basé sur des boucles.
Expérimentations sur l'Ordre des Ensembles de Données
Une fois le flux de travail en chaîne stabilisé, l'auteur s'est concentré sur la structure des ensembles de données. Une question intéressante était de savoir si l'ordre des ensembles de données affectait la qualité de l'apprentissage. Trois catégories principales d'ensembles de données ont été utilisées : texte de style dialogue, langage structuré de style dictionnaire et articles de Wikipedia. L'intuition initiale, influencée par les schémas d'apprentissage humain, était que le modèle pourrait apprendre plus naturellement si les ensembles de données suivaient une progression similaire à l'acquisition du langage. Cette phase d'expérimentation a été déterminante dans l'évolution du projet.

