Pré-entraînement continu (CPT) - Amazon SageMaker AI

Pré-entraînement continu (CPT)

Le pré-entraînement continu (CPT) est le processus qui consiste à poursuivre l’entraînement d’un modèle de fondation pré-entraîné sur de nouvelles données en utilisant les mêmes objectifs non supervisés (tels que la modélisation du langage masqué ou la modélisation du langage causal). Il préserve les capacités linguistiques générales précédemment apprises tout en s’adaptant à de nouveaux domaines ou à des changements de distribution.

Le CPT n’implique pas de modifications architecturales ni de peaufinage de tâches spécifiques en aval. Il étend plutôt la capacité de compréhension du langage du modèle d’une manière adaptée au domaine.

Vous devez utiliser le CPT dans les scénarios suivants :

  • Vous disposez de données à grande échelle, non étiquetées, spécifiques à un domaine (par exemple, la médecine ou la finance).

  • Vous souhaitez que le modèle conserve des capacités linguistiques générales tout en améliorant le contenu spécifique au domaine.

  • Vous souhaitez améliorer les performances à zéro ou à quelques coups dans des domaines spécialisés sans effectuer de peaufinage approfondi spécifique à une tâche.

Exigences de format de données

Nous vous recommandons de respecter les caractéristiques de jeu de données suivantes lors de l’exécution du CPT :

  • Diversité : vos données doivent couvrir un large éventail d’expressions au sein du domaine cible afin d’éviter un surajustement.

  • Représentation : vos données doivent refléter la distribution à laquelle le modèle sera confronté lors de l’inférence.

  • Propreté : le bruit et la redondance de vos données peuvent dégrader les performances. La déduplication et la normalisation du texte améliorent l’entraînement des modèles.

  • Mise à l’échelle : des jeux de données plus volumineux peuvent aider, mais au-delà d’un certain seuil (par exemple, l’exécution de plusieurs époques sur des données limitées), les risques de surajustement augmentent.

Les jeux de données d’entraînement et de validation doivent être des fichiers JSONL au format Converse, 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 votre domaine cible.

Validation d’un jeu de données

Pour valider votre jeu de données avant de soumettre votre tâche CPT, vérifiez les conditions suivantes :

  • Chaque ligne doit contenir un objet JSON valide.

  • Chaque objet possède un champ « texte » qui contient des données sous forme de chaîne.

  • Aucun champ autre que « texte » n’est présent.

  • Le fichier a une extension .jsonl.

Temps d’entraînement

Le temps consacré à l’entraînement dépend fortement de la taille du jeu de données, du nombre d’instances utilisées et du modèle entraîné. Les temps d’entraînement devraient évoluer de manière linéaire. Le tableau suivant fournit quelques exemples de temps d’entraînement pour différents modèles.

Type de modèle

GBS

Nombre d’exemples dans le jeu de données

Nombre d’instances P5

Valeur max_length

Durée approximative d’entraînement en heures

Amazon Nova Micro

256

100 000

8

8 192

4

Amazon Nova Lite

256

100 000

16

8 192

4

Amazon Nova Pro

256

100 000

24

8 192

10

Les jeux de données d’entraînement et de validation doivent être des fichiers JSONL au format d’opération Converse Amazon Bedrock, où chaque ligne contient un objet JSON représentant une conversation avec les champs et la structure requis.

Les paramètres Amazon Nova disponibles pour l’ajustement du CPT sont les suivants :

  • Configuration d’exécution

    • name : nom descriptif de votre tâche d’entraînement. Cela permet d’identifier votre tâche dans la AWS Management Console.

    • model_type : variante du modèle Amazon Nova à utiliser. Les options disponibles sont amazon.nova-micro-v1:0:128k, amazon.nova-lite-v1:0:300k ou amazon.nova-pro-v1:0:300k.

    • model_name_or_path : chemin vers le modèle de base à utiliser pour l’entraînement. Les options disponibles sont nova-micro/prod, nova-lite/prod, nova-pro/prod ou le chemin S3 pour le point de contrôle post-entraînement (s3://customer-escrow-bucket-unique_id/training_run_name).

    • replicas : nombre d’instances de calcul à utiliser pour l’entraînement distribué. Les valeurs disponibles varient en fonction du modèle que vous choisissez. Amazon Nova Micro prend en charge 2, 4 ou 8 réplicas. Amazon Nova Lite prend en charge 4, 8, 16 ou 32 réplicas. Amazon Nova Pro prend en charge 6, 12 ou 24 réplicas.

    • data_s3_path : emplacement S3 du jeu de données d’entraînement, qui est un fichier JSONL. Ce fichier doit résider dans le même Compte AWS 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.

    • validation_data_s3_path : (Facultatif) 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_s3_path : emplacement S3 où le manifeste et les journaux TensorBoard sont stockés. Tous les emplacements S3 fournis doivent se trouver dans le même Compte AWS et la même Région AWS.

  • Configuration d’entraînement

    • max_length : 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_length à la distribution de vos données.

  • Paramètres de l’entraîneur

    • global_batch_size : nombre total d’exemples d’entraînement traités ensemble lors des passes avant ou arrière pour l’ensemble des dispositifs et applications de travail.

      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.

    • max_epochs : nombre de passages complets sur votre jeu de données d’entraînement.

      En général, les plus grands jeux de données nécessitent moins d’époques pour converger, tandis que les plus petits en nécessitent plus. Nous vous recommandons d’ajuster le nombre d’époques en fonction de la taille de vos données afin d’éviter un surajustement.

  • Paramètres du modèle

    • hidden_dropout : probabilité de perte des 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_dropout : probabilité de perte des poids d’attention. Ce paramètre peut faciliter la généralisation. Les valeurs valides sont comprises entre 0 et 1 inclus.

    • ffn_dropout : probabilité de perte des sorties du réseau à propagation avant. Les valeurs valides sont comprises entre 0 et 1 inclus.

  • Configuration d’optimiseur

    • lr : 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.

    • name : algorithme de l’optimiseur. Actuellement, seul distributed_fused_adam est pris en charge.

    • weight_decay : force de régularisation L2. Des valeurs plus élevées (entre 0,01 et 0,1) augmentent la régularisation.

    • warmup_steps : 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_lr : taux d’apprentissage minimal en fin de décalage. Les valeurs valides sont comprises entre 0 et 1 inclus, mais doivent être inférieures au taux d’apprentissage.

Formule de CPT

Ce qui suit est une formule de CPT.

## Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification, do not change model_name_or_path: "nova-lite/prod" # Base model path, do not change replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16 data_s3_path: [S3_PATH_TO_TRAIN_DATASET] validation_data_s3_path: (OPTIONAL)[S3_PATH_TO_VALIDATION_DATASET] output_s3_path: [S3_PATH_TO_STORE_MANIFEST] ## Training specific configs training_config: max_length: 8192 # Maximum context window size (tokens). global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_epochs: 2 # Number of training epochs 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 ffn_dropout: 0.0 # Dropout for feed-forward networks, must be between 0.0 and 1.0 optim: 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 betas: # Adam optimizer betas, must be between 0.0 and 1.0 - 0.9 - 0.999 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
Limites

Le CPT comporte les limitations suivantes :

  • Les jeux de données multimodaux ne sont pas pris en charge.

  • Les points de contrôle intermédiaires ne sont pas enregistrés pour évaluation et vous ne pouvez pas les reprendre à partir d’un point de contrôle intermédiaire. Seul le dernier point de contrôle est enregistré.

  • La journalisation MLflow n’est pas prise en charge.