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-Kernelumgebung Python 3.10 und eine
ml.m5.2xlargeAmazon Elastic Compute Cloud (Amazon EC2) -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
boto3Bibliothekenfmevalund 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 beispielsweise100Aufrufe haben und diese Option auf eingestelltPARALLELIZATION_FACTORist, führt Ihr Job Aufrufe aus.2200Sie können die VariablePARALLELIZATION_FACTORauf einen Wert erhöhen oder sie10ganz entfernen. Einen Blog zur Verwendung von AWS Lambda finden SiePARALLELIZATION_FACTORunter Neue Lambda-Skalierungssteuerungen für Kinesis- und DynamoDB-Ereignisquellen.
-
-
Laden Sie den
JSON LinesBeispieldatensatz 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
MIMETyp 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
500folgendemmax_tokens_to_sampleSatz: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 vontemperatureweisen das Modell an, mehr zufällige und vielfältigere Antworten zu generieren. Niedrigere Werte führen zu besser vorhersehbaren Antworten. Bereiche fürtemperatureliegen zwischen0und1, 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 vontopPermöglichen einen Satz mit einem breiteren Wortschatz und niedrigere Werte beschränken den Tokensatz auf wahrscheinlichere Wörter. Die Wertebereiche fürtopPsind0bis1, der1Standardwert ist. -
topK— Beschränkt die Modellvorhersagen auf die Tokens mit derkhöchsten Wahrscheinlichkeit. Höhere Werte vontopKermöglichen einfallsreichere Antworten. Niedrigere Werte führen zu kohärenteren Antworten. Die Bereiche fürtopKsind0bis500, 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_samplesind0bis4096, 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 einem4Stopp 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
documentSchlüssel zusammengefasst werden soll. Die Referenz, anhand derer Sie Ihre Modellantwort auswerten können, befindet sich imsummarySchlü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_locationdem Ihr Modell zusammengefasst werden soll. Sie müssen den Referenzwert mittarget_output_locationidentifizieren.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, den URI (Uniform Resource Identifier) und den
MIMETyp 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,
ModelRunnerwie 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 Spezifizierung Ihres Modells verwendet wurde. -
output— Erfasst die Ausgabe des Modells Anthropic Claude 2, das seine Antwort in einem completionSchlü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_templateBeispiel gilt Folgendes:-
Die Variable
promptgibt die Eingabeaufforderung an, die die vom Benutzer gestellte Anfrage erfasst. -
Die Variable
max_tokens_to_samplegibt 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_templateParameters 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
SummarizationAccuracyAlgorithmus 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 dieAssistantSchlüsselHumanund verwendet:eval_output = eval_algo.evaluate(model=bedrock_model_runner, dataset_config=config, prompt_template="Human: $feature\n\nAssistant:\n", save=True)featureEnthä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_outputObjekts 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: MeteorRouge
, BERTScore , und, die Eingabe prompt_template, a,category_scorefalls Sie eine angefordert haben, alle Fehler und dieoutput_path. Im folgenden Schritt werden Sie die verwenden,output_pathPandas DataFrameum 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']) dfBei 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.