# Pré-entraînement continu

* Le [carnet de complétion de texte](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Mistral_\(7B\)-Text_Completion.ipynb) est pour la préformation continue/texte brut.
* Le [carnet de préformation continue](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Mistral_v0.3_\(7B\)-CPT.ipynb) est pour apprendre une autre langue.

Vous pouvez en lire davantage sur la préformation continue et notre publication dans notre [article de blog](https://unsloth.ai/blog/contpretraining).

## Qu'est-ce que la préformation continue ?

La préformation continue ou continuelle (CPT) est nécessaire pour « orienter » le modèle de langue afin qu'il comprenne de nouveaux domaines de connaissances, ou des domaines hors distribution. Les modèles de base comme Llama-3 8b ou Mistral 7b sont d'abord préentraînés sur des ensembles de données gigantesques de billions de tokens (Llama-3 par ex. est de 15 billions).

Mais parfois ces modèles n'ont pas été bien entraînés sur d'autres langues, ou des domaines textuels spécifiques, comme le droit, la médecine ou d'autres domaines. Ainsi, la préformation continue (CPT) est nécessaire pour faire apprendre au modèle de langue de nouveaux tokens ou jeux de données.

## Fonctionnalités avancées :

### Chargement d'adaptateurs LoRA pour un affinage continu

Si vous avez sauvegardé un adaptateur LoRA via Unsloth, vous pouvez également continuer l'entraînement en utilisant vos poids LoRA. L'état de l'optimiseur sera également réinitialisé. Pour charger même les états de l'optimiseur afin de continuer l'affinage, voir la section suivante.

```python
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "LORA_MODEL_NAME",
    max_seq_length = max_seq_length,
    dtype = dtype,
    load_in_4bit = load_in_4bit,
)
trainer = Trainer(...)
trainer.train()
```

### Préformation continue et affinage du `lm_head` image 1 `embed_tokens` matrices

Ajouter `lm_head` image 1 `embed_tokens`. Pour Colab, parfois vous manquerez de mémoire pour Llama-3 8b. Si c'est le cas, ajoutez simplement `lm_head`.

```python
model = FastLanguageModel.get_peft_model(
    model,
    r = 16,
    target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
                      "gate_proj", "up_proj", "down_proj",
                      "lm_head", "embed_tokens",],
    lora_alpha = 16,
)
```

Ensuite, utilisez 2 taux d'apprentissage différents - un taux 2 à 10 fois plus petit pour le `lm_head` ou `embed_tokens` comme ceci :

```python
from unsloth import UnslothTrainer, UnslothTrainingArguments

trainer = UnslothTrainer(
    ....
    args = UnslothTrainingArguments(
        ....
        learning_rate = 5e-5,
        embedding_learning_rate = 5e-6, # 2-10x plus petit que learning_rate
    ),
)
```
