

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Pré-entraînement continu (CPT)
<a name="nova-cpt"></a>

La pré-formation continue (CPT) est une technique de formation qui prolonge la phase de pré-formation d'un modèle de base en l'exposant à du texte supplémentaire non étiqueté provenant de domaines ou de corpus spécifiques. Contrairement au réglage fin supervisé, qui nécessite des paires d'entrées-sorties étiquetées, le CPT s'entraîne sur des documents bruts pour aider le modèle à acquérir une connaissance plus approfondie de nouveaux domaines, à apprendre la terminologie et les modèles d'écriture spécifiques à un domaine, et à s'adapter à des types de contenu ou à des domaines particuliers.

Cette approche est particulièrement utile lorsque vous disposez de volumes importants (des dizaines de milliards de jetons) de données textuelles spécifiques à un domaine, telles que des documents juridiques, de la littérature médicale, de la documentation technique ou du contenu commercial propriétaire, et que vous souhaitez que le modèle développe une fluidité native dans ce domaine. Généralement, après la phase CPT, le modèle doit subir des étapes supplémentaires de réglage des instructions pour lui permettre d'utiliser les connaissances nouvellement acquises et d'effectuer des tâches utiles.

**Modèles pris en charge**  
Le CPT est disponible pour les modèles Amazon Nova suivants :
+ Nova 1.0 (Micro, Lite, Pro)
+ Nova 2.0 (Lite)

**Quand utiliser Nova 1.0 par rapport à Nova 2.0**  
La gamme de modèles Amazon Nova offre plusieurs points de fonctionnement en termes de rapport prix/performances afin d'optimiser la précision, la vitesse et le coût.

Choisissez Nova 2.0 lorsque vous avez besoin des éléments suivants :
+ Capacités de raisonnement avancées pour les tâches analytiques complexes
+ Performances supérieures en matière de codage, de mathématiques et de résolution de problèmes scientifiques
+ Support d'une plus longue durée de contexte
+ De meilleures performances multilingues

**Note**  
Le modèle le plus grand n'est pas toujours meilleur. Tenez compte du compromis coût-performance et des exigences spécifiques de votre entreprise lorsque vous choisissez entre les modèles Nova 1.0 et Nova 2.0.

# CPT sur Nova 2.0
<a name="nova-cpt-2"></a>

Amazon Nova Lite 2.0 est un modèle de raisonnement conçu sur des ensembles de données plus volumineux et plus diversifiés que Nova Lite 1.0. Bien qu'il s'agisse d'un modèle plus grand, Nova Lite 2.0 permet une inférence plus rapide que Nova Lite 1.0 tout en offrant des capacités de raisonnement améliorées, des longueurs de contexte plus longues et des performances multilingues améliorées.

CPT on Nova 2.0 vous permet d'étendre ces fonctionnalités avancées avec les données spécifiques à votre domaine, ce qui permet au modèle de développer une expertise approfondie dans des domaines spécialisés tout en conservant ses capacités de raisonnement et d'analyse supérieures.

## Exemple de recette CPT
<a name="nova-cpt-2-sample-recipe"></a>

Voici un exemple de recette pour le CPT. Vous pouvez trouver cette recette et d'autres dans le référentiel de [recettes](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/training/nova).

```
# Note:
# This recipe can run on p5.48xlarge
# Run config
run:
  name: "my-cpt-run"                           # A descriptive name for your training job
  model_type: "amazon.nova-2-lite-v1:0:256k"   # Model variant specification, do not change
  model_name_or_path: "nova-lite-2/prod"        # Base model path, do not change
  replicas: 8                                   # Number of compute instances for training, allowed values are 4, 8, 16, 32
  data_s3_path: ""                              # Customer data paths
  validation_data_s3_path: ""                   # Customer validation data paths
  output_s3_path: ""                            # Output artifact path,  job-specific configuration - not compatible with standard SageMaker Training Jobs
  mlflow_tracking_uri: ""                       # Required for MLFlow
  mlflow_experiment_name: "my-cpt-experiment"   # Optional for MLFlow. Note: leave this field non-empty
  mlflow_run_name: "my-cpt-run"                 # Optional for MLFlow. Note: leave this field non-empty

## Training specific configs
training_config:
  task_type: cpt
  max_length: 8192                              # Maximum context window size (tokens)
  global_batch_size: 256                        # Global batch size, allowed values are 32, 64, 128, 256.

  trainer:
    max_steps: 10                               # The number of training steps to run total
    val_check_interval: 10                      # The number of steps between running validation. Integer count or float percentage
    limit_val_batches: 2                        # Batches of the validation set to use each trigger

  model:
    hidden_dropout: 0.0                         # Dropout for hidden states, must be between 0.0 and 1.0
    attention_dropout: 0.0                      # Dropout for attention weights, must be between 0.0 and 1.0

  optim:
    optimizer: adam
    lr: 1e-5                                    # Learning rate
    name: distributed_fused_adam                # Optimizer algorithm, do not change
    adam_w_mode: true                           # Enable AdamW mode
    eps: 1e-06                                  # Epsilon for numerical stability
    weight_decay: 0.0                           # L2 regularization strength, must be between 0.0 and 1.0
    adam_beta1: 0.9                             # Beta1 for Adam optimizer
    adam_beta2: 0.95                            # Beta2 for Adam optimizer
    sched:
      warmup_steps: 10                          # Learning rate warmup steps
      constant_steps: 0                         # Steps at constant learning rate
      min_lr: 1e-6                              # Minimum learning rate, must be lower than lr
```

## Préparation des données pour le CPT on 2.0
<a name="nova-cpt-2-data-prep"></a>

**Exigences de format de données**  
Les ensembles de données de formation et de validation doivent être des fichiers JSONL au format illustré ci-dessous, où chaque ligne contient un objet JSON représentant une conversation avec les champs et la structure requis. Voici un exemple :

```
{"text": "AWS stands for Amazon Web Services"}
{"text": "Amazon SageMaker is a fully managed machine learning service"}
{"text": "Amazon Bedrock is a fully managed service for foundation models"}
```

Les entrées de texte doivent contenir un contenu naturellement fluide et de haute qualité qui représente le domaine cible.

Vérifiez que les données peuvent être converties [au format Arrow](https://huggingface.co/docs/datasets/en/about_arrow). Utilisez le script python ci-dessous pour vous aider. Assurez-vous que la `datasets==2.18.0` version minimale est utilisée :

```
from datasets import load_dataset, load_from_disk
from pathlib import Path

input_path = Path("<Your jsonl file>")
output_path = Path("<Your output directory>")

dataset = load_dataset("json", data_files=str(input_path), split="train")
dataset.save_to_disk(str(output_path), max_shard_size="1GB")

try:
  test_dataset = datasets.load_from_disk(output_dir)
  print(f"Dataset loaded successfully ✅! Contains {len(test_dataset)} samples")
except Exception as e:
  print(e)
```

Il devrait imprimer le même nombre de lignes que dans le fichier JSONL.

Lorsque vous utilisez le mixage de données, exécutez la première tâche avec. `max_steps=2` Cela permettra de créer des optimisations dans le cluster pour l'accès aux données et de vérifier que tous les mélanges de données sont disponibles.

**Comment préparer les données pour le CPT**  
Les données d'entraînement sont le facteur déterminant le plus crucial pour le succès de la pré-formation continue. Bien que les données du CPT soient souvent décrites comme « non étiquetées », la réalité est bien plus nuancée. La manière dont les données sont structurées, formatées et présentées détermine si le modèle va acquérir les connaissances et les compétences requises pour le cas d'utilisation métier.

### Préparation d'ensembles de données métiers structurés pour le CPT
<a name="nova-cpt-2-structured-data"></a>

Il s'agit d'un défi courant pour les entreprises et les organisations qui élaborent des modèles de base spécialisés dans leur domaine. La plupart des entreprises possèdent de riches référentiels de données structurées : catalogues de produits, profils utilisateurs, journaux de transactions, soumissions de formulaires, appels d'API et métadonnées opérationnelles. À première vue, cela semble très différent du texte Web non structuré généralement utilisé dans le cadre de la pré-formation standard.

Pour tirer des leçons efficaces des données commerciales structurées, réfléchissez bien aux tâches en aval et concevez la présentation des données de manière à obliger le modèle à apprendre les bonnes relations prédictives.

Pour exploiter tout le potentiel de la pré-formation continue, pensez à :
+ Quelles tâches le modèle doit effectuer au moment de l'inférence
+ Quelles sont les informations présentes dans les données brutes
+ Comment structurer ces données afin que le modèle apprenne à les extraire et à les manipuler correctement

Le simple fait de transférer des données structurées dans la formation n'apprendra pas au modèle à raisonner à ce sujet. Donnez une forme active à la présentation des données afin de guider ce que le modèle apprend.

Dans les sections suivantes, une revue de la littérature démontre l'importance de l'augmentation des données et fournit des exemples de stratégies d'augmentation pour les données commerciales structurées qui donneront des idées utiles sur la façon de traiter et d'organiser un ensemble de données commerciales pour le CPT.

**Données structurées pour le CPT dans la littérature**  
Le CPT peut intégrer les faits du domaine dans le modèle, mais échoue souvent à les rendre récupérables et manipulables lorsque les entrées ou les tâches changent. Des expériences contrôlées montrent que, sans augmentation variable pendant le préentraînement, les modèles mémorisent des faits de manière fragile qui restent difficiles à extraire même après un réglage ultérieur des instructions, et ils recommandent d'injecter des instructions sous forme de signaux au début de l'entraînement. Pour les données semi-structurées, la sérialisation aléatoire et d'autres augmentations réduisent le surajustement du schéma. C'est pourquoi le CPT doit être entrelacé avec des tâches de type instruction plutôt que d'être exécuté d'abord et IFT plus tard. Des travaux axés sur la finance révèlent en outre que le mélange conjoint des données CPT et des données d'instructions par lots améliore la généralisation et réduit l'oubli par rapport à la recette séquentielle. Le rapport technique de Qwen converge sur le même schéma en intégrant des données d'enseignement de haute qualité dans la préformation elle-même, ce qui stimule l'apprentissage contextuel et préserve le suivi des instructions tout en acquérant de nouvelles connaissances dans le domaine.

L'augmentation des données pour les corpus semi-structurés est un levier clé. Le CPT sensible aux graphes synthétiques étend les petits ensembles de domaines en corpus liés à des entités qui enseignent explicitement les relations et les composés en les extrayant au moment de l'inférence. Le mixage conjoint du CPT et des instructions surpasse les pipelines séquentiels dans le domaine de la finance et l'équilibre entre le domaine des données générales réduit la dégradation des compétences générales. Le CPT dans un domaine à très grande échelle peut également conserver une large capacité et même permettre des compromis grâce à la fusion de modèles, tout en indiquant que le réglage des instructions est la prochaine étape essentielle, renforçant ainsi l'intérêt de l'introduction de signaux d'instructions pendant le CPT.

**Insuffler de la diversité par le biais de la randomisation et du remaniement**  
Une stratégie générale qui permet d'enseigner efficacement le modèle à partir des ensembles de données structurés et semi-structurés consiste à modifier l'ordre des champs dans les ensembles de données, voire à supprimer certaines clés de manière aléatoire.

Le remaniement des champs oblige le modèle à lire la signification de chaque valeur plutôt que l'endroit où elle apparaît et à apprendre les relations entre tous les champs. Par exemple, dans le cas d'un jeu vidéo publié sur Amazon Store, lorsque « Titre », « Plateforme », « Prix », « État » et « Édition » arrivent sous différentes formes, le modèle ne peut pas se fier au « troisième emplacement est la plateforme » ; il doit lier les étiquettes aux valeurs et connaître les relations bilatérales entre les attributs : titre, plateforme, prix, condition, prix. Ainsi, il peut, par exemple, déduire une plateforme probable à partir du nom d'un jeu et d'un prix observé, ou estimer une fourchette de prix plausible en fonction d'un titre et d'une plateforme.

La suppression aléatoire de clés lors de la sérialisation agit comme une suppression de fonctionnalités : elle empêche la co-adaptation sur un champ donné et oblige le modèle à récupérer les informations manquantes à partir des preuves restantes. Si le terme « Plateforme » est absent, le modèle doit le trouver dans la chaîne de titre ou dans le texte de compatibilité ; si le terme « Prix » est masqué, il doit être triangulé en fonction de la plate-forme, de l'édition et de l'état. Cela renforce la symétrie (A→B et B→A), la robustesse face aux listes compliquées du monde réel et l'invariance du schéma lorsque des champs sont manquants, renommés ou réorganisés.

Un exemple de style shopping le concrétise. Sérialisez le même article de plusieurs manières : « Titre : 'Elden Ring' \$1 Plateforme : PlayStation 5 \$1 État : usagé, comme neuf \$1 Prix : 34,99\$1 » et une permutation telle que « Prix : 34,99\$1 \$1 Titre : 'Elden Ring' \$1 État : usagé, comme neuf \$1 Plateforme : 5 ». Parfois, supprimez « Plateforme » tout en laissant « Compatible avec » dans la description. PlayStation PS5 Définissez des objectifs complémentaires tels que la prévision de la plateforme à partir de \$1title, price\$1 et la prédiction d'une tranche de prix à partir de \$1title, platform\$1. Étant donné que l'ordre et même la présence des clés varient, la seule stratégie stable consiste à apprendre les véritables relations entre les attributs plutôt que de mémoriser un modèle.

### La façon dont les données sont présentées est importante
<a name="nova-cpt-2-data-presentation"></a>

LLMs apprenez en prédisant le jeton suivant à partir de ce qu'ils ont déjà vu. Ainsi, l'ordre des champs et des événements affichés pendant l'entraînement détermine ce que le modèle peut apprendre. Si le format d'entraînement correspond à la tâche réelle, la perte se répercute sur les jetons de décision exacts. Si les champs sont mélangés sans structure, le modèle apprend les raccourcis ou mémorise la popularité, puis échoue lorsqu'on lui demande de choisir parmi les options.

Montrez d'abord la situation, puis les options, puis la décision. Si le modèle doit également en apprendre davantage sur les résultats ou les explications, placez-les après la décision.

### Échantillons d'emballage pour CPT
<a name="nova-cpt-2-packing"></a>

**Qu'est-ce que l'emballage ?**  
Cela signifie simplement de remplir chaque fenêtre de séquence des données d'entraînement avec plusieurs exemples complets afin que la fenêtre soit dense avec de vrais jetons, et non avec du remplissage.

**Pourquoi est-ce important ?**  
Pendant l'entraînement, une longueur de contexte maximale est définie, par exemple 8 192 jetons. Les lots sont mis en forme selon [taille du lot × longueur du contexte]. Si un exemple d'entraînement est plus court que la durée du contexte, les positions restantes sont rembourrées. Le rembourrage passe toujours par l'attention et les noyaux MLP, même si la perte est masquée. Le calcul est donc payé pour des jetons qui ne transmettent aucun signal d'apprentissage.

**Comment emballer ?**  
Pour regrouper plusieurs échantillons, concaténez plusieurs échantillons d'apprentissage avec un ` [DOC] ` séparateur entre les deux (notez l'espace avant et après le [DOC]) de telle sorte que la longueur totale des échantillons soit inférieure à la longueur de contexte souhaitée.

Voici un exemple de document compressé :

```
{"text": "training sample 1 [DOC] training sample 2 [DOC] training sample 3"}
```

### Paramètres de réglage CPT
<a name="nova-cpt-2-tuning-parameters"></a>

Les paramètres disponibles pour un réglage précis avec le CPT sont les suivants :

**Configuration d'exécution**  

+ **nom : nom** descriptif de votre poste de formation. Cela permet d'identifier votre tâche dans la console AWS de gestion.
+ **model\$1type** : variante du modèle Amazon Nova à utiliser. Les options disponibles sont les `amazon.nova-2-lite-v1:0:256k` suivantes :
+ **model\$1name\$1or\$1path : chemin vers** le modèle de base à utiliser pour votre entraînement. Les options disponibles sont`nova-lite-2/prod`, ou le chemin S3 pour le point de contrôle post-entraînement ()`s3://customer-escrow-bucket-unique_id/training_run_name`.
+ **répliques** : nombre d'instances de calcul à utiliser pour la formation distribuée. Les valeurs disponibles varient en fonction du modèle que vous choisissez. Amazon Nova Lite 2.0 prend en charge 4, 8, 16 ou 32 répliques.
+ **data\$1s3\$1path** : emplacement S3 du jeu de données d'entraînement, qui est un fichier JSONL. Ce fichier doit résider dans le même AWS compte et dans la même région que le cluster. Tous les emplacements S3 fournis doivent se trouver dans le même compte et la même région.
+ **validation\$1data\$1s3\$1path** : (Facultatif) L'emplacement S3 du jeu de données de validation, qui est un fichier JSONL. Ce fichier doit résider dans le même compte et la même région que le cluster. Tous les emplacements S3 fournis doivent se trouver dans le même compte et la même région.
+ **output\$1s3\$1path** : emplacement S3 où le manifeste et les journaux sont stockés. TensorBoard Tous les emplacements S3 fournis doivent se trouver dans le même AWS compte et dans la même AWS région.
+ **mlflow\$1tracking\$1uri** : l'ARN de l'application à utiliser pour la journalisation MLFlow MLFlow 
+ **mlflow\$1experiment\$1name** : nom de l'expérience MLFlow 
+ **mlflow\$1run\$1name : nom de l'exécution** MLFlow 

**Configuration de la formation**  

+ **max\$1length : longueur** de séquence maximale en jetons. Détermine la taille de la fenêtre contextuelle pour l’entraînement. La valeur maximale prise en charge est de 8 192 jetons pour le CPT.

  Des séquences plus longues amélioreront l’efficacité de l’entraînement au prix d’une augmentation des exigences de mémoire. Nous vous recommandons de faire correspondre le paramètre max\$1length à la distribution de vos données.
+ **global\$1batch\$1size** : nombre total d'échantillons d'entraînement traités ensemble en un seul passage en avant ou en arrière sur tous les appareils et tous les travailleurs.

  Cette valeur multiplie la taille du lot par appareil et le nombre d’appareils. Cela affecte la stabilité de l’entraînement et le débit. Nous vous recommandons de commencer par une taille de lot adaptée à la mémoire, puis d’augmenter verticalement à partir de là. Pour les données spécifiques à un domaine, des lots plus importants peuvent trop lisser les gradients.

**Paramètres de l'entraîneur**  

+ **max\$1steps** : le nombre d'étapes d'entraînement à exécuter. Chaque étape entraînera le modèle avec le `global_batch_size` nombre d'éléments

**Réglages du modèle**  

+ **hidden\$1dropout** : probabilité de supprimer les sorties d'état masquées. Augmentez cette valeur d’environ 0,0-0,2 pour réduire les surajustements sur de plus petits jeux de données. Les valeurs valides sont comprises entre 0 et 1 inclus.
+ **attention\$1dropout : probabilité de** perdre du poids d'attention. Ce paramètre peut faciliter la généralisation. Les valeurs valides sont comprises entre 0 et 1 inclus.

**Configuration de l'optimiseur**  

+ **lr** : le taux d'apprentissage, qui contrôle la taille des étapes lors de l'optimisation. Nous recommandons des valeurs comprises entre 1e-6 et 1e-4 pour de bonnes performances. Les valeurs valides sont comprises entre 0 et 1 inclus.
+ **nom** : L'algorithme de l'optimiseur. Actuellement, seul `distributed_fused_adam` est pris en charge.
+ **weight\$1decay** : La force de régularisation L2. Des valeurs plus élevées (entre 0,01 et 0,1) augmentent la régularisation.
+ **warmup\$1steps** : nombre d'étapes pour augmenter progressivement le taux d'apprentissage. Cela améliore la stabilité de l’entraînement. Les valeurs valides sont comprises entre 1 et 20 inclus.
+ **min\$1lr** : Le taux d'apprentissage minimum à la fin de la décadence. Les valeurs valides sont comprises entre 0 et 1 inclus, mais doivent être inférieures au taux d’apprentissage.