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.
Evaluieren Sie ein Amazon Bedrock-Modell auf Genauigkeit bei der Textzusammenfassung
Sie können einen ModelRunner
Wrapper auf hoher Ebene verwenden, um eine benutzerdefinierte Bewertung auf der Grundlage eines Modells zu erstellen, das außerhalb von gehostet wird. JumpStart
Dieses Tutorial zeigt, wie Sie das Modell Anthropic Claude 2
In den Tutorials wird gezeigt, wie Sie Folgendes tun können:
-
Einrichten Ihrer -Umgebung
-
Führen Sie Ihre Modellevaluierung durch.
-
Sehen Sie sich Ihre Analyseergebnisse an.
So richten Sie Ihre Umgebung ein
Voraussetzungen
-
Verwenden Sie eine Basis Python 3.10 Kernel-Umgebung und eine
ml.m5.2xlarge
Amazon Elastic Compute Cloud (AmazonEC2) -Instance, bevor Sie mit diesem Tutorial beginnen.Weitere Informationen zu Instance-Typen und ihren empfohlenen Anwendungsfällen finden Sie unterInstance-Typen, die für die Verwendung mit Studio Classic verfügbar sind.
Einrichten von Amazon Bedrock
Bevor Sie ein Amazon Bedrock-Modell verwenden können, müssen Sie den Zugriff darauf beantragen.
-
Melden Sie sich bei Ihrem an AWS-Konto.
-
Wenn Sie noch kein AWS Konto haben, finden Sie weitere Informationen unter Eröffnen eines AWS Kontos unter Amazon Bedrock einrichten.
-
-
Öffnen Sie die Amazon Bedrock-Konsole
. -
Im Willkommen bei Amazon Bedrock! Wählen Sie im sich öffnenden Bereich die Option Modellzugriff verwalten aus.
-
Wählen Sie im daraufhin angezeigten Abschnitt Modellzugriff die Option Modellzugriff verwalten aus.
-
Aktivieren Sie im daraufhin angezeigten Abschnitt Basismodelle das Kästchen neben Claude, das im Unterabschnitt Anthropic von Models aufgeführt ist.
-
Wählen Sie Modellzugriff anfordern aus.
-
Wenn Ihre Anfrage erfolgreich ist, sollte unter Zugriffsstatus neben dem ausgewählten Modell ein Häkchen mit der Aufschrift „Zugriff gewährt“ erscheinen.
-
Möglicherweise müssen Sie sich erneut bei Ihrem anmelden AWS-Konto , um auf das Modell zugreifen zu können.
Installieren Sie die erforderlichen Bibliotheken
-
Installieren Sie in Ihrem Code die
boto3
Bibliothekenfmeval
und wie folgt:!pip install fmeval !pip3 install boto3==1.28.65
-
Importieren Sie Bibliotheken, legen Sie einen Parallelisierungsfaktor fest und rufen Sie einen Amazon Bedrock-Client wie folgt auf:
import boto3 import json import os # Dependent on available hardware and memory os.environ["PARALLELIZATION_FACTOR"] = "1" # Bedrock clients for model inference bedrock = boto3.client(service_name='bedrock') bedrock_runtime = boto3.client(service_name='bedrock-runtime')
Im vorherigen Codebeispiel gilt Folgendes:
-
PARALLELIZATION_FACTOR
— Ein Multiplikator für die Anzahl der gleichzeitigen Batches, die an Ihre Compute-Instance gesendet werden. Wenn Ihre Hardware Parallelisierung zulässt, können Sie diese Zahl so einstellen, dass die Anzahl der Aufrufe für Ihren Evaluierungsjob mit multipliziert wird. Wenn Sie beispielsweise100
Aufrufe haben und diese Option auf eingestelltPARALLELIZATION_FACTOR
ist, führt Ihr Job Aufrufe aus.2
200
Sie können die VariablePARALLELIZATION_FACTOR
auf einen Wert erhöhen oder sie10
ganz entfernen. Einen Blog zur Verwendung von AWS Lambda finden SiePARALLELIZATION_FACTOR
unter Neue Lambda-Skalierungssteuerungen für Kinesis- und DynamoDB-Ereignisquellen.
-
-
Laden Sie den
JSON Lines
Beispieldatensatz sample-dataset.jsonlin Ihr aktuelles Arbeitsverzeichnis herunter. -
Überprüfen Sie wie folgt, ob Ihre Umgebung die Beispiel-Eingabedatei enthält:
import glob # Check for the built-in dataset if not glob.glob("sample-dataset.jsonl"): print("ERROR - please make sure file exists: sample-dataset.jsonl")
Senden Sie eine Muster-Inferenzanfrage an Ihr Modell
-
Definieren Sie das Modell und den
MIME
Typ Ihrer Aufforderung. Für ein Modell von Anthropic Claude 2, das auf Amazon Bedrock gehostet wird, muss Ihre Aufforderung wie folgt strukturiert sein: import json model_id = 'anthropic.claude-v2' accept = "application/json" contentType = "application/json" # Ensure that your prompt has the correct format prompt_data = """Human: Who is Barack Obama? Assistant: """
Weitere Informationen zur Strukturierung des Hauptteils Ihrer Anfrage finden Sie unter Textfeld Modellaufrufanforderung. Andere Modelle haben möglicherweise andere Formate.
-
Senden Sie eine Musteranfrage für Ihr Modell. Der Hauptteil Ihrer Anfrage enthält die Aufforderung und alle zusätzlichen Parameter, die Sie festlegen möchten. Eine Beispielanforderung mit
500
folgendemmax_tokens_to_sample
Satz:body = json.dumps({"prompt": prompt_data, "max_tokens_to_sample": 500}) response = bedrock_runtime.invoke_model( body=body, modelId=model_id, accept=accept, contentType=contentType ) response_body = json.loads(response.get("body").read()) print(response_body.get("completion"))
Im vorherigen Codebeispiel können Sie die folgenden Parameter festlegen:
-
temperature
— Steuert die Zufälligkeit des generierten Textes und akzeptiert positive Werte. Höhere Werte vontemperature
weisen das Modell an, mehr zufällige und vielfältigere Antworten zu generieren. Niedrigere Werte führen zu besser vorhersehbaren Antworten. Bereiche fürtemperature
liegen zwischen0
und1
, mit einem Standardwert von 0,5. -
topP
— Steuert die Zufälligkeit, indem der Satz von Tokens begrenzt wird, der bei der Generierung des nächsten Tokens berücksichtigt werden soll. Höhere Werte vontopP
ermöglichen einen Satz, der ein breiteres Vokabular enthält, und niedrigere Werte beschränken den Tokensatz auf wahrscheinlichere Wörter. Die Wertebereiche fürtopP
sind0
bis1
, der1
Standardwert ist. -
topK
— Beschränkt die Modellvorhersagen auf die Tokens mit derk
höchsten Wahrscheinlichkeit. Höhere Werte vontopK
ermöglichen einfallsreichere Antworten. Niedrigere Werte führen zu kohärenteren Antworten. Die Bereiche fürtopK
sind0
bis500
, mit dem Standardwert250
. -
max_tokens_to_sample
— Beschränkt die Länge der Antwort, indem die Anzahl der von Ihrem Modell zurückgegebenen Token begrenzt wird. Die Bereiche fürmax_tokens_to_sample
sind0
bis4096
, mit dem Standardwert200
. -
stop_sequences
— Gibt eine Liste von Zeichenfolgen an, die Ihr Modell anweisen, die Generierung einer Antwort zu beenden. Die Modellausgabe wird gestoppt, wenn eine der aufgelisteten Zeichenketten zum ersten Mal in der Ausgabe gefunden wird. Die Antwort enthält keine Stoppsequenz. Sie können beispielsweise eine Wagenrücklaufsequenz verwenden, um die Modellantwort auf eine einzige Zeile zu beschränken. Sie können Sequenzen bis zu einem4
Stopp konfigurieren.
Weitere Informationen zu den Parametern, die Sie in einer Anfrage angeben können, finden Sie unter Modelle von Anthropic Claude.
-
Richten Sie ein FMEval
-
Laden Sie die erforderlichen Bibliotheken für die Ausführung FMEval wie folgt:
from fmeval.data_loaders.data_config import DataConfig from fmeval.model_runners.bedrock_model_runner import BedrockModelRunner from fmeval.constants import MIME_TYPE_JSONLINES from fmeval.eval_algorithms.summarization_accuracy import SummarizationAccuracy, SummarizationAccuracyConfig
-
Richten Sie die Datenkonfiguration für Ihren Eingabedatensatz ein.
Die folgende Beispieleingabe stammt aus einer Zeile von
sample-dataset.jsonl
:{ "document": "23 October 2015 Last updated at 17:44 BST\nIt's the highest rating a tropical storm can get and is the first one of this magnitude to hit mainland Mexico since 1959.\nBut how are the categories decided and what do they mean? Newsround reporter Jenny Lawrence explains.", "summary": "Hurricane Patricia has been rated as a category 5 storm.", "id": "34615665", }
Die vorherige Beispieleingabe enthält den Text, der im
document
Schlüssel zusammengefasst werden soll. Die Referenz, anhand derer Sie Ihre Modellantwort auswerten können, befindet sich imsummary
Schlüssel. Sie müssen diese Schlüssel in Ihrer Datenkonfiguration verwenden, um anzugeben, welche Spalten die Informationen enthalten, die für die Auswertung der Modellantwort FMEval benötigt werden.Ihre Datenkonfiguration muss den Text identifizieren, in
model_input_location
dem Ihr Modell zusammengefasst werden soll. Sie müssen den Referenzwert mittarget_output_location
identifizieren.Das folgende Beispiel für eine Datenkonfiguration bezieht sich auf das vorherige Eingabebeispiel, um die für eine Aufgabe zur Textzusammenfassung erforderlichen Spalten, den Namen, die Uniform Resource Identifier (URI) und den
MIME
Typ anzugeben:config = DataConfig( dataset_name="sample-dataset", dataset_uri="sample-dataset.jsonl", dataset_mime_type=MIME_TYPE_JSONLINES, model_input_location="document", target_output_location="summary" )
Weitere Informationen zu den Spalteninformationen, die für andere Aufgaben erforderlich sind, finden Sie im Automatische Modellevaluierung Abschnitt Verwenden eines benutzerdefinierten Eingabedatensatzes unter.
-
Richten Sie ein benutzerdefiniertes ein,
ModelRunner
wie im folgenden Codebeispiel gezeigt:bedrock_model_runner = BedrockModelRunner( model_id=model_id, output='completion', content_template='{"prompt": $prompt, "max_tokens_to_sample": 500}' )
Das vorherige Codebeispiel spezifiziert Folgendes:
-
model_id
— Die ID, die zur Angabe Ihres Modells verwendet wurde. -
output
— Erfasst die Ausgabe des Modells Anthropic Claude 2, das seine Antwort in einem completion
Schlüssel zurückgibt. -
content_template
— Gibt an, wie Ihr Modell mit Anfragen interagiert. Die Beispielkonfigurationsvorlage wird im Folgenden lediglich zur Erläuterung des vorherigen Beispiels detailliert beschrieben und ist nicht erforderlich.-
Im vorherigen
content_template
Beispiel gilt Folgendes:-
Die Variable
prompt
gibt die Eingabeaufforderung an, die die vom Benutzer gestellte Anfrage erfasst. -
Die Variable
max_tokens_to_sample
gibt die maximale Anzahl von Tokens an500
, um die Länge der Antwort zu begrenzen.Weitere Informationen zu den Parametern, die Sie in Ihrer Anfrage angeben können, finden Sie unter Anthropic Claude-Modelle.
Das Format des
content_template
Parameters hängt von den Eingaben und Parametern ab, die von Ihrem LLM unterstützt werden. In diesem Tutorial verwendet das Claude 2-Modell von AnthropicFolgendes: content_template
"content_template": "{\"prompt\": $prompt, \"max_tokens_to_sample\": 500}"
Als weiteres Beispiel kann das Falcon 7b-Modell Folgendes
unterstützen: content_template
"content_template": "{\"inputs\": $prompt, \"parameters\":{\"max_new_tokens\": \ 10, \"top_p\": 0.9, \"temperature\": 0.8}}"
-
-
-
Führen Sie Ihre Modellevaluierung durch
Definieren Sie Ihren Bewertungsalgorithmus und führen Sie ihn aus
-
Definieren Sie Ihren Bewertungsalgorithmus. Das folgende Beispiel zeigt, wie Sie einen
SummarizationAccuracy
Algorithmus definieren, der verwendet wird, um die Genauigkeit von Aufgaben zur Textzusammenfassung zu bestimmen:eval_algo = SummarizationAccuracy(SummarizationAccuracyConfig())
Beispiele für Algorithmen, die Metriken für andere Bewertungsaufgaben berechnen, finden Sie unter Evaluieren Sie Ihr Modell inVerwenden Sie die fmeval Bibliothek, um eine automatische Bewertung durchzuführen.
-
Führen Sie Ihren Bewertungsalgorithmus aus. Das folgende Codebeispiel verwendet die Datenkonfiguration, die zuvor definiert wurde, und eine
prompt_template
, die dieAssistant
SchlüsselHuman
und verwendet:eval_output = eval_algo.evaluate(model=bedrock_model_runner, dataset_config=config, prompt_template="Human: $feature\n\nAssistant:\n", save=True)
feature
Enthält im vorherigen Codebeispiel die Eingabeaufforderung in dem Format, das das Amazon Bedrock-Modell erwartet.
Sehen Sie sich Ihre Analyseergebnisse an
-
Analysieren Sie einen Bewertungsbericht anhand des vom Bewertungsalgorithmus zurückgegebenen
eval_output
Objekts wie folgt:# parse report print(json.dumps(eval_output, default=vars, indent=4))
Der vorherige Befehl gibt die folgende Ausgabe zurück:
[ { "eval_name": "summarization_accuracy", "dataset_name": "sample-dataset", "dataset_scores": [ { "name": "meteor", "value": 0.2048823008681274 }, { "name": "rouge", "value": 0.03557697913367101 }, { "name": "bertscore", "value": 0.5406564395678671 } ], "prompt_template": "Human: $feature\n\nAssistant:\n", "category_scores": null, "output_path": "/tmp/eval_results/summarization_accuracy_sample_dataset.jsonl", "error": null } ]
In der vorherigen Beispielausgabe werden die drei Genauigkeitswerte angezeigt: Meteor
, Rouge , und BERTScore , die Eingabe prompt_template
, ein,category_score
ob Sie eine angefordert haben, etwaige Fehler und dieoutput_path
. Sie verwenden dieoutput_path
, umPandas DataFrame
im folgenden Schritt eine zu erstellen. -
Importieren Sie Ihre Ergebnisse
DataFrame
, lesen Sie sie in eine ein und fügen Sie die Genauigkeitswerte wie folgt der Modelleingabe, Modellausgabe und Zielausgabe hinzu:import pandas as pd data = [] with open("/tmp/eval_results/summarization_accuracy_sample_dataset.jsonl", "r") as file: for line in file: data.append(json.loads(line)) df = pd.DataFrame(data) df['meteor_score'] = df['scores'].apply(lambda x: x[0]['value']) df['rouge_score'] = df['scores'].apply(lambda x: x[1]['value']) df['bert_score'] = df['scores'].apply(lambda x: x[2]['value']) df
Bei diesem Aufruf gibt das vorherige Codebeispiel die folgende Ausgabe zurück (der Kürze halber gekürzt):
model_input model_output target_output prompt scores meteor_score rouge_score bert_score 0 John Edward Bates, formerly of Spalding, Linco... I cannot make any definitive judgments, as th... A former Lincolnshire Police officer carried o... Human: John Edward Bates, formerly of Spalding... [{'name': 'meteor', 'value': 0.112359550561797... 0.112360 0.000000 0.543234 ... 1 23 October 2015 Last updated at 17:44 BST\nIt'... Here are some key points about hurricane/trop... Hurricane Patricia has been rated as a categor... Human: 23 October 2015 Last updated at 17:44 B... [{'name': 'meteor', 'value': 0.139822692925566... 0.139823 0.017621 0.426529 ... 2 Ferrari appeared in a position to challenge un... Here are the key points from the article:\n\n... Lewis Hamilton stormed to pole position at the... Human: Ferrari appeared in a position to chall... [{'name': 'meteor', 'value': 0.283411142234671... 0.283411 0.064516 0.597001 ... 3 The Bath-born player, 28, has made 36 appearan... Okay, let me summarize the key points from th... Newport Gwent Dragons number eight Ed Jackson ... Human: The Bath-born player, 28, has made 36 a... [{'name': 'meteor', 'value': 0.089020771513353... 0.089021 0.000000 0.533514 ... ...
Ihre Modellausgabe kann sich von der vorherigen Beispielausgabe unterscheiden.
Ein Notizbuch, das die in diesem Abschnitt aufgeführten Codebeispiele enthält, finden Sie unter bedrock-claude-summarization-accuracy.ipnyb.