Leçon 5 — Coût et transfer learning
Cette leçon est la plus utile si vous devez décider quelque chose. Le deep learning a une réputation de discipline réservée aux grandes organisations, et c'était vrai jusqu'à ce qu'une pratique change l'économie du domaine.
Ce qu'un entraînement coûte vraiment
Trois postes, et le premier est presque toujours le plus lourd.
Les données. Un réseau entraîné de zéro demande des dizaines de milliers d'exemples au minimum, souvent bien plus, et étiquetés. Faire annoter cinquante mille images par des spécialistes est un projet à part entière, avec un budget, des délais, un protocole et des désaccords entre annotateurs à arbitrer. C'est ce poste qui tue les projets, pas le matériel.
Le matériel. Un GPU récent en location coûte de l'ordre de quelques euros par heure. Un entraînement de vision sérieux prend des heures à quelques jours ; un modèle de langage de grande taille demande des milliers de GPU pendant des semaines, soit des millions d'euros. C'est pourquoi il existe une poignée d'organisations qui entraînent des modèles de fondation, et des dizaines de milliers d'équipes qui les utilisent.
Le temps humain. Souvent sous-estimé : préparation des données, expérimentations infructueuses, réglages, analyse des erreurs. En pratique, la préparation et le diagnostic occupent bien plus de temps que le calcul.
Entraîner un grand modèle de langage de zéro se compte en millions d'euros et en mois. Affiner ce même modèle sur vos données se compte souvent en dizaines d'euros et en heures. Cette différence d'échelle est ce qui a démocratisé le domaine, et c'est le sujet du reste de cette leçon.
Le transfer learning
L'idée découle directement de la leçon 2. Un réseau entraîné sur une grande tâche a appris, dans ses couches basses, des représentations génériques : des contours et des textures pour la vision, la syntaxe et la sémantique pour le texte. Ces représentations ne sont pas propres à la tâche d'origine.
On peut donc reprendre ce travail déjà payé par quelqu'un d'autre et n'adapter que la partie spécifique à son problème.
L'analogie est fidèle : on n'apprend pas à un radiologue à voir avant de lui apprendre la radiologie. Il sait déjà distinguer des formes et des contrastes ; on lui enseigne seulement ce qui, dans une image médicale, est significatif.
Extraction de caractéristiques
On gèle l'intégralité du réseau pré-entraîné et on l'utilise comme un convertisseur : il transforme chaque image, ou chaque texte, en un vecteur de descripteurs. On entraîne ensuite un petit modèle — souvent une simple régression logistique — sur ces vecteurs.
Cette approche demande très peu de données, parfois quelques dizaines d'exemples par classe, s'entraîne en secondes et fonctionne sur un ordinateur ordinaire, sans carte graphique. C'est le premier essai à faire, systématiquement.
Fine-tuning
On va plus loin : on autorise les dernières couches du réseau à se réajuster sur vos données, avec un taux d'apprentissage faible pour ne pas détruire ce qui a été appris. On obtient de meilleurs résultats, au prix de plus de données et d'un peu de calcul.
Deux précautions valent d'être connues. Un taux d'apprentissage trop élevé provoque l'oubli catastrophique : le modèle écrase ses représentations générales et devient moins bon que le point de départ. Et avec peu de données, dégeler trop de couches conduit droit au surapprentissage.
Les méthodes d'adaptation efficaces
Pour les très grands modèles, réajuster tous les paramètres est hors de portée. Des techniques d'adaptation à faible nombre de paramètres, dont LoRA est la plus répandue, n'entraînent que de petites matrices additionnelles insérées dans le modèle, en laissant les poids d'origine intacts.
L'intérêt est considérable : on adapte un modèle de plusieurs milliards de paramètres en n'entraînant qu'une fraction de pourcent d'entre eux, sur un seul GPU, en quelques heures. On peut aussi conserver plusieurs adaptations légères pour un même modèle de base, et les échanger selon la tâche.