Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Valuta un modello Amazon Bedrock per la precisione del riepilogo del testo

Modalità Focus
Valuta un modello Amazon Bedrock per la precisione del riepilogo del testo - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Puoi utilizzare un ModelRunner wrapper di alto livello per creare una valutazione personalizzata basata su un modello ospitato all'esterno di. JumpStart

Questo tutorial mostra come caricare il modello Anthropic Claude 2, disponibile in Amazon Bedrock, e chiedere a questo modello di riepilogare le istruzioni di testo. Quindi, questo tutorial mostra come valutare la precisione della risposta del modello utilizzando Rouge-L, Meteor, e BERTScoreParametri di

I tutorial mostrano come eseguire le seguenti operazioni:

  • Configurazione dell'ambiente

  • Esegui la valutazione del modello.

  • Visualizza i risultati dell'analisi.

Configurazione dell'ambiente

Prerequisiti
  • Usa una base Python 3.10 ambiente kernel e un'istanza ml.m5.2xlarge Amazon Elastic Compute Cloud (Amazon EC2) prima di iniziare questo tutorial.

    Per ulteriori informazioni sui tipi di istanze e sui relativi casi d'uso consigliati, consulta. Tipi di istanze disponibili per l'uso con Studio Classic

Configurazione di Amazon Bedrock

Prima di poter utilizzare un modello Amazon Bedrock, devi richiederne l'accesso.

  1. Accedi al tuo. Account AWS

    1. Se non disponi di un AWS account, consulta Registrare un AWS account in Configurare Amazon Bedrock.

  2. Apri la console Amazon Bedrock.

  3. Nella sezione Benvenuto su Amazon Bedrock! nella sezione che si apre, scegli Gestisci l'accesso al modello.

  4. Nella sezione Accesso al modello che appare, scegli Gestisci l'accesso al modello.

  5. Nella sezione Modelli base che appare, seleziona la casella accanto a Claude elencata nella sottosezione Anthropic di Models.

  6. Scegli Richiedi l'accesso al modello.

  7. Se la richiesta ha esito positivo, dovrebbe apparire un segno di spunta con Accesso concesso in Stato di accesso accanto al modello selezionato.

  8. Potrebbe essere necessario accedere nuovamente Account AWS al proprio account per poter accedere al modello.

Installa le librerie richieste
  1. Nel codice, installa le boto3 librerie fmeval and come segue:

    !pip install fmeval !pip3 install boto3==1.28.65
  2. Importa le librerie, imposta un fattore di parallelizzazione e richiama un client Amazon Bedrock come segue:

    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')

    Nell'esempio di codice precedente, si applica quanto segue:

    • PARALLELIZATION_FACTOR— Un moltiplicatore per il numero di batch simultanei inviati all'istanza di calcolo. Se l'hardware consente la parallelizzazione, è possibile impostare questo numero per moltiplicare il numero di chiamate per il processo di valutazione. Ad esempio, se si dispone di 100 chiamate ed PARALLELIZATION_FACTOR è impostato su, il job eseguirà le chiamate2. 200 È possibile aumentare PARALLELIZATION_FACTOR fino a o rimuovere 10 completamente la variabile. Per leggere un blog sull'utilizzo di AWS Lambda, PARALLELIZATION_FACTOR consulta Nuovi controlli di scalabilità Lambda per le sorgenti di eventi Kinesis e DynamoDB.

  3. Scarica il set di dati di esempio, JSON Lines sample-dataset.jsonl, nella tua directory di lavoro corrente.

  4. Verifica che il tuo ambiente contenga il file di input di esempio come segue:

    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")
Invia una richiesta di inferenza di esempio al tuo modello
  1. Definite il modello e il MIME tipo di prompt. Per un modello Anthropic Claude 2 ospitato su Amazon Bedrock, il prompt deve essere strutturato come segue:

    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: """

    Per ulteriori informazioni su come strutturare il corpo della richiesta, consulta Model invocation request body field. Altri modelli possono avere formati diversi.

  2. Invia una richiesta di esempio al tuo modello. Il corpo della richiesta contiene il prompt e tutti i parametri aggiuntivi che desideri impostare. Un esempio di richiesta con il 500 seguente max_tokens_to_sample set:

    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"))

    Nell'esempio di codice precedente, è possibile impostare i seguenti parametri:

    • temperature— Controlla la casualità del testo generato e accetta valori positivi. I valori più alti di temperature indicano al modello di generare risposte più casuali e diversificate. I valori più bassi generano risposte più prevedibili. Intervalli temperature compresi tra 0 e1, con un valore predefinito di 0,5.

    • topP— Controlla la casualità limitando il set di token da considerare nella generazione del token successivo. I valori più alti di topP allow per un set contenente un vocabolario più ampio e i valori più bassi limitano l'insieme di token a parole più probabili. Gli intervalli per topP are 0 to1, con un valore predefinito di. 1

    • topK— Limita le previsioni del modello ai token k più probabili. Valori più elevati topK consentono risposte più creative. Valori più bassi generano risposte più coerenti. topKIntervalli per 0 are to500, con un valore predefinito di250.

    • max_tokens_to_sample— Limita la lunghezza della risposta limitando il numero di token restituiti dal modello. Intervalli per max_tokens_to_sample are 0 to4096, con un valore predefinito di. 200

    • stop_sequences— Speciifica un elenco di sequenze di caratteri che indicano al modello di interrompere la generazione di una risposta. L'output del modello viene interrotto la prima volta che una delle stringhe elencate viene rilevata nell'output. La risposta non contiene la sequenza di arresto. Ad esempio, è possibile utilizzare una sequenza di restituzione del carrello per limitare la risposta del modello a una singola riga. È possibile configurare sequenze fino a un massimo di 4 interruzioni.

    Per ulteriori informazioni sui parametri che è possibile specificare in una richiesta, consulta Modelli Anthropic Claude.

Configurare FMEval
  1. Carica le librerie richieste per eseguirle FMEval come segue:

    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
  2. Imposta la configurazione dei dati per il tuo set di dati di input.

    Il seguente input di esempio è composto da una riga dasample-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", }

    L'input di esempio precedente contiene il testo da riepilogare all'interno della document chiave. Il riferimento rispetto al quale valutare la risposta del modello è nella summary chiave. È necessario utilizzare queste chiavi all'interno della configurazione dei dati per specificare quali colonne contengono le informazioni FMEval necessarie per valutare la risposta del modello.

    La configurazione dei dati deve identificare il testo in cui il modello deve riepilogare. model_input_location È necessario identificare il valore di riferimento contarget_output_location.

    Il seguente esempio di configurazione dei dati si riferisce al precedente esempio di input per specificare le colonne necessarie per un'attività di riepilogo del testo, il nome, l'URI (Uniform Resource Identifier) e MIME il tipo:

    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" )

    Per ulteriori informazioni sulle informazioni sulle colonne necessarie per altre attività, vedere la sezione Utilizzare un set di dati di input personalizzato in. Valutazione automatica del modello

  3. Imposta una personalizzazione ModelRunner come mostrato nel seguente esempio di codice:

    bedrock_model_runner = BedrockModelRunner( model_id=model_id, output='completion', content_template='{"prompt": $prompt, "max_tokens_to_sample": 500}' )

    L'esempio di codice precedente specifica quanto segue:

    • model_id— L'id usato per specificare il modello.

    • output— Cattura l'output del modello Anthropic Claude 2, che restituisce la risposta in una chiave. completion

    • content_template— Speciifica in che modo il modello interagisce con le richieste. Il modello di configurazione di esempio è dettagliato come segue esclusivamente per spiegare l'esempio precedente e non è obbligatorio.

      • Nell'content_templateesempio precedente, si applica quanto segue:

        • La variabile prompt specifica il prompt di input, che acquisisce la richiesta effettuata dall'utente.

        • La variabile max_tokens_to_sample specifica il numero massimo di token a500, al fine di limitare la lunghezza della risposta.

          Per ulteriori informazioni sui parametri che è possibile specificare nella richiesta, vedere Modelli Anthropic Claude.

        Il formato del content_template parametro dipende dagli input e dai parametri supportati dal LLM. In questo tutorial, il modello Claude 2 di Anthropic utilizza quanto segue: content_template

        "content_template": "{\"prompt\": $prompt, \"max_tokens_to_sample\": 500}"

        Come altro esempio, il modello Falcon 7b può supportare quanto segue: content_template

        "content_template": "{\"inputs\": $prompt, \"parameters\":{\"max_new_tokens\": \ 10, \"top_p\": 0.9, \"temperature\": 0.8}}"

Esegui la valutazione del modello

Definisci ed esegui il tuo algoritmo di valutazione
  1. Definisci il tuo algoritmo di valutazione. L'esempio seguente mostra come definire un SummarizationAccuracy algoritmo, utilizzato per determinare la precisione delle attività di riepilogo del testo:

    eval_algo = SummarizationAccuracy(SummarizationAccuracyConfig())

    Per esempi di algoritmi che calcolano le metriche per altre attività di valutazione, consulta Evaluate your model in. Usa la fmeval libreria per eseguire una valutazione automatica

  2. Esegui il tuo algoritmo di valutazione. Il seguente esempio di codice utilizza la configurazione dei dati definita in precedenza e una prompt_template che utilizza le Assistant chiavi Human and:

    eval_output = eval_algo.evaluate(model=bedrock_model_runner, dataset_config=config, prompt_template="Human: $feature\n\nAssistant:\n", save=True)

    Nell'esempio di codice precedente, feature contiene il prompt nel formato previsto dal modello Amazon Bedrock.

Visualizza i risultati dell'analisi

  1. Analizza un rapporto di valutazione dall'eval_outputoggetto restituito dall'algoritmo di valutazione come segue:

    # parse report print(json.dumps(eval_output, default=vars, indent=4))

    Il comando precedente restituisce il seguente risultato:

    [ { "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 } ]

    L'output di esempio precedente mostra i tre punteggi di precisione: Meteor, Rougee BERTScore, l'inputprompt_template, category_score se ne hai richiesto uno, eventuali errori e iloutput_path. Utilizzerai il output_path per creare un Pandas DataFrame file nel passaggio successivo.

  2. Importa i risultati e leggili in un DataFrame file e allega i punteggi di precisione all'input del modello, all'output del modello e all'output di destinazione come segue:

    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

    In questa invocazione, l'esempio di codice precedente restituisce il seguente output (contratto per brevità):

    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 ... ...

    L'output del modello potrebbe essere diverso dall'output di esempio precedente.

    Per un notebook che contiene gli esempi di codice forniti in questa sezione, vedete bedrock-claude-summarization-accuracy.ipnyb.

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.