Erstellen Sie einen AutoML-Job zur Feinabstimmung von Textgenerierungsmodellen mithilfe der API - Amazon SageMaker

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.

Erstellen Sie einen AutoML-Job zur Feinabstimmung von Textgenerierungsmodellen mithilfe der API

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 anweisungsbasierte Feinabstimmung einer Auswahl von Allzweck-Modellen in großer Sprache (LLMs), auf denen diese Technologie basiert. JumpStart

Anmerkung

Die Textgenerierungsmodelle, die die Feinabstimmung in Autopilot unterstützen, sind derzeit ausschließlich in Regionen verfügbar, die von Canvas unterstützt werden. SageMaker Eine vollständige Liste der unterstützten Regionen finden Sie in der Dokumentation von SageMaker 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 anweisungsbasierten Feinabstimmung werden beschriftete Beispiele verwendet, die als Paare zwischen Aufforderung und Antwort 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. SageMaker

Anmerkung

Aufgaben wie Text- und Bildklassifizierung, Zeitreihenprognosen und Feinabstimmung großer Sprachmodelle sind ausschließlich über die Version 2 der AutoML-REST-API verfügbar. Wenn Ihre bevorzugte Sprache Python ist, können Sie direkt auf AWS SDK for Python (Boto3)das AutoMLv2-Objekt des Amazon SageMaker Python SDK verweisen.

Benutzer, die den Komfort einer Benutzeroberfläche bevorzugen, können Amazon SageMaker Canvas verwenden, um auf vortrainierte Modelle und generative KI-Grundmodelle zuzugreifen oder benutzerdefinierte Modelle zu erstellen, die auf bestimmte Text-, Bildklassifizierungs-, Prognoseanforderungen oder generative KI zugeschnitten sind.

Um ein Autopilot-Experiment zur Feinabstimmung eines LLM programmgesteuert zu erstellen, können Sie die CreateAutoMLJobV2API in jeder Sprache aufrufen, die von Amazon Autopilot oder dem unterstützt wird. SageMaker AWS CLI

Informationen darüber, wie diese API-Aktion in eine Funktion in der Sprache Ihrer Wahl übersetzt wird, finden Sie im Abschnitt „Siehe auch“ von und wählen Sie ein SDK aus. CreateAutoMLJobV2 Als Beispiel für Python-Benutzer finden Sie die vollständige Anforderungssyntax von create_auto_ml_job_v2 in AWS SDK for 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 BestCandidate bei einem DescribeAutoMLJobV2 API-Aufruf über die auf verschiedene ROUGE Werte 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 den Autopilot verwenden, um ein Experiment zur Feinabstimmung in zu erstellen SageMaker, stellen Sie sicher, dass Sie die folgenden Schritte ausführen:

  • (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 obligatorisch. Wenn kein Modell angegeben ist, verwendet Autopilot automatisch standardmäßig das Modell Falcon7BinStract.

  • Erstellen eines Datensatzes mit Anweisungen. Weitere Informationen Datensatz-Dateitypen und Eingabedatenformat zu den Formatanforderungen für Ihren anweisungsbasierten Datensatz finden Sie unter.

  • Platzieren Sie Ihre Datensätze in einem Amazon-S3-Bucket.

  • Gewähren Sie vollen Zugriff auf den Amazon S3 S3-Bucket, der Ihre Eingabedaten für die SageMaker Ausführungsrolle enthält, die für die Ausführung Ihres Experiments verwendet wurde.

    • Informationen zum Abrufen Ihrer SageMaker Ausführungsrolle finden Sie unterAusführungsrolle abrufen.

    • Informationen darüber, wie Sie Ihrer SageMaker Ausführungsrolle Berechtigungen für den Zugriff auf einen oder mehrere bestimmte Buckets in Amazon S3 gewähren, finden Sie unter Zusätzliche Amazon S3 S3-Berechtigungen zu einer SageMaker Ausführungsrolle hinzufügen unter. Erstellen einer Ausführungsrolle

  • Darüber hinaus sollten Sie Ihrer Ausführungsrolle die erforderlichen Berechtigungen für den Zugriff auf den Standardspeicher gewähren, von dem Amazon S3 S3-Bucket verwendet wird JumpStart. Dieser Zugriff ist erforderlich, um vortrainierte Modellartefakte in zu speichern und abzurufen. JumpStart 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 konfigurieren in: us-west-2

    JumpStartDie Bucket-Namen folgen einem vordefinierten Muster, das von der abhängt. AWS-Regionen 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 aufrufenCreateAutoMLJobV2, um ein Autopilot-Experiment für die LLM-Feinabstimmung zu erstellen, müssen Sie die folgenden Werte angeben:

  • Einen AutoMLJobName, um den Namen Ihres Auftrags anzugeben. Der Name sollte vom Typ string sein und mindestens 1 Zeichen und höchstens 32 Zeichen lang sein.

  • Mindestens einen AutoMLJobChannel vom Typ training innerhalb von AutoMLJobInputDataConfig. Dieser Kanal gibt den Namen des Amazon-S3-Buckets an, in dem sich Ihr Fine-Tuning-Datensatz befindet. Sie haben die Möglichkeit, einen validationskanal zu definieren. Wenn kein Validierungskanal bereitgestellt wird und eine ValidationFraction in der AutoMLDataSplitConfig konfiguriert 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 Typ, AutoMLProblemTypeConfig mit TextGenerationJobConfig dem Sie die Einstellungen Ihres Trainingsjobs konfigurieren können.

    Insbesondere können Sie den Namen des Basismodells für die Feinabstimmung in dem Feld BaseModelName angeben. 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 OutputDataConfig um den Amazon S3-Ausgabepfad zum Speichern der Artefakte Ihres AutoML-Auftrags anzugeben.

  • Ein RoleArn, zur 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 () -Modells verwendet wird. 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" } } }

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 AutoMLJobChannelObjekt (siehe den erforderlichen Parameter autoML JobInput DataConfig) hat einenChannelType, der entweder auf training oder validation Werte gesetzt werden kann, die angeben, wie die Daten beim Erstellen eines Modells für maschinelles Lernen 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 ChannelType standardmäßig auf training eingestellt und muss diesen Wert haben.

    • Wenn der Wert ValidationFraction in AutoMLDataSplitConfig nicht festgelegt ist, werden standardmäßig 0,2 (20%) der Daten aus dieser Quelle für die Validierung verwendet.

    • Wenn für ValidationFraction ein 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 ChannelType für eines der AutoMLJobChannel Objekte auf training gesetzt werden, den Standardwert. Der ChannelType der anderen Datenquelle muss auf validation gesetzt 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ür ValidationFraction nicht 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 fein abgestimmtes 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. Dies ermöglicht die Bereitstellung Ihres fein abgestimmten Modells auf einem Endpunkt. SageMaker Im Folgenden finden Sie die verfügbaren Konfigurationen für die Anpassung.

Bei Modellen, für die vor der Feinabstimmung die Annahme einer Endbenutzer-Lizenzvereinbarung erforderlich ist, können Sie die EULA akzeptieren, indem Sie True bei TextGenerationJobConfig der AcceptEula Konfiguration Ihres das Attribut ModelAccessConfig auf festlegen. AutoMLProblemTypeConfig

Sie können den Lernprozess Ihres Textgenerierungsmodells optimieren, indem Sie TextGenerationJobConfig bei der Konfiguration Ihres Hyperparameterwerte im TextGenerationHyperParameters Attribut von festlegen. AutoMLProblemTypeConfig

Der Autopilot ermöglicht die Einstellung von vier gemeinsamen Hyperparametern für alle Modelle.

  • epochCount: Sein Wert sollte eine Zeichenfolge sein, die einen ganzzahligen Wert im Bereich von bis enthält. 1 10

  • batchSize: Sein Wert sollte eine Zeichenfolge sein, die einen ganzzahligen Wert im Bereich von 1 bis enthält64.

  • learningRate: Sein Wert sollte eine Zeichenfolge sein, die einen Gleitkommawert im Bereich von bis enthält. 0 1

  • learningRateWarmupSteps: Sein Wert sollte eine Zeichenfolge sein, die einen Ganzzahlwert im Bereich von bis enthält. 0 250

Weitere Informationen zu den einzelnen Hyperparametern finden Sie unterOptimieren Sie den Lernprozess Ihrer Textgenerierungsmodelle mit Hyperparametern.

Das folgende JSON-Beispiel zeigt ein TextGenerationHyperParameters Feld, das an das übergeben wird, TextGenerationJobConfig in dem alle vier Hyperparameter konfiguriert sind.

"AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7B", "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"} } }