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.
Vorbereiten der Trainingsdatensätze für die Destillation
Bevor Sie mit einer Modellanpassung beginnen können, müssen Sie mindestens einen Trainingsdatensatz vorbereiten. Um Eingabedatensätze für ein benutzerdefiniertes Modell vorzubereiten, erstellen Sie .jsonl-Dateien, von denen jede Zeile ein JSON-Objekt ist, das einem Datensatz entspricht. Die von Ihnen erstellten Dateien müssen dem Format der Modelldestillation und dem ausgewählten Modell entsprechen. Zudem ist es erforderlich, dass die darin enthaltenen Datensätze die Größenanforderungen erfüllen.
Geben Sie die Eingabedaten als Prompts ein. Amazon Bedrock verwendet die Eingabedaten, um Antworten aus dem Lehrermodell zu generieren, und nutzt die generierten Antworten dann zur Feinabstimmung des Schülermodells. Weitere Informationen zu den Eingaben, die Amazon Bedrock verwendet, und zur Auswahl der besten Option für Ihren Anwendungsfall finden Sie unter So funktioniert die Amazon-Bedrock-Modelldestillation. Es gibt mehrere Möglichkeiten für die Vorbereitung eines Eingabedatensatzes.
Anmerkung
Amazon Nova-Modelle haben unterschiedliche Anforderungen an die Destillation. Weitere Informationen finden Sie unter Destillieren von Amazon Nova-Modellen.
Die in aufgeführten Modelle Unterstützte Modelle und Regionen für die Amazon-Bedrock-Modelldestillation unterstützen nur die text-to-text Modalität.
Während der Modelldestillation generiert Amazon Bedrock einen synthetischen Datensatz, anhand dessen das Schülermodell an den spezifischen Anwendungsfall angepasst wird. Weitere Informationen finden Sie unter So funktioniert die Amazon-Bedrock-Modelldestillation.
Sie können den Generierungsprozess von synthetischen Daten optimieren, indem Sie die Eingabe-Prompts für den gewünschten Anwendungsfall formatieren. Wenn der Anwendungsfall des destillierten Modells beispielsweise Retrieval Augmented Generation (RAG) ist, formatieren Sie die Eingabe-Prompts anders, als wenn Anwendungsfälle für Agenten der Schwerpunkt des Modells sein sollen.
Im Folgenden finden Sie Beispiele dafür, wie Sie Eingabe-Prompts für RAG- oder Agentenanwendungsfälle formatieren können.
Sammeln Sie Ihre Prompts und speichern Sie sie im Dateiformat .jsonl. Jeder Datensatz in der JSONL muss die folgende Struktur verwenden.
-
Nehmen Sie das Feld
schemaVersionauf, das den Wertbedrock-conversion-2024haben muss. -
[Optional] Fügen Sie einen System-Prompt hinzu, der die Rolle des Modells angibt.
-
Geben Sie im Feld
messagesdie Benutzerrolle an, die den Eingabe-Prompt enthält, der dem Modell bereitgestellt wurde. -
[Optional] Geben Sie im Feld
messagesdie Assistentenrolle ein, die die gewünschte Antwort enthält.
Anthropic- und Meta Llama-Modelle unterstützen nur Single-Turn-Prompts. Das bedeutet, dass Sie nur einen Benutzer-Prompt verwenden können. Die Amazon Nova-Modelle unterstützen Multi-Turn-Konversationen, sodass Sie den Austausch zwischen mehreren Benutzern und Assistenten innerhalb eines Datensatzes ermöglichen können.
Beispielformat
{ "schemaVersion": "bedrock-conversation-2024", "system": [{ "text": "A chat between a curious User and an artificial intelligence Bot. The Bot gives helpful, detailed, and polite answers to the User's questions." }], "messages": [{ "role": "user", "content": [{ "text": "why is the sky blue" }] }, { "role": "assistant", "content": [{ "text": "The sky is blue because molecules in the air scatter blue light from the Sun more than other colors." }] } ] }}
Validieren des Datensatzes
Bevor Sie den Destillationsauftrag ausführen, können Sie den Eingabedatensatz mit einem Python-Skript
Wenn Sie einen Destillationsjob erstellen, können Sie Amazon Bedrock veranlassen, vorhandene Lehrerantworten aus CloudWatch Logs-Aufrufprotokollen als Trainingsdaten zu verwenden. Für Amazon Bedrock ist ein Aufrufprotokoll eine detaillierte Aufzeichnung von Modellaufrufen.
Um Aufrufprotokolle für die Modelldestillation zu verwenden, richten Sie die Protokollierung von Modellaufrufen ein, verwenden Sie einen der Modellaufrufvorgänge und stellen Sie sicher, dass Sie einen Amazon-S3-Bucket als Ziel für die Protokolle eingerichtet haben. Bevor Sie mit der Modelldestillation beginnen können, müssen Sie Amazon Bedrock Berechtigungen für den Zugriff auf die Protokolle gewähren. Weitere Informationen zum Einrichten der Aufrufprotokolle finden Sie unter Überwachen des Modellaufrufs mithilfe von Amazon CloudWatch Logs.
Mit dieser Option können Sie angeben, ob Amazon Bedrock nur die Prompts oder Prompt-Antwort-Paare aus dem Aufrufprotokoll verwenden soll. Wenn Sie möchten, dass Amazon Bedrock nur Prompts verwendet, fügt Amazon Bedrock möglicherweise proprietäre Datensynthesetechniken hinzu, um anhand des Lehrermodells vielfältige und qualitativ hochwertigere Antworten zu generieren. Falls Amazon Bedrock Prompt-Antwort-Paare verwenden soll, generiert Amazon Bedrock keine Antworten aus dem Lehrermodell neu. Amazon Bedrock verwendet die Antworten aus dem Aufrufprotokoll direkt zur Feinabstimmung des Schülermodells.
Wichtig
Sie können Amazon Bedrock maximal 15 000 Prompts oder Antwortpaare zur Feinabstimmung des Schülermodells zur Verfügung stellen. Um sicherzustellen, dass das Schülermodell genau auf Ihre spezifischen Anforderungen abgestimmt ist, empfehlen wir dringend Folgendes:
-
Wenn Sie möchten, dass Amazon Bedrock nur Prompts verwendet, stellen Sie sicher, dass mindestens 100 Prompt-Antwort-Paare aus allen Modellen generiert wurden.
-
Falls Amazon Bedrock Antworten aus Ihren Aufrufprotokollen verwenden soll, stellen Sie sicher, dass die Aufrufprotokolle mindestens 100 anhand des Modells generierte Prompt-Antwort-Paare enthalten, die genau mit dem von Ihnen ausgewählten Lehrermodell übereinstimmen.
Sie können optional mithilfe eines der Modellaufrufvorgänge Anforderungsmetadaten zu den Prompt-Antwort-Paaren im Aufrufprotokoll hinzufügen und diese dann später zum Filtern der Protokolle verwenden. Amazon Bedrock kann die gefilterten Protokolle zur Feinabstimmung des Schülermodells verwenden.
Um Protokolle anhand mehrerer Anforderungsmetadaten zu filtern, verwenden Sie einen einzelnen booleschen Operator (AND, OR oder NOT). Sie können Operationen nicht kombinieren. Verwenden Sie für die Filterung von Metadaten bei einzelnen Anfragen den booleschen Operator NOT.
Hinzufügen von Anforderungsmetadaten zu Prompts und Antworten in Ihren Aufrufprotokollen für die Modelldestillation
Die Protokollierung von Modellaufrufen erfasst Aufrufprotokolle, Modelleingabedaten (Prompts) und -ausgabedaten (Antworten) für alle in Amazon Bedrock verwendeten Aufrufe. Wenn Sie die Protokollierung aktiviert haben, können Sie die Protokolle bei jeder Interaktion mit Amazon-Bedrock-Basismodellen über die API-Operationen Invoke oder Converse erfassen. Wenn Amazon Bedrock die Prompts und die zugehörigen Antworten aus dem Aufrufprotokoll verwenden soll, um das Schülermodell zu optimieren, müssen Sie Amazon Bedrock Zugriff auf diese Protokolle gewähren. Durch die Verwendung der Antworten, die ein Modell bereits generiert hat, kann das Schülermodell schneller optimiert werden. Die Verwendung von Antworten aus den Aufrufprotokollen macht die Modelldestillation auch kostengünstiger. Allerdings werden die proprietären Datensynthesetechniken von Amazon Bedrock nicht hinzugefügt. So wird das destillierte Modell leistungsfähiger.
Mithilfe von Aufrufprotokollen können Sie die Prompt-Antwort-Paare identifizieren, die Amazon Bedrock für die Modelldestillation verwenden soll. Diese Prompt-Antwort-Paare können für bestimmte Anwendungsfälle vorgesehen sein. Um die Prompt-Antwort-Paare identifizieren zu können, die für die Destillation verwendet werden sollen, müssen Sie den Prompt-Antwort-Paaren eine Zeichenfolge mit Anforderungsmetadaten hinzufügen, wenn Sie ein Modell aufrufen oder die API-Operation Converse verwenden. Die Anforderungsmetadaten werden im folgenden Format bereitgestellt: ". priority" :
"High"
Während Sie weiterhin mithilfe der API-Operation Invoke oder Converse mit dem Modell interagieren, werden die Interaktionen und die Anforderungsmetadaten in den Aufrufprotokollen protokolliert. Im Folgenden finden Sie ein Beispiel für ein Aufrufprotokoll eines InvokeModel-Aufrufs, in dem die Metadaten der Anforderung angezeigt werden:
{ "schemaType": "ModelInvocationLog", "schemaVersion": "1.0", "timestamp": "2024-09-11T17:16:18Z", "accountId": "XXXXX", "identity": { "arn": "arn:aws:sts::XXXXXXX:assumed-role/Admin/XXXXXX" }, "region": "us-east-1", "requestId": "7ee514f3-9eff-467c-af75-8fd564ce58e5", "operation": "InvokeModel", "modelId": "meta.llama3-1-405b-instruct-v1:0", "input": { "inputContentType": "application/json", "inputBodyJson": { "prompt": "story of two dogs", "max_tokens_to_sample": 300 }, "inputTokenCount": 13 }, "output": { "outputContentType": "application/json", "outputBodyJson": { "type": "completion", "completion": " Here is a story about two dogs:\n\nRex and Charlie were best friends who lived next door to each other. Every morning, their owners would let them out into the backyard to play. Rex was a golden retriever with long, shaggy fur. He loved to run and chase sticks. Charlie was a corgi with short legs and a big smile. He was happy just sniffing the grass and rolling around. \n\nThe two dogs spent every day playing together. Rex would grab a stick and bring it over to Charlie, wagging his tail excitedly. Charlie would take the other end of the stick in his mouth and they'd have a friendly game of tug-of-war. After tiring themselves out, they'd flop down in the warm sunshine for a nap. \n\nAt lunchtime, their owners would call them in for food. Rex would gobble up his kibble hungrily while Charlie ate his at a more leisurely pace. After lunch, it was right back outside for more playtime. The afternoon sunbeams would light up their fur as they chased each other around the yard. \n\nWhen it started getting late, their owners called them in for the night. Rex and Charlie would head inside, tired but happy after another fun day of play. After slurping up fresh water from their bowls, they'd curl up on their beds, Rex's fluffy golden tail tucked over his nose and little", "stop_reason": "max_tokens", "stop": null }, "outputTokenCount": 300 }, "requestMetadata": { "project": "CustomerService", "intent": "ComplaintResolution", "priority": "High" } }
Sie können das Aufrufprotokoll als Eingabedatenquelle angeben, wenn Sie einen Modelldestillationsauftrag starten. Sie können den Modeldestillationsjob in der Amazon Bedrock-Konsole mithilfe der API oder des AWS SDK starten. AWS CLI
Anforderungen für die Bereitstellung von Anforderungsmetadaten
Die Anforderungsmetadaten müssen die folgenden Anforderungen erfüllen:
-
Sie müssen im JSON-Format für
key:valuebereitgestellt werden. -
Das Schlüssel/Wert-Paar muss eine Zeichenfolge mit maximal 256 Zeichen sein.
-
Es dürfen maximal 16 Schlüssel/Wert-Paare bereitgestellt werden.
Verwenden von Filtern für Anforderungsmetadaten
Sie können Filter auf die Anforderungsmetadaten anwenden, um selektiv auszuwählen, welche Prompt-Antwort-Paare bei der Destillation zur Feinabstimmung des Schülermodells berücksichtigt werden sollen. Beispielsweise möchten Sie möglicherweise nur diejenigen mit den Anforderungsmetadaten „project“: "CustomerService" und „priority“: „High“ einbeziehen.
Um Protokolle anhand mehrerer Anforderungsmetadaten zu filtern, verwenden Sie einen einzelnen booleschen Operator (AND, OR oder NOT). Sie können Operationen nicht kombinieren. Verwenden Sie für die Filterung von Metadaten bei einzelnen Anfragen den booleschen Operator NOT.
Sie können das Aufrufprotokoll als Eingabedatenquelle und die Filter zur Auswahl der Prompt-Antwort-Paare angeben, wenn Sie einen Modelldestillationsauftrag starten. Sie können den Modeldestillationsjob in der Amazon Bedrock-Konsole mithilfe der API oder des AWS SDK starten. AWS CLI Weitere Informationen finden Sie unter Übermitteln eines Auftrags zur Modelldestillation bei Amazon Bedrock.
Validieren des Datensatzes
Bevor Sie den Destillationsauftrag ausführen, können Sie den Eingabedatensatz mit einem Python-Skript