Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AutoML-Job zur Optimierung von Textgenerierungsmodellen mithilfe der API erstellen
Große Sprachmodelle (LLMs) zeichnen sich durch vielfältige generative Aufgaben aus, darunter Textgenerierung, Zusammenfassung, Vervollständigung, Beantwortung von Fragen und mehr. Ihre Leistungsfähigkeit lässt sich auf ihre beträchtliche Größe und ihr umfangreiches Training mit unterschiedlichen Datensätzen und verschiedenen Aufgaben zurückführen. In bestimmten Bereichen, wie dem Gesundheitswesen und den Finanzdienstleistungen, ist jedoch möglicherweise eine individuelle Feinabstimmung erforderlich, um sie an spezifische Daten und Anwendungsfälle anzupassen. Durch die Anpassung ihrer Trainings an ihren jeweiligen Bereich können LLMs ihre Leistung verbessern und genauere Ergebnisse für gezielte Anwendungen liefern.
Autopilot bietet die Möglichkeit, eine Auswahl von vortrainierten generativen Textmodellen zu verfeinern. Insbesondere unterstützt Autopilot die Feinabstimmung mithilfe von Anweisungen für eine Auswahl von großen Allzweck-Sprachmodellen (LLMs), die von JumpStart unterstützt werden.
Anmerkung
Die Textgenerierungsmodelle, die die Feinabstimmung in Autopilot unterstützen, sind derzeit ausschließlich in Regionen verfügbar, die von SageMaker AI Canvas unterstützt werden. Eine vollständige Liste der unterstützten Regionen finden Sie in der Dokumentation von SageMaker AI Canvas.
Für die Feinabstimmung eines vortrainierten Modells ist ein bestimmter Datensatz mit klaren Anweisungen erforderlich, anhand derer sich das Modell bei der Generierung von Ergebnissen oder beim Verhalten für diese Aufgabe orientieren kann. Das Modell lernt aus dem Datensatz und passt seine Parameter an, sodass sie den bereitgestellten Anweisungen entsprechen. Bei der Feinabstimmung mithilfe von Anweisungen werden beschriftete Beispiele verwendet, die als Prompt-Antwort-Paare formatiert und als Anweisungen formuliert sind. Weitere Informationen zur Feinabstimmung finden Sie unter Feinabstimmung eines Basismodells.
Die folgenden Richtlinien beschreiben den Prozess der Erstellung eines Amazon SageMaker Autopilot-Jobs als Pilotversuch zur Feinabstimmung von LLMs zur Textgenerierung mithilfe der API-Referenz von SageMaker.
Anmerkung
Aufgaben wie Text- und Bildklassifizierung, Zeitreihenprognosen und Feinabstimmung umfangreicher Sprachmodelle stehen nur über Version 2 der AutoML-REST-API zur Verfügung. Wenn Ihre bevorzugte Sprache Python ist, können Sie direkt auf AWS SDK für Python (Boto3)
Benutzer, die den Komfort einer Benutzeroberfläche bevorzugen, können Amazon SageMaker Canvas verwenden, um auf vortrainierte Modelle und Basismodelle mit generativer AI zuzugreifen oder benutzerdefinierte Modelle zu erstellen, die auf spezifische Text-, Bildklassifizierungs- oder Prognoseanforderungen zugeschnitten sind.
Um ein Autopilot-Experiment programmgestützt zur Optimierung eines LLM zu erstellen, können Sie die API CreateAutoMLJobV2 in einer beliebigen Sprache aufrufen, die von Amazon SageMaker Autopilot oder der AWS CLI unterstützt wird.
Informationen darüber, wie diese API-Aktion in eine Funktion in der Sprache Ihrer Wahl übersetzt wird, finden Sie im Abschnitt Siehe auch von CreateAutoMLJobV2 und wählen Sie ein SDK aus. Als Beispiel für Python-Benutzer finden Sie die vollständige Anforderungssyntax von create_auto_ml_job_v2 in AWS SDK für Python (Boto3).
Anmerkung
Der Autopilot optimiert umfangreiche Sprachmodelle, ohne dass mehrere Kandidaten trainiert und bewertet werden müssen. Stattdessen optimiert Autopilot anhand Ihres Datensatzes direkt Ihr Zielmodell, um eine standardmäßige Zielmetrik, den Cross-Entropie-Verlust, zu verbessern. Für die Feinabstimmung von Sprachmodellen in Autopilot ist keine Einstellung des Feldes AutoMLJobObjective erforderlich.
Sobald Ihr LLM fein abgestimmt ist, können Sie seine Leistung bewerten, indem Sie bei einem DescribeAutoMLJobV2-API-Aufruf auf verschiedene ROUGE-Scores über die BestCandidate zugreifen. Das Modell liefert auch Informationen über den Trainings- und Validierungsverlust sowie die Komplexität. Eine umfassende Liste von Kennzahlen zur Bewertung der Qualität des mit den fein abgestimmten Modellen generierten Textes finden Sie unter Metriken für die Feinabstimmung großer Sprachmodelle in Autopilot.
Voraussetzungen
Bevor Sie mit Autopilot ein Experiment zur Feinabstimmung in SageMaker AI erstellen, führen Sie folgende Schritte aus:
-
(optional) das vortrainierte Modell auswählen, das Sie verfeinern möchten.
Eine Liste der vortrainierten Modelle, die für die Feinabstimmung in Amazon SageMaker Autopilot verfügbar sind, finden Sie unter Unterstützt große Sprachmodelle für die Feinabstimmung. Die Auswahl eines Modells ist nicht zwingend erforderlich. Wenn kein Modell angegeben ist, verwendet Autopilot automatisch und standardmäßig das Modell Falcon7BInstruct.
-
Erstellen eines Datensatzes mit Anweisungen. Weitere Informationen zu den Formatanforderungen für Ihren anweisungsbasierten Datensatz finden Sie unter Datensatz-Dateitypen und Eingabedatenformat.
-
Platzieren Sie Ihre Datensätze in einem Amazon-S3-Bucket.
-
Gewähren Sie den vollen Zugriff auf den Amazon-S3-Bucket, der Ihre Eingabedaten für die SageMaker-AI-Ausführungsrolle enthält, die zur Ausführung Ihres Experiments verwendet wird.
-
Informationen zum Abrufen Ihrer SageMaker-AI-Ausführungsrolle finden Sie unter Abrufen Ihrer Ausführungsrolle.
-
Informationen dazu, wie Sie Ihrer SageMaker-AI-Ausführungsrolle die nötigen Berechtigungen für den Zugriff auf einen oder mehrere bestimmte Buckets in Amazon S3 gewähren, finden Sie unter Zusätzliche Amazon S3-Berechtigungen zu einer SageMaker-AI-Ausführungsrolle hinzufügen in Erstellen einer Ausführungsrolle.
-
-
Darüber hinaus sollten Sie Ihrer Ausführungsrolle die erforderlichen Berechtigungen für den Zugriff auf den von JumpStart verwendeten standardmäßigen Amazon-S3-Bucket gewähren. Dieser Zugriff ist erforderlich, um vortrainierte Modellartefakte in JumpStart zu speichern und abzurufen. Um Zugriff auf diesen Amazon-S3-Bucket zu gewähren, müssen Sie eine neue benutzerdefinierte Inline-Richtlinie für Ihre Ausführungsrolle erstellen.
Hier ist eine Beispielrichtlinie, die Sie in Ihrem JSON-Editor verwenden können, wenn Sie AutoML-Feintuning-Jobs in
us-west-2konfigurieren:Die Bucket-Namen von JumpStart folgen einem vordefinierten Muster, das von der AWS-Regionen abhängt. Sie müssen den Namen des Buckets entsprechend anpassen.
{ "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/*" ] }
Sobald dies erledigt ist, können Sie den ARN dieser Ausführungsrolle in Autopilot-API-Anfragen verwenden.
Erforderliche Parameter
Wenn Sie CreateAutoMLJobV2 aufrufen, um ein Autopilot-Experiment zur Optimierung von LLMs zu erstellen, müssen Sie die folgenden Werte angeben:
-
Einen
AutoMLJobName, um den Namen Ihres Auftrags anzugeben. Der Name sollte vom Typstringsein und mindestens 1 Zeichen und höchstens 32 Zeichen lang sein. -
Mindestens einen
AutoMLJobChannelvom Typtraininginnerhalb vonAutoMLJobInputDataConfig. Dieser Kanal gibt den Namen des Amazon-S3-Buckets an, in dem sich Ihr Fine-Tuning-Datensatz befindet. Sie haben die Möglichkeit, einenvalidationskanal zu definieren. Wenn kein Validierungskanal bereitgestellt wird und eineValidationFractionin derAutoMLDataSplitConfigkonfiguriert ist, wird dieser Anteil verwendet, um den Trainingsdatensatz nach dem Zufallsprinzip in Trainings- und Validierungssätze aufzuteilen. Darüber hinaus können Sie den Inhaltstyp (CSV- oder Parquet-Dateien) für den Datensatz angeben. -
Ein
AutoMLProblemTypeConfigvom TypTextGenerationJobConfig, mit dem Sie die Einstellungen Ihres Trainingsjobs zur Optimierung konfigurieren können.Insbesondere können Sie den Namen des Basismodells für die Feinabstimmung in dem Feld
BaseModelNameangeben. Eine Liste der vortrainierten Modelle, die für die Feinabstimmung in Amazon SageMaker Autopilot verfügbar sind, finden Sie unter Unterstützt große Sprachmodelle für die Feinabstimmung. -
Ein
OutputDataConfigzur Angabe des Amazon S3-Ausgabepfads zum Speichern der Artefakte Ihren AutoML-Job. -
Ein
RoleArnzur Angabe der ARN der Rolle, die für den Zugriff auf Ihre Daten verwendet wird.
Im Folgenden finden Sie ein Beispiel für das vollständige Anforderungsformat, das bei einem API-Aufruf CreateAutoMLJobV2 zur Feinabstimmung eines (Falcon7BInstruct-)Modells verwendet wird.
{ "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" } } }
Alle anderen Parameter sind optional.
Optionale Parameter
Die folgenden Abschnitte enthalten Einzelheiten zu einigen optionalen Parametern, die Sie an Ihren AutoML-Job zur Feinabstimmung übergeben können.
Sie können Ihren eigenen Validierungsdatensatz und ein benutzerdefiniertes Datenteilungsverhältnis angeben oder den Datensatz automatisch von Autopilot teilen lassen.
Jedes AutoMLJobChannel-Objekt (siehe den erforderlichen Parameter autoMLJobInputDataConfig) hat eine ChannelType, die entweder auf training oder validation Werte gesetzt werden kann, die angeben, wie die Daten beim Erstellen eines Modells für Machine Learning verwendet werden sollen.
Es muss mindestens eine Datenquelle bereitgestellt werden, und es sind maximal zwei Datenquellen zulässig: eine für Trainingsdaten und eine für Validierungsdaten. Wie Sie die Daten in Trainings- und Validierungsdatensätze aufteilen, hängt davon ab, ob Sie über eine oder zwei Datenquellen verfügen.
-
Wenn Sie nur über eine Datenquelle verfügen, wird die
ChannelTypestandardmäßig auftrainingeingestellt und muss diesen Wert haben.-
Wenn der Wert
ValidationFractioninAutoMLDataSplitConfignicht festgelegt ist, werden standardmäßig 0,2 (20%) der Daten aus dieser Quelle für die Validierung verwendet. -
Wenn für
ValidationFractionein Wert zwischen 0 und 1 festgelegt wird, wird der Datensatz anhand des angegebenen Wertes aufgeteilt. Dabei gibt der Wert den Anteil des Datensatzes an, der für die Validierung verwendet wird.
-
-
Wenn Sie über zwei Datenquellen verfügen, muss der
ChannelTypefür eines derAutoMLJobChannelObjekte auftraininggesetzt werden, den Standardwert. DerChannelTypeder anderen Datenquelle muss aufvalidationgesetzt werden. Die beiden Datenquellen müssen dasselbe Format haben, entweder CSV oder Parquet, und dasselbe Schema. In diesem Fall dürfen Sie den Wert fürValidationFractionnicht festlegen, da alle Daten aus jeder Quelle entweder für das Training oder für die Validierung verwendet werden. Wenn dieser Wert festgelegt wird, verursacht dies einen Fehler.
Mit Autopilot können Sie Ihr optimiertes Modell automatisch auf einem Endpunkt bereitstellen. Um die automatische Bereitstellung für Ihr optimiertes Modell zu ermöglichen, fügen Sie der AutoML-Jobanfrage eine ModelDeployConfig hinzu. So kann auf einem SageMaker-AI-Endpunkt Ihr optimiertes Modell bereitgestellt werden. Im Folgenden finden Sie die verfügbaren Konfigurationen für die Anpassung.
-
Damit Autopilot den Endpunktnamen generieren kann, stellen Sie
AutoGenerateEndpointNameaufTrueein. -
Um Ihren eigenen Namen für den Endpunkt anzugeben, legen Sie
AutoGenerateEndpointName tofest.Falseand provide a name of your choice in EndpointName
Bei Modellen, für die vor der Optimierung die Annahme einer Endbenutzer-Lizenzvereinbarung erforderlich ist, können Sie die EULA akzeptieren, indem Sie bei der Konfiguration von AutoMLProblemTypeConfig das Attribut AcceptEula der ModelAccessConfig in TextGenerationJobConfig auf True setzen.
Sie können den Lernprozess Ihres Textgenerierungsmodells optimieren, indem Sie bei der Konfiguration von AutoMLProblemTypeConfig die Hyperparameterwerte im Attribut TextGenerationHyperParameters von TextGenerationJobConfig festlegen.
Der Autopilot ermöglicht die Einstellung von vier gemeinsamen Hyperparametern für alle Modelle.
-
epochCount: Dieser Wert sollte eine Zeichenfolge sein, die einen ganzzahligen Wert im Bereich von1bis10enthält. -
batchSize: Dieser Wert sollte eine Zeichenfolge sein, die einen ganzzahligen Wert im Bereich von1bis64enthält. -
learningRate: Dieser Wert sollte eine Zeichenfolge sein, die einen Gleitkommawert im Bereich von0bis1enthält. -
learningRateWarmupSteps: Dieser Wert sollte eine Zeichenfolge sein, die einen ganzzahligen Wert im Bereich von0bis250enthält.
Weitere Informationen zu den einzelnen Hyperparametern finden Sie unter Hyperparameter zur Optimierung des Lernprozesses Ihrer Textgenerierungsmodelle.
Das folgende JSON-Beispiel zeigt ein TextGenerationHyperParameters-Feld, das an die TextGenerationJobConfig übergeben wurde, in der alle vier Hyperparameter konfiguriert sind.
"AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7B", "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"} } }