Création d’une tâche AutoML pour optimiser les modèles de génération de texte à l’aide de l’API
Les grands modèles de langage (LLM) excellent dans de nombreuses tâches génératives, notamment la génération de texte, la synthétisation, la complétion, la réponse aux questions, etc. Leur performance peut être attribuée à leur taille importante et à leur entraînement approfondi sur divers jeux de données et différentes tâches. Cependant, des domaines spécifiques, tels que les soins de santé et les services financiers, peuvent nécessiter un peaufinage personnalisé pour s’adapter à des données et à des cas d’utilisation uniques. En adaptant leur entraînement à leur domaine particulier, les LLM peuvent améliorer leurs performances et fournir des résultats plus précis pour des applications ciblées.
Autopilot permet d’optimiser une sélection de modèles de texte génératifs pré-entraînés. En particulier, Autopilot prend en charge le peaufinage sur instructions d’une sélection de grands modèles de langage (LLM) à usage général optimisés par JumpStart.
Note
Les modèles de génération de texte qui prennent en charge le peaufinage dans Autopilot sont actuellement accessibles exclusivement dans les régions prises en charge par SageMaker Canvas. Consultez la documentation SageMaker Canvas pour obtenir la liste complète des régions prises en charge.
Le peaufinage d’un modèle pré-entraîné nécessite un jeu de données spécifique contenant des instructions claires qui indiquent au modèle comment générer des sorties ou se comporter pour cette tâche. Le modèle apprend du jeu de données et ajuste ses paramètres conformément aux instructions fournies. Le peaufinage sur instructions implique l’utilisation d’exemples étiquetés au format de paires invite-réponse et formulés sous forme d’instructions. Pour plus d’informations sur le peaufinage, consultez Peaufinage d’un modèle de fondation.
Les instructions suivantes illustrent le processus de création d’une tâche Amazon SageMaker Autopilot en tant qu’expérience pilote pour optimiser les LLM de génération de texte à l’aide de la Référence des API SageMaker.
Note
Les tâches telles que la classification d’images et de texte, les prévisions de séries temporelles et le peaufinage des grands modèles de langage sont exclusivement disponibles via la version 2 de l’API REST AutoML. Si le langage de votre choix est Python, vous pouvez également vous référer directement au kit AWS SDK pour Python (Boto3)
Les utilisateurs qui préfèrent la commodité d’une interface utilisateur peuvent utiliser Amazon SageMaker Canvas afin d’accéder à des modèles pré-entraînés et à des modèles de fondation d’IA générative, ou de créer des modèles personnalisés adaptés à des besoins spécifiques en matière de texte, de classification d’images ou de prévision, ou encore à l’IA générative.
Pour créer une expérience de peaufinage d’un LLM par programmation, vous pouvez appeler l’API CreateAutoMLJobV2 dans n’importe quel langage pris en charge par Amazon SageMaker Autopilot ou l’AWS CLI.
Pour plus d’informations sur la façon dont cette action d’API se traduit par une fonction dans le langage de votre choix, consultez la section Voir aussi de CreateAutoMLJobV2, et choisissez un kit SDK. À titre d'exemple, pour les utilisateurs de Python, consultez la syntaxe complète des demandes de create_auto_ml_job_v2 dans le kit AWS SDK pour Python (Boto3).
Note
Autopilot optimise les grands modèles de langage sans nécessiter l’entraînement et l’évaluation de plusieurs candidats. Au lieu de cela, à l’aide de votre jeu de données, Autopilot optimise directement votre modèle cible pour améliorer une métrique objective par défaut : la perte d’entropie croisée. Le peaufinage de modèles de langages dans Autopilot ne nécessite pas de définir le champ AutoMLJobObjective.
Une fois votre LLM peaufiné, vous pouvez évaluer ses performances en accédant aux différents scores ROUGE via le BestCandidate lors d’un appel d’API DescribeAutoMLJobV2. Le modèle fournit également des informations sur sa perte d’entraînement et de validation ainsi que sur sa perplexité. Pour une liste complète des métriques permettant d’évaluer la qualité du texte généré par les modèles peaufinés, consultez Métriques de peaufinage des grands modèles de langage dans Autopilot.
Prérequis
Avant d’utiliser Autopilot pour créer une expérience de peaufinage dans SageMaker AI, assurez-vous de suivre les étapes ci-après :
-
(Facultatif) Choisissez le modèle pré-entraîné que vous souhaitez optimiser.
Pour obtenir une liste des modèles pré-entraînés disponibles pour le peaufinage dans Amazon SageMaker Autopilot, consultez Grands modèles de langage pris en charge pour le peaufinage. La sélection d’un modèle n’est pas obligatoire. Si vous n’en spécifiez aucun, Autopilot utilise automatiquement le modèle Falcon7BInstruct par défaut.
-
Créez un jeu de données d’instructions. Consultez Types de fichiers de jeux de données et format des données d’entrée pour en savoir plus sur les exigences de format concernant votre jeu de données basé sur des instructions.
-
Placez votre jeu de données dans un compartiment Amazon S3.
-
Octroyez un accès complet au compartiment Amazon S3 contenant vos données d’entrée au rôle d’exécution SageMaker AI utilisé pour votre expérience.
-
Pour en savoir plus sur l’extraction de votre rôle d’exécution SageMaker AI, consultez Obtention de votre rôle d’exécution.
-
Pour en savoir plus sur l’octroi à votre rôle d’exécution SageMaker AI d’autorisations d’accès à un ou plusieurs compartiments spécifiques dans Amazon S3, consultez Ajout d’autorisations Amazon S3 supplémentaires à un rôle d’exécution SageMaker AI dans Créer un rôle d’exécution.
-
-
En outre, vous devez fournir à votre rôle d’exécution les autorisations nécessaires pour accéder au compartiment de stockage Amazon S3 par défaut utilisé par JumpStart. Cet accès est nécessaire pour stocker et extraire les artefacts de modèles pré-entraînés dans JumpStart. Pour octroyer l’accès à ce compartiment Amazon S3, vous devez créer une nouvelle politique personnalisée intégrée à votre rôle d’exécution.
Voici un exemple de politique que vous pouvez utiliser dans votre éditeur JSON lorsque vous configurez des tâches de peaufinage AutoML dans
us-west-2:Les noms des compartiments JumpStart suivent un modèle prédéterminé qui dépend des Régions AWS. Vous devez ajuster le nom du compartiment en conséquence.
{ "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::jumpstart-cache-prod-us-west-2", "arn:aws:s3:::jumpstart-cache-prod-us-west-2/*" ] }
Après cela, vous pouvez utiliser l'ARN de ce rôle d'exécution dans les demandes d'API Autopilot.
Paramètres requis
Lorsque vous appelez CreateAutoMLJobV2 pour créer une expérience Autopilot de peaufinage des LLM, vous devez fournir les valeurs suivantes :
-
Un paramètre
AutoMLJobNamepour spécifier le nom de votre tâche. Le nom doit être de typestringet doit avoir une longueur minimale de 1 caractère et une longueur maximale de 32. -
Au moins un
AutoMLJobChannelde typetrainingdansAutoMLJobInputDataConfig. Ce canal indique le nom du compartiment Amazon S3 dans lequel votre jeu de données de peaufinage est situé. Vous avez la possibilité de définir un canal devalidation. Si aucun canal de validation n’est fourni et qu’uneValidationFractionest configurée dansAutoMLDataSplitConfig, cette fraction est utilisée pour diviser aléatoirement le jeu de données d’entraînement en jeux de données d’entraînement et de validation. En outre, vous pouvez spécifier le type de contenu (fichiers CSV ou Parquet) pour le jeu de données. -
Une
AutoMLProblemTypeConfigde typeTextGenerationJobConfigpour configurer les paramètres de votre tâche d’entraînement.Vous pouvez notamment spécifier le nom du modèle de base à optimiser dans le champ
BaseModelName. Pour obtenir une liste des modèles pré-entraînés disponibles pour le peaufinage dans Amazon SageMaker Autopilot, consultez Grands modèles de langage pris en charge pour le peaufinage. -
Un élément
OutputDataConfigpour spécifier le chemin de sortie Amazon S3 pour stocker les artefacts de votre tâche AutoML. -
Un élément
RoleArnpour spécifier l'ARN du rôle utilisé pour accéder à vos données.
Voici un exemple du format complet d’une demande utilisée lors d’un appel d’API vers CreateAutoMLJobV2 pour le peaufinage d’un modèle (Falcon7BInstruct).
{ "AutoMLJobName": "<job_name>", "AutoMLJobInputDataConfig": [ { "ChannelType": "training", "CompressionType": "None", "ContentType": "text/csv", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://<bucket_name>/<input_data>.csv" } } } ], "OutputDataConfig": { "S3OutputPath": "s3://<bucket_name>/output", "KmsKeyId": "arn:aws:kms:<region>:<account_id>:key/<key_value>" }, "RoleArn":"arn:aws:iam::<account_id>:role/<sagemaker_execution_role_name>", "AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7BInstruct" } } }
Tous les autres paramètres sont facultatifs.
Paramètres facultatifs
Les sections suivantes fournissent des détails sur certains paramètres facultatifs que vous pouvez transmettre à votre tâche de peaufinage AutoML.
Vous pouvez fournir votre propre jeu de données de validation et un rapport de répartition des données personnalisé, ou laisser Autopilot répartir automatiquement le jeu de données.
Chaque objet AutoMLJobChannel (voir le paramètre requis AutoMLJobInputDataConfig) est doté d'un ChannelType, qui peut avoir la valeur training ou validation, qui spécifie comment utiliser les données lors de la création d'un modèle de machine learning.
Au moins une source de données doit être fournie et deux sources de données maximum sont autorisées : une pour les données d'entraînement et l'autre pour les données de validation. Le fractionnement des données en jeux de données d'entraînement et de validation varie selon que vous disposiez d'une ou de deux sources de données.
-
Si vous n'avez qu'une source de données,
ChannelTypeest défini surtrainingpar défaut et doit avoir cette valeur.-
Si la valeur
ValidationFractiondeAutoMLDataSplitConfign'est pas définie, 0,2 (20 %) des données de cette source sont utilisées pour la validation par défaut. -
Si
ValidationFractionest défini sur une valeur comprise entre 0 et 1, le jeu de données est divisé en fonction de la valeur spécifiée, où la valeur spécifie la fraction du jeu de données utilisé pour la validation.
-
-
Si vous disposez de deux sources de données, le
ChannelTypede l'un des objetsAutoMLJobChanneldoit être défini surtraining(valeur par défaut). LeChannelTypede l'autre source de données doit être défini survalidation. Les deux sources de données doivent avoir le même format, CSV ou Parquet, et le même schéma. Vous ne devez pas définir la valeur du paramètreValidationFractiondans ce cas, car toutes les données de chaque source sont utilisées à des fins d’entraînement ou de validation. La définition de cette valeur provoque une erreur.
Avec Autopilot, vous pouvez déployer automatiquement votre modèle peaufiné sur un point de terminaison. Pour activer le déploiement automatique de votre modèle peaufiné, incluez le paramètre ModelDeployConfig dans la demande de tâche AutoML. Cela permet le déploiement du modèle peaufiné sur un point de terminaison SageMaker AI. Vous trouverez ci-dessous les configurations disponibles pour la personnalisation.
-
Pour permettre à Autopilot de générer le nom du point de terminaison, définissez
AutoGenerateEndpointNamesurTrue. -
Pour fournir votre propre nom pour le point de terminaison, définissez
AutoGenerateEndpointName to.Falseand provide a name of your choice in EndpointName
Pour les modèles nécessitant l’acceptation d’un contrat de licence utilisateur final (CLUF) avant le peaufinage, vous pouvez accepter le CLUF en définissant l’attribut AcceptEula du paramètre ModelAccessConfig sur True dans TextGenerationJobConfig lors de la configuration de AutoMLProblemTypeConfig.
Vous pouvez optimiser le processus d’apprentissage de votre modèle de génération de texte en définissant des valeurs d’hyperparamètres dans l’attribut TextGenerationHyperParameters du paramètre TextGenerationJobConfig lors de la configuration de AutoMLProblemTypeConfig.
Autopilot permet de définir quatre hyperparamètres communs à tous les modèles.
-
epochCount: sa valeur doit être une chaîne contenant un nombre entier compris entre1et10. -
batchSize: sa valeur doit être une chaîne contenant un nombre entier compris entre1et64. -
learningRate: sa valeur doit être une chaîne contenant une valeur à virgule flottante comprise entre0et1. -
learningRateWarmupSteps: sa valeur doit être une chaîne contenant un nombre entier compris entre0et250.
Pour plus de détails sur chaque hyperparamètre, consultez Hyperparamètres d’optimisation du processus d’apprentissage de vos modèles de génération de texte.
L’exemple JSON suivant montre un champ TextGenerationHyperParameters transmis à TextGenerationJobConfig où les quatre hyperparamètres sont configurés.
"AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7B", "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"} } }