De quoi s'agit-il
Un modèle de base a appris ce qu'il sait lors du pré-entraînement : prédire le mot suivant à partir d'une vaste quantité de texte public. Le pré-entraînement continu exécute ce même processus une seconde fois, sur votre texte. Il n'y a pas de prompts, pas de réponses et pas d'évaluateur ; le modèle lit votre documentation et parvient à mieux en prédire la suite, ce qui signifie qu'il en absorbe le vocabulaire, les entités et les faits.
L'idée est bien établie. Gururangan et al. (2020) ont démontré, à travers quatre domaines (articles biomédicaux et informatiques, actualités et critiques) et huit tâches, qu'une deuxième phase de pré-entraînement sur du texte spécifique au domaine améliorait les résultats, et que le pré-entraînement sur le texte non étiqueté propre à la tâche restait bénéfique même après cela.
Comment le texte est préparé
- Des passages d'environ 700 mots, coupés aux sauts de paragraphe afin qu'aucun passage ne se termine au milieu d'une idée. Les documents très courts peuvent être ignorés.
- Les données personnelles sont masquées, comme dans toute préparation de données.
- Environ 5 % des passages sont mis de côté, afin de pouvoir mesurer la perte sur du texte sur lequel le modèle ne s'entraîne jamais.
Comment chaque fournisseur l'entraîne
Hugging Face : chaque passage correspond à une ligne text. La perte couvre chaque token, contrairement à l'entraînement supervisé, où seule la réponse compte. Les passages courts sont regroupés en séquences complètes, de sorte qu'aucune puissance de calcul n'est gaspillée pour le remplissage.
{"text": "Sharing reports\n\nAny report can be shared with a client from the Share menu. The client receives an email with a link that opens without an account…"}Modèles ouverts Vertex AI (Gemma, Llama, Qwen) : il n'y a pas de mode texte brut, chaque passage est donc inséré sous forme de prompt et de complétion, avec le titre du document comme prompt. Vertex apprend la complétion, qui correspond au passage. Il est possible que Vertex n'affiche pas de courbe de perte pour ce type de tâche.
{"prompt": "Sharing reports",
"completion": "Any report can be shared with a client from the Share menu. The client receives an email with a link that opens without an account…"}textune ligne par passage→apprend chaque tokenpromptle titre du document+completionle passage→apprend le passageNon disponible ailleurs. Gemini, Azure, Fireworks et les modèles Bedrock actuels ne proposent pas de pré-entraînement continu ; Bedrock ne l'a proposé que pour Titan Text, qui a été retiré. Chez ces fournisseurs, les documents sont plutôt transformés en Q&A générées.
Des connaissances, pas un comportement
Après un pré-entraînement continu, le modèle en sait plus mais ne répond pas nécessairement mieux : il a été entraîné pour continuer du texte, non pour répondre à une question. Allen-Zhu & Li (2023) ont découvert que les connaissances mémorisées par un modèle ne peuvent pas toujours être extraites par des questions, et que ce sont les formulations variées d'un même fait qui permettent de les récupérer. La méthode habituelle consiste donc à effectuer d'abord un pré-entraînement continu, puis un cycle d'entraînement supervisé, sur des chats ou des Q&A générées, qui prend le relais du modèle entraîné.
- Un centre d'aide de 120 000 mots est découpé en près de 170 passages d'environ 700 mots.
- Environ 5 % (9 passages) sont mis de côté ; 161 servent à l'entraînement, soit environ 113 000 mots.
- À environ 1,3 token par mot, cela représente près de 150 000 tokens par époque. L'entraînement sur deux époques porte sur environ 300 000 tokens.
- Regroupée en séquences de 2 048 tokens, une époque correspond à environ 72 séquences. Avec un rang LoRA de 32 sur un petit modèle ouvert, il s'agit d'une tâche courte et peu coûteuse.
- Un cycle d'entraînement supervisé sur les chats d'assistance et les Q&A générées prend ensuite le relais, et est évalué par rapport à celui-ci.
- En revanche, un projet pilote sur un document de 2 000 mots donne trois passages : cela prouve que le pipeline fonctionne, mais c'est une quantité de texte bien trop faible pour modifier le modèle.
Quand le choisir
- Choisissez-le lorsque vous disposez d'un vaste corpus de documentation (des dizaines de milliers de mots ou plus), que vous entraînez un modèle ouvert et que vous prévoyez une phase supervisée par la suite.
- Choisissez les Q&R générées lorsque vous souhaitez obtenir de meilleures réponses rapidement, que vous avez moins de documents ou que vous vous entraînez sur un fournisseur sans pré-entraînement continu.
- Envisagez les deux : un pré-entraînement continu pour assimiler la documentation, puis des Q&R et des chats générés pour apprendre au modèle à formuler des réponses à partir de celle-ci.
Paramètres
La longueur de chaque passage d'entraînement. Environ 700 mots, découpés aux sauts de paragraphe, afin que chaque passage constitue un texte cohérent et s'intègre parfaitement dans une séquence d'entraînement. Les documents très courts peuvent être ignorés, étant jugés trop brefs pour apporter un quelconque apprentissage.
Le nombre de fois que le modèle lit tous les passages. Maintenez ce nombre à un niveau bas : de trop nombreuses lectures poussent le modèle à réciter les passages mot pour mot au lieu d'utiliser les connaissances. Chaque époque ajoute également l'équivalent d'une époque supplémentaire en termes de coût.
La taille de l'adaptateur qui stocke ce que le modèle apprend. De nouvelles connaissances nécessitent un adaptateur plus grand qu'un simple changement de style ; Scalata utilise donc le rang 32 pour le pré-entraînement continu et 16 pour les autres méthodes. Biderman et al. (2024) ont démontré, sur du code et des mathématiques, que le fine-tuning complet intègre des modifications d'un rang 10 à 100 fois supérieur aux configurations LoRA habituelles. C'est probablement l'une des raisons pour lesquelles les rangs faibles ne suffisent pas lorsque l'objectif est d'acquérir de nouvelles connaissances.
Erreurs courantes
- L'exécuter sur quelques pages et s'attendre à un changement. Il nécessite des dizaines de milliers de mots ou plus.
- S'arrêter après le pré-entraînement continu. Le modèle en sait plus, mais a toujours besoin d'un cycle d'entraînement supervisé pour bien répondre.
- Utiliser de nombreuses époques. Le modèle commence à réciter des passages au lieu d'utiliser leur contenu.
- Garder un rang LoRA faible. Les connaissances nécessitent une plus grande capacité d'adaptateur que le style.
- Le chercher sur Gemini, Azure, Fireworks ou Bedrock. Utilisez plutôt des Q&A générées sur ces plateformes.
Références et lectures complémentaires
Les sources externes s'ouvrent dans un nouvel onglet.
- 01Don't Stop Pretraining: Adapt Language Models to Domains and TasksGururangan et al., 2020 · arXiv · arxiv.orgL'étude classique du pré-entraînement adaptatif au domaine et à la tâche.
- 02LoRA Learns Less and Forgets LessBiderman et al., 2024 · arXiv · arxiv.orgLoRA par rapport au fine-tuning complet pour le pré-entraînement continu, et pourquoi le rang a son importance.
- 03Synthetic continued pretrainingYang et al., 2024 · arXiv · arxiv.orgPourquoi un petit corpus enseigne peu par lui-même, et comment les variations synthétiques sont utiles.
- 04SFT TrainerHugging Face TRL docs · huggingface.coEntraînement sur du texte brut et regroupement de séquences avec Hugging Face TRL.
- 05Supervised and distillation fine-tuning for open modelsGoogle Cloud docs · cloud.google.comAjustement de modèles ouverts tels que Gemma, Llama et Qwen sur Vertex AI.