Réglage fin supervisé (SFT) - Amazon SageMaker AI

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.

Réglage fin supervisé (SFT)

Les sections suivantes décrivent le processus de réglage fin supervisé (SFT), à la fois du SFT complet et du SFT efficace en termes de paramètres.

Réglage précis supervisé (SFT) de rang complet

Le réglage fin supervisé (SFT) est le processus qui consiste à fournir un ensemble de paires de réponses rapides à un modèle de base afin d'améliorer les performances d'un modèle de base préentraîné sur une tâche spécifique. Les exemples étiquetés sont formatés sous forme de paires prompte-réponse et formulés sous forme d'instructions. Ce processus d'optimisation modifie les poids du modèle.

Vous devez utiliser SFT lorsque vous disposez de données spécifiques à un domaine qui nécessitent la fourniture de paires de réponses rapides spécifiques pour des résultats optimaux.

Notez que vos ensembles de données d'entrée de formation et de validation doivent résider dans des compartiments appartenant au client, et non dans des compartiments S3 séquestres ou gérés par des services.

Exigences en matière de données

Pour le SFT à rang complet et le SFT à adaptateur bas de gamme (LoRa), les données doivent suivre le format de fonctionnement Amazon Bedrock Converse. Pour des exemples et des contraintes liés à ce format, voir Préparation des données pour affiner les modèles de compréhension.

Pour valider le format de votre jeu de données avant de le soumettre, nous vous recommandons d'utiliser le script de validation du référentiel d'échantillons Amazon Bedrock. Cet outil de validation permet de garantir que vos fichiers JSONL respectent les spécifications de format requises et d'identifier tout problème potentiel avant de soumettre votre travail de mise au point.

Les paramètres Amazon Nova disponibles pour le réglage avec SFT sont les suivants :

  • Exécuter la configuration

    • name: nom descriptif de votre tâche de formation. Cela permet d'identifier votre travail dans le AWS Management Console.

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

    • model_name_or_path: le chemin vers le modèle de base à utiliser pour votre entraînement. Sélectionnez le modèle à utiliser à partir denova-micro/prod, nova-lite/prodnova-pro/prod, ou le chemin S3 pour le point de contrôle post-entraînement ()s3://<escrow bucket>/<job id>/outputs/checkpoints.

    • replicas: le nombre d'instances de calcul à utiliser pour la formation distribuée. Les valeurs disponibles varient en fonction du modèle choisi. Amazon Nova Micro prend en charge 2, 4 ou 8 répliques. Amazon Nova Lite prend en charge 4, 8, 16 ou 32 répliques. Amazon Nova Pro prend en charge 6, 12 ou 24 répliques.

    • data_s3_path: l'emplacement S3 de l'ensemble de données d'entraînement, qui est un fichier JSONL. Ce fichier doit résider dans la même Compte AWS région que le cluster. Tous les emplacements S3 situés dans le chemin S3 fourni doivent se trouver dans le même compte et dans la même région.

    • validation_data_s3_path: (Facultatif) L'emplacement S3 de l'ensemble de données de validation, qui est un fichier JSONL. Ce fichier doit résider dans le même compte et dans la même région que le cluster. Tous les emplacements S3 situés dans le chemin S3 fourni doivent se trouver dans le même compte et dans la même région.

    • output_s3_path: emplacement S3 où le manifeste et les TensorBoard journaux sont stockés. Tous les emplacements S3 situés dans le chemin S3 fourni doivent se trouver dans le même compte et dans la même région.

  • Configuration de la formation

    • max_length: longueur de séquence maximale en jetons. Cela détermine la taille de la fenêtre contextuelle pour l'entraînement. La valeur maximale prise en charge est de 65 536 jetons pour SFT.

      Des séquences plus longues amélioreront l'efficacité de l'entraînement au prix d'une augmentation des besoins en mémoire. Nous vous recommandons de faire correspondre le max_length paramètre à la distribution de vos données.

  • Paramètres de l'entraîneur

    • max_epochs: le nombre de passages complets dans votre ensemble de données d'entraînement. La valeur maximale est 5.

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

  • Réglages du modèle

    • hidden_dropout: probabilité de supprimer les sorties d'état masquées. Augmentez cette valeur d'environ 0,0-0,2 pour réduire le surajustement sur les petits ensembles de données. Les valeurs valides sont comprises entre 0 et 1 inclus.

    • attention_dropout: La 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.

    • ffn_dropout: Probabilité de perte des sorties réseau prévisionnelles. 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. Les valeurs valides sont comprises entre 1e-6-1e-3 inclus. Nous recommandons des valeurs comprises entre 1e-6-1e-4 pour de bonnes performances.

    • name: algorithme d'optimisation. Actuellement, seul distributed_fused_adam est pris en charge.

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

    • warmup_steps: Le 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: Le taux d'apprentissage minimum à la fin de la décadence. Les valeurs valides sont comprises entre 0 et 1 inclus, mais elles doivent être inférieures au taux d'apprentissage.

Démarrage rapide avec une recette SFT complète

Voici une recette de SFT de rang complet qui vous permet de démarrer rapidement une tâche SFT sur un cluster. HyperPod Cette recette suppose également que vous vous êtes connecté à votre HyperPod cluster à l'aide des AWS informations d'identification correctes.

run: name: "my-sft-micro-job" # gets appended with a unique ID for HP jobs model_type: "amazon.nova-micro-v1:0:128k" model_name_or_path: "nova-micro/prod" replicas: 2 data_s3_path: s3:Replace with your S3 bucket name/input.jsonl validation_data_s3_path: [OPTIONAL] s3:your S3 bucket name/input.jsonl output_s3_path: [S3_PATH_TO_STORE_MANIFEST] ## training specific configs training_config: max_length: 32768 save_steps: 100000 replicas: ${recipes.run.replicas} micro_batch_size: 1 task_type: sft global_batch_size: 64 weights_only: True allow_percentage_invalid_samples: 10 exp_manager: exp_dir: null create_wandb_logger: False create_tensorboard_logger: True project: null name: null checkpoint_callback_params: monitor: step save_top_k: 10 mode: max every_n_train_steps: ${recipes.training_config.save_steps} save_last: True create_early_stopping_callback: True early_stopping_callback_params: min_delta: 0.001 mode: min monitor: "val_loss" patience: 2 trainer: log_every_n_steps: 1 max_epochs: -1 max_steps: 16 val_check_interval: 100 limit_test_batches: 0 gradient_clip_val: 1.0 num_nodes: ${recipes.training_config.replicas} model: hidden_dropout: 0.0 # Dropout probability for hidden state transformer. attention_dropout: 0.0 # Dropout probability in the attention layer. ffn_dropout: 0.0 # Dropout probability in the feed-forward layer. sequence_parallel: True optim: lr: 1e-5 name: distributed_fused_adam bucket_cap_mb: 10 contiguous_grad_buffer: False overlap_param_sync: False contiguous_param_buffer: False overlap_grad_sync: False adam_w_mode: true eps: 1e-06 weight_decay: 0.0 betas: - 0.9 - 0.999 sched: name: CosineAnnealing warmup_steps: 10 constant_steps: 0 min_lr: 1e-6 mm_cfg: llm: freeze: false image_projector: freeze: true require_newline: true video_projector: freeze: true require_newline: false peft: peft_scheme: null training_validation: loader: args: data_loader_workers: 1 prefetch_factor: 2 collator: args: force_image_at_turn_beginning: false
Exemple de recette complète

Voici un exemple de recette complète pour SFT avec tous les composants correctement configurés.

## Run config run: name: "my-sft-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification model_name_or_path: "nova-lite/prod" # Base model path replicas: 4 # Number of compute instances for training data_s3_path: s3:Replace with your S3 bucket name/input.jsonl validation_data_s3_path: [OPTIONAL] s3:your S3 bucket name/input.jsonl output_s3_path: [S3_PATH_TO_STORE_MANIFEST] ## Training specific configs training_config: max_length: 32768 # Maximum context window size (tokens) trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states attention_dropout: 0.0 # Dropout for attention weights ffn_dropout: 0.0 # Dropout for feed-forward networks optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength betas: # Adam optimizer betas - 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 peft: peft_scheme: null # Set to null for full-parameter fine-tuning
Limites

La publication de métriques dans Weights & Biases n' MLFlow est pas prise 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é.

Pour ajuster les hyperparamètres, suivez les instructions de la section Sélection des hyperparamètres.

Réglage fin efficace en fonction des paramètres (PEFT)

Le réglage fin efficace par paramètres (PEFT) consiste à réentraîner un petit nombre de poids supplémentaires pour adapter un modèle de base à de nouvelles tâches ou à de nouveaux domaines. Plus précisément, l'adaptateur de bas rang (LoRa) PEFT affine efficacement les modèles de base en introduisant des matrices de poids entraînables de bas rang dans des couches de modèles spécifiques, réduisant ainsi le nombre de paramètres pouvant être entraînés tout en préservant la qualité du modèle.

Un adaptateur PEFT LoRa complète le modèle de base en incorporant des couches d'adaptation légères qui modifient les poids du modèle lors de l'inférence tout en préservant les paramètres du modèle d'origine intacts. Cette approche est également considérée comme l'une des techniques de réglage fin les plus rentables. Pour plus d'informations, voir Affiner les modèles avec les composants d'inférence des adaptateurs.

Vous devez utiliser LoRa PEFT dans les scénarios suivants :

  • Vous souhaitez commencer par une procédure d'entraînement rapide.

  • Les performances du modèle de base sont déjà satisfaisantes. Dans ce cas, l'objectif de LoRa PEFT est d'améliorer ses capacités dans le cadre de multiples tâches connexes, telles que la synthèse de texte ou la traduction linguistique. Les propriétés de régularisation de LoRa PEFT aident à prévenir le surajustement et à atténuer le risque que le modèle « oublie » le domaine source. Cela garantit que le modèle reste polyvalent et adaptable à diverses applications.

  • Vous souhaitez exécuter des scénarios de réglage précis des instructions avec des ensembles de données relativement petits. LoRa PEFT fonctionne mieux avec des ensembles de données plus petits et spécifiques à une tâche que des ensembles de données plus larges et plus grands.

  • Vous disposez de grands ensembles de données étiquetés qui dépassent les limites de données de personnalisation d'Amazon Bedrock. Dans ce cas, vous pouvez utiliser LoRa PEFT sur l' SageMaker IA pour obtenir de meilleurs résultats.

  • Si vous avez déjà obtenu des résultats prometteurs grâce au réglage précis d'Amazon Bedrock, LoRa PEFT en SageMaker IA peut vous aider à optimiser davantage les hyperparamètres du modèle.

Les paramètres Amazon Nova disponibles avec LoRa PEFT incluent :

  • Exécuter la configuration

    • name: nom descriptif de votre tâche de formation. Cela permet d'identifier votre travail dans le AWS Management Console.

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

    • model_name_or_path: le chemin vers le modèle de base à utiliser pour votre entraînement. Sélectionnez le modèle à utiliser. Les options disponibles sontnova-micro/prod, nova-lite/prodnova-pro/prod, ou le chemin S3 pour le point de contrôle post-entraînement ()s3://<escrow bucket>/<job id>/outputs/checkpoints.

    • replicas: le nombre d'instances de calcul à utiliser pour la formation distribuée. Les valeurs disponibles varient en fonction du modèle que vous utilisez. Amazon Nova Micro prend en charge 2, 4 ou 8 répliques. Amazon Nova Lite prend en charge 4, 8, 16 ou 32 répliques. Amazon Nova Pro prend en charge 6, 12 ou 24 répliques.

    • output_s3_path: emplacement S3 où le manifeste et les TensorBoard journaux sont stockés. Tous les emplacements S3 situés dans le chemin S3 fourni doivent se trouver dans le même compte et dans la même région.

  • Configuration de la formation

    • max_length: longueur de séquence maximale en jetons. Cela détermine la taille de la fenêtre contextuelle pour l'entraînement. La valeur maximale prise en charge est de 65 536 jetons pour LoRa PEFT.

      Des séquences plus longues amélioreront l'efficacité de l'entraînement au prix d'une augmentation des besoins en mémoire. Nous vous recommandons de faire correspondre le max_length paramètre à la distribution de vos données.

  • Paramètres de l'entraîneur

    • max_epochs: le nombre de passages complets dans votre ensemble de données d'entraînement. Vous pouvez définir l'un max_steps ou l'autremax_epochs, mais nous vous déconseillons de définir les deux. La valeur maximale est 5.

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

  • Réglages du modèle

    • hidden_dropout: probabilité de supprimer les sorties d'état masquées. Augmentez cette valeur d'environ 0,0-0,2 pour réduire le surajustement sur les petits ensembles de données. Les valeurs valides sont comprises entre 0 et 1 inclus.

    • attention_dropout: La 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.

    • ffn_dropout: Probabilité de perte des sorties réseau prévisionnelles. 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-1e-4 pour de bonnes performances. Les valeurs valides sont comprises entre 0 et 1 inclus.

    • name: algorithme d'optimisation. Actuellement, seul distributed_fused_adam est pris en charge.

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

    • warmup_steps: Le 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: Le taux d'apprentissage minimum à la fin de la décadence. Les valeurs valides sont comprises entre 0 et 1 inclus, mais elles doivent être inférieures au taux d'apprentissage.

  • Paramètres de configuration LoRa

    • peft_scheme: défini sur pour lora activer l'adaptation de rang inférieur.

    • alpha: Le facteur d'échelle pour les poids LoRa. Ce paramètre est généralement défini sur la même valeur queadapter_dim.

    • adaptor_dropout: Le paramètre de régularisation pour LoRa.

Recette PET

Voici une recette pour LoRa PEFT.

## Run config run: name: "my-lora-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification model_name_or_path: "nova-lite/prod" # Base model path replicas: 4 # Number of compute instances for training output_s3_path: [S3_PATH_TO_STORE_MANIFEST] ## Training specific configs training_config: max_length: 32768 # Maximum context window size (tokens) trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states attention_dropout: 0.0 # Dropout for attention weights ffn_dropout: 0.0 # Dropout for feed-forward networks optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength betas: # Adam optimizer betas - 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 peft: peft_scheme: "lora" # Enable LoRA for parameter-efficient fine-tuning lora_tuning: loraplus_lr_ratio: 8.0 # LoRA+ learning rate scaling factor alpha: 32 # Scaling factor for LoRA weights adapter_dropout: 0.01 # Regularization for LoRA parameters
Limites

Le PEFT présente les limites suivantes :

  • La configuration d'entraînement fournie précédemment contient les valeurs recommandées pour chaque paramètre.

  • 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é.

  • MLflow la journalisation n'est pas prise en charge.

Résolution des problèmes

Utilisez les informations suivantes pour résoudre les problèmes que vous pourriez rencontrer :

  • L'ensemble de données d'entrée pour la formation et la validation doit résider dans des compartiments appartenant au client, et non dans des compartiments S3 séquestres ou gérés par le service.

  • Si vous recevez un message d'erreur « Région introuvable » dans le AWS CLI, soumettez à nouveau la tâche en ajoutant la région au début de la commande start-job. Par exemple : AWS_REGION=us-east-1 hyperpod start-job ...Job Parameters.

  • Pour ajuster les hyperparamètres, suivez les instructions de la section Sélection des hyperparamètres.