fmeval ライブラリを使用して自動評価を実行する - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

fmeval ライブラリを使用して自動評価を実行する

独自のコードでfmevalライブラリを使用すると、ワークフローをカスタマイズする最も柔軟性があります。fmevalライブラリを使用して任意の を評価しLLM、カスタム入力データセットの柔軟性を高めることもできます。次の手順では、 環境をセットアップする方法と、 fmevalライブラリを使用して開始ワークフローとカスタマイズされたワークフローの両方を実行する方法を示します。

fmeval ライブラリの使用を開始する

Studio ノートブックでは、基盤モデル評価を設定し、ユースケースに合わせてカスタマイズできます。設定は、基盤モデルが予測するために構築されたタスクの種類と、その評価方法の両方によって異なります。FMEval は、オープンエンド生成、テキスト要約、質問回答、分類タスクをサポートしています。このセクションのステップは、開始ワークフローを設定する方法を示しています。この開始ワークフローには、環境のセットアップと、データセットが組み込まれた JumpStart または Amazon Bedrock 基盤モデルを使用した評価アルゴリズムの実行が含まれます。より具体的なユースケースにカスタム入力データセットとワークフローを使用する必要がある場合は、「」を参照してくださいfmeval ライブラリを使用してワークフローをカスタマイズする

Studio ノートブックでモデル評価を実行しない場合は、以下の Studio の使用を開始するセクションのステップ 11 に進んでください。

前提条件
  • Studio UI でモデル評価を実行するには、 AWS Identity and Access Management (IAM) ロールと入力データセットに正しいアクセス許可が必要です。 SageMaker ドメインまたはIAMロールがない場合は、「」のステップに従いますAmazon のセットアップガイド SageMaker

Amazon S3 バケットのアクセス許可を設定するには

ドメインとロールを作成したら、次のステップを使用してモデルの評価に必要なアクセス許可を追加します。

  1. で Amazon SageMaker コンソールを開きますhttps://console.aws.amazon.com/sagemaker/

  2. ナビゲーションペインで、ページの上部にある検索バーS3に を入力します。

  3. サービス で S3 を選択します。

  4. ナビゲーションペインからバケットを選択します。

  5. 汎用バケットセクションの名前 で、モデルの入出力をコンソールに保存するために使用する S3 バケットの名前を選択します。S3 バケットがない場合は、以下を実行します。

    1. バケットの作成を選択して、新しいバケットの作成ページを開きます。

    2. 全般設定セクションのAWS リージョン で、基盤モデルがあるリージョンを選択します AWS 。

    3. バケット名 の入力ボックスに S3 バケットに名前を付けます。

    4. デフォルトの選択肢をすべて受け入れます。

    5. [Create bucket] (バケットの作成) を選択します。

    6. 汎用バケットセクションの名前 で、作成した S3 バケットの名前を選択します。

  6. [アクセス許可] タブを選択します。

  7. ウィンドウ下部のクロスオリジンリソース共有 (CORS) セクションまでスクロールします。[編集] を選択します。

  8. 基礎評価のアクセス許可をバケットに追加するには、入力ボックスに次のコードが表示されていることを確認します。入力ボックスに以下をコピーして貼り付けることもできます。

    [ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [ "Access-Control-Allow-Origin" ] } ]
  9. [Save changes] (変更の保存) をクリックします。

IAM ポリシーにアクセス許可を追加するには
  1. ページ上部の検索バーに と入力しますIAM

  2. サービス でアイデンティティとアクセス管理 (IAM) を選択します。

  3. ナビゲーションペインからポリシーを選択します。

  4. 検索バーAmazonSageMakerFullAccessに を入力します。表示されるポリシーの横にあるラジオボタンを選択します。アクションボタンを選択できるようになりました。

  5. アクション の横にある下矢印を選択します。2 つのオプションが表示されます。

  6. 添付を選択します。

  7. 表示されるIAMリストで、作成したロールの名前を検索します。名前の横にあるチェックボックスをオンにします。

  8. Attach policy] (ポリシーのアタッチ) を選択します。

Studio の使用を開始する
  1. ページ上部の検索バーに と入力しますSageMaker

  2. サービス で、Amazon SageMakerを選択します。

  3. ナビゲーションペインから Studio を選択します。

  4. ドメインを選択 の下矢印を展開した後、開始するセクションからドメインを選択します。

  5. ユーザープロファイルを選択 の下向き矢印を展開した後、「開始方法」セクションからユーザープロファイルを選択します。

  6. Open Studio を選択して Studio のランディングページを開きます。

  7. ナビゲーションペインからファイルブラウザを選択し、ルートディレクトリに移動します。

  8. ノートブックの作成 を選択します。

  9. 開いたノートブック環境ダイアログボックスで、Data Science 3.0 イメージを選択します。

  10. [選択] を選びます。

  11. 次のコード例に示すように、 fmevalパッケージを開発環境にインストールします。

    !pip install fmeval
    注記

    を使用する環境にfmevalライブラリをインストールする Python 3.10。 の実行に必要な要件の詳細については、fmeval「依存関係fmeval」を参照してください。

FMEval は、 と呼ばれる高レベルのラッパーModelRunnerを使用して、モデルから入力、呼び出し、および出力を抽出します。fmeval パッケージは任意の を評価できますがLLM、設定する手順は、評価するモデルの種類ModelRunnerによって異なります。このセクションでは、 JumpStart または Amazon Bedrock モデルModelRunner用に を設定する方法について説明します。カスタム入力データセットとカスタム を使用する場合はModelRunner、「」を参照してくださいfmeval ライブラリを使用してワークフローをカスタマイズする

JumpStart モデルを使用する

ModelRunner を使用して JumpStart モデルを評価するには、エンドポイントを作成または提供し、モデルと組み込みデータセットを定義し、 を設定してテストしますModelRunner

JumpStart モデルを定義し、 を設定する ModelRunner
  1. 次のいずれかを実行してエンドポイントを指定します。

    • を既存の JumpStartエンドポイント、、model_idおよび EndpointNameに指定しますmodel_version

    • model_version モデルの model_idと を指定し、 JumpStart エンドポイントを作成します。

    次のコード例は、 のエンドポイントを作成する方法を示しています。 Llama 2 foundation model は を通じて利用できます JumpStart。

    import sagemaker from sagemaker.jumpstart.model import JumpStartModel #JumpStart model and version model_id, model_version = "meta-textgeneration-llama-2-7b-f", "*" my_model = JumpStartModel(model_id=model_id) predictor = my_model.deploy() endpoint_name = predictor.endpoint_name # Accept the EULA, and test the endpoint to make sure it can predict. predictor.predict({"inputs": [[{"role":"user", "content": "Hello how are you?"}]]}, custom_attributes='accept_eula=true')

    前のコード例はEULA、 end-use-license-agreement () を表す を参照していますEULA。EULA は、使用しているモデルのモデルカードの説明に記載されています。一部の JumpStart モデルを使用するには、前の への呼び出しに示すようにaccept_eula=true、 を指定する必要がありますpredict。の詳細についてはEULA、「」の「ライセンスとモデルソース」セクションを参照してください。 モデルソースとライセンス契約

    使用可能な JumpStart モデルのリストは、事前トレーニング済みのモデルテーブル を備えた組み込みアルゴリズムで確認できます。

  2. 次の設定例に示すようにJumpStartModelRunnerModelRunnerを使用して を設定します。

    from fmeval.model_runners.sm_jumpstart_model_runner import JumpStartModelRunner js_model_runner = JumpStartModelRunner( endpoint_name=endpoint_name, model_id=model_id, model_version=model_version )

    前の設定例では、エンドポイントの作成に使用した model_version endpoint_namemodel_id、 と同じ値を使用します。

  3. をテストしますModelRunner。次のコード例に示すように、モデルにサンプルリクエストを送信します。

    js_model_runner.predict("What is the capital of London")

Amazon Bedrock モデルを使用する

Amazon Bedrock モデルを評価するには、モデルと組み込みデータセットを定義し、 を設定する必要がありますModelRunner

Amazon Bedrock モデルを定義し、 を設定する ModelRunner
  1. モデルの詳細を定義して印刷するには、Amazon Bedrock で利用可能な Titan モデルに次のコード例を使用します。

    import boto3 import json bedrock = boto3.client(service_name='bedrock') bedrock_runtime = boto3.client(service_name='bedrock-runtime') model_id = "amazon.titan-tg1-large" accept = "application/json" content_type = "application/json" print(bedrock.get_foundation_model(modelIdentifier=modelId).get('modelDetails'))

    前のコード例では、 acceptパラメータは の評価に使用するデータの形式を指定しますLLM。は、リクエストの入力データの形式contentTypeを指定します。contentType Amazon Bedrock モデルでは acceptと でのみサポートMIME_TYPE_JSONされています。これらのパラメータの詳細については、「」を参照してくださいInvokeModelWithResponseStream

  2. を設定するにはModelRunner、次の設定例に示すようにBedrockModelRunner、 を使用します。

    from fmeval.model_runners.bedrock_model_runner import BedrockModelRunner bedrock_model_runner = BedrockModelRunner( model_id=model_id, output='results[0].outputText', content_template='{"inputText": $prompt, "textGenerationConfig": \ {"maxTokenCount": 4096, "stopSequences": [], "temperature": 1.0, "topP": 1.0}}', )

    ModelRunner 次のように設定をパラメータ化します。

    • モデルのデプロイmodel_idに使用したのと同じ値を使用します。

    • output を使用して、生成されたjsonレスポンスの形式を指定します。例えば、 がレスポンス LLMを提供した場合[{"results": "this is the output"}]、 は output='results[0].outputText'を返しますthis is the output

    • content_template を使用して、 がリクエストとLLMやり取りする方法を指定します。次の設定テンプレートは、前の設定例を説明するためにのみ詳しく説明されており、必須ではありません。

      • 前の設定例では、 変数はプロンプトinputTextを指定し、ユーザーが行ったリクエストをキャプチャします。

      • 変数は、 が次のようにレスポンスLLMを生成する方法textGenerationConfigを指定します。

        • パラメータmaxTokenCountは、 によって返されるトークンの数を制限することで、レスポンスの長さを制限するために使用されますLLM。

        • パラメータstopSequencesは、レスポンスの生成を停止LLMするように に指示する文字シーケンスのリストを指定するために使用されます。モデル出力は、リストされている文字列のいずれかが出力で初めて検出されたときに停止します。例えば、キャリッジリターンシーケンスを使用してモデルレスポンスを 1 行に制限できます。

        • パラメータは、次のトークンを生成するときに考慮するトークンのセットを制限することで、ランダム性topPを制御します。このパラメータは0.0、 と の間の値を受け入れます1.0。の値が大きいほど、より広い語彙を含むセットtopPが許可され、値が低いほど、トークンのセットはより可能性の高い単語に制限されます。

        • パラメータは生成されたテキストのランダム性temperatureを制御し、正の値を受け入れます。の値が大きいほど、よりランダムで多様なレスポンスを生成するようにモデルtemperatureに指示します。値を小さくすると、予測可能なレスポンスが生成されます。の一般的な範囲temperature0.2と の間です2.0

        特定の Amazon Bedrock 基盤モデルのパラメータの詳細については、「基盤モデルの推論パラメータ」を参照してください。

      content_template パラメータの形式は、 でサポートされている入力とパラメータによって異なりますLLM。例えば、Anthropic’s Claude 2 モデルは、次の をサポートできますcontent_template

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

      別の例として、Falcon 7b モデルは次の をサポートできますcontent_template

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

      最後に、 をテストしますModelRunner。次のコード例に示すように、モデルにサンプルリクエストを送信します。

      bedrock_model_runner.predict("What is the capital of London?")

データおよび を設定したらModelRunner、 によって生成されたレスポンスに対して評価アルゴリズムを実行できますLLM。使用可能なすべての評価アルゴリズムのリストを表示するには、次のコードを実行します。

from fmeval.eval_algo_mapping import EVAL_ALGORITHMS print(EVAL_ALGORITHMS.keys())

各アルゴリズムには、評価とevaluate_sampleメソッドの両方があります。evaluate メソッドは、データセット全体のスコアを計算します。evaluate_sample メソッドは、単一のインスタンスのスコアを評価します。

evaluate_sample メソッドはEvalScoreオブジェクトを返します。 EvalScore オブジェクトには、評価中にモデルがどの程度パフォーマンスしたかの集計スコアが含まれます。evaluate_sample メソッドには、次のオプションパラメータがあります。

  • model_output – 1 つのリクエストのモデルレスポンス。

  • model_input – モデルへのリクエストを含むプロンプト。

  • target_output – に含まれるプロンプトから予想されるレスポンスmodel_input

次のコード例は、 の使用方法を示していますevaluate_sample

#Evaluate your custom sample model_output = model_runner.predict("London is the capital of?")[0] eval_algo.evaluate_sample(target_output="UK<OR>England<OR>United Kingdom", model_output=model_output)

evaluate メソッドには、次のオプションパラメータがあります。

  • model – 評価するモデルModelRunnerを使用するインスタンス。

  • dataset_config – データセット設定。が指定されdataset_configていない場合、モデルは、このタスク用に設定されたすべての組み込みデータセットを使用して評価されます。

  • prompt_template – プロンプトの生成に使用されるテンプレート。が指定されprompt_templateていない場合、モデルはデフォルトのプロンプトテンプレートを使用して評価されます。

  • save – に設定するとTrue、レコード単位のプロンプトレスポンスとスコアが ファイル に保存されますEvalAlgorithmInterface.EVAL_RESULTS_PATH。デフォルトは False です。

  • num_records – 評価のために入力データセットからランダムにサンプリングされるレコードの数。デフォルトは 300 です。

evaluate アルゴリズムは、以下を含むことができるEvalOutputオブジェクトのリストを返します。

  • eval_name – 評価アルゴリズムの名前。

    dataset_name – 評価アルゴリズムで使用されるデータセットの名前。

    prompt_template – パラメータがデータセットに指定model_outputされていない場合に消費されるプロンプトを作成するために使用されるテンプレート。詳細については、「セクションを設定するprompt_template」の「」を参照してください。 JumpStart ModelRunner

    dataset_scores – データセット全体で計算された集計スコア。

    category_scores – データセット内の各カテゴリのスコアを含むCategoryScoreオブジェクトのリスト。

    output_path – 評価出力へのローカルパス。この出力には、レコード単位の評価スコアを含むプロンプトとレスポンスが含まれます。

    error – 失敗した評価ジョブの文字列エラーメッセージ。

モデル評価には、次のディメンションを使用できます。

  • 正解率

  • 実際の知識

  • プロンプトのステレオタイプ化

  • セマンティック堅牢性

  • 有害性

正解率

質問への回答、テキストの要約、または分類タスクの精度アルゴリズムを実行できます。アルゴリズムは、次のようにさまざまなデータ入力タイプと問題に対応するために、タスクごとに異なります。

  • 質問への回答タスクでは、 QAAccuracyConfig ファイルを使用してQAAccuracyアルゴリズムを実行します。

  • テキスト要約タスクの場合は、 を使用してSummarizationAccuracyアルゴリズムを実行しますSummarizationAccuracyConfig

  • 分類タスクの場合は、 でClassificationAccuracyアルゴリズムを実行しますClassificationAccuracyConfig

QAAccuracy アルゴリズムは、サンプルごとに 1 つの精度スコアを含むEvalOutputオブジェクトのリストを返します。質問回答の精度アルゴリズムを実行するには、 をインスタンス化しQAAccuracygeConfig<OR>または Noneとして渡しますtarget_output_delimiter。質問回答精度アルゴリズムは、モデルが生成するレスポンスを既知のレスポンスと比較します。ターゲット区切り文字<OR>として渡すと、アルゴリズムは、回答<OR>で で区切られたコンテンツのいずれかを生成する場合、レスポンスを正しいとスコアします。None または空の文字列を として渡すとtarget_output_delimiter、コードはエラーをスローします。

次のコード例に示すように、 evaluateメソッドを呼び出し、目的のパラメータを渡します。

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.qa_accuracy import QAAccuracy, QAAccuracyConfig eval_algo = QAAccuracy(QAAccuracyConfig(target_output_delimiter="<OR>"))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

SummarizationAccuracy アルゴリズムは、 のスコアを含むEvalOutputオブジェクトのリストを返します。 ROUGE-N, Meteor、および BERTScore。 これらのスコアの詳細については、「」の「テキストの概要」セクションを参照してくださいモデル評価ジョブでのプロンプトデータセットと使用可能な評価ディメンションの使用 。テキスト要約精度アルゴリズムを実行するには、 をインスタンス化しSummarizationAccuracyConfig、以下を渡します。

  • のタイプを指定します。 ROUGE の評価に使用するメトリクスrouge_typerouge1rouge2 または rougeL を選択できます。これらのメトリクスは、生成された概要をリファレンス概要と比較します。ROUGE-1 は、生成された概要と参照概要を重複するユニグラム (「the」、「is」などの 1 つの項目のシーケンス) を使用して比較します。ROUGE-2 は、生成された概要と参照概要をビッグラム (「大きな」、「ホームである」などの 2 つのシーケンスのグループ) を使用して比較します。ROUGE-L は、一致する単語の最長シーケンスを比較します。の詳細については、「」を参照してください。ROUGE、「」を参照してください。 ROUGE: 概要の自動評価パッケージ

  • use_stemmer_for_rougeTrue または False に設定します。ステムマーは、比較する前に単語からアタッチを削除します。例えば、ステムマーは、スイミングとスワムの両方がステム後にスイミングされるように、アタッチを「スイミング」と「スワム」から削除します。

  • model_type_for_bertscore を、 の計算に使用するモデルに設定します。 BERTScoreROBERTA_MODEL またはより高度な MICROSOFT_DEBERTA_MODEL を選択できます。

最後に、次のコード例に示すように、 evaluateメソッドを呼び出し、目的のパラメータを渡します。

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.summarization_accuracy import SummarizationAccuracy, SummarizationAccuracyConfig eval_algo = SummarizationAccuracy(SummarizationAccuracyConfig(rouge_type="rouge1",model_type_for_bertscore="MICROSOFT_DEBERTA_MODEL")) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

ClassificationAccuracy アルゴリズムは、各サンプルの分類精度、精度、リコール、およびバランス精度スコアを含むEvalOutputオブジェクトのリストを返します。これらのスコアの詳細については、「」の「分類」セクションを参照してくださいモデル評価ジョブでのプロンプトデータセットと使用可能な評価ディメンションの使用 。分類精度アルゴリズムを実行するには、 をインスタンス化し、平均化戦略を に渡ClassificationAccuracyConfigしますmulticlass_average_strategymicro、、macrosamplesweighted、または を選択できますbinary。デフォルト値は micro です。次に、分類カテゴリの真のラベルを含む列の名前を含むリストを valid_labels に渡します。最後に、次のコード例に示すように、 evaluateメソッドを呼び出し、目的のパラメータを渡します。

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.classification_accuracy import ClassificationAccuracy, ClassificationAccuracyConfig eval_algo = ClassificationAccuracy(ClassificationAccuracyConfig(multiclass_average_strategy="samples",valid_labels=["animal_type","plant_type","fungi_type"])) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

実際の知識

オープンエンド生成の事実認識アルゴリズムを実行できます。事実認識アルゴリズムを実行するには、 をインスタンスFactualKnowledgeConfig化し、オプションで区切り文字文字列を渡します (デフォルトでは )<OR>。事実認識アルゴリズムは、モデルが生成するレスポンスを既知のレスポンスと比較します。アルゴリズムは、回答内の区切り文字で区切られたコンテンツのいずれかを生成する場合、レスポンスを正しいものとしてスコアします。を Noneとして渡す場合target_output_delimiter、モデルは正解として採点される回答と同じレスポンスを生成する必要があります。最後に、 evaluateメソッドを呼び出し、目的のパラメータを渡します。

実際のナレッジは、EvalScoreオブジェクトのリストを返します。これには、Foundation モデル評価の概要セクションで説明されているように、モデルが事実に関する知識をどの程度エンコードできるかに関する集計スコアが含まれます。スコアの範囲は から 1 0で、スコアが最も低いのは現実世界の事実に関する知識が低いことに対応します。

次のコード例は、事実認識アルゴリズムLLMを使用して を評価する方法を示しています。

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.factual_knowledge import FactualKnowledge, FactualKnowledgeConfig eval_algo = FactualKnowledge(FactualKnowledgeConfig()) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

プロンプトのステレオタイプ化

オープンエンド生成のプロンプトステレオタイプアルゴリズムを実行できます。プロンプトステレオタイプ化アルゴリズムを実行するには、 でステレオタイプ性の低い文sent_less_input_locationと、 でステレオタイプ性の低い文を含む入力データセット内の列を特定DataConfigする必要がありますsent_more_output_location。の詳細についてはDataConfig、前のセクション 2 を参照してください。[Configure (設定)ModelRunner] をクリックします。次に、 evaluateメソッドを呼び出し、目的のパラメータを渡します。

プロンプトのステレオタイプ化は、入力レコードごとのスコアとバイアスのタイプごとの全体的なスコアを含むEvalOutputオブジェクトのリストを返します。スコアは、定型文の確率を比較して計算されます。全体的なスコアは、モデルが定型文を好んだ頻度をレポートします。これは、モデルが定型文よりも定型文に高い確率を割り当てるという点です。スコア は、モデルに偏りがないか、等価な割合でステレオタイプの文章をどんどん好む0.5ことを示します。スコアが より大きい場合は、モデルがよりステレオ型のレスポンスを生成する可能性が高い0.5ことを示します。スコアが 未満の場合は、モデルがステレオタイプでないレスポンスを生成する可能性が高い0.5ことを示します。

次のコード例は、プロンプトステレオタイプアルゴリズムLLMを使用して を評価する方法を示しています。

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.prompt_stereotyping import PromptStereotyping eval_algo = PromptStereotyping() eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

セマンティック堅牢性

任意のFMEvalタスクに対してセマンティック堅牢性アルゴリズムを実行できますが、モデルは決定的である必要があります。決定論モデルは、常に同じ入力に対して同じ出力を生成するモデルです。通常、デコードプロセスでランダムシードを設定することで決定性を達成できます。アルゴリズムは、次のようにさまざまなデータ入力タイプと問題に対応するために、タスクごとに異なります。

  • オープンエンド生成、質問回答、またはタスク分類では、 GeneralSemanticRobustnessConfig ファイルを使用してGeneralSemanticRobustnessアルゴリズムを実行します。

  • テキストの概要については、 SummarizationAccuracySemanticRobustnessConfig ファイルを使用してSummarizationAccuracySemanticRobustnessアルゴリズムを実行します。

GeneralSemanticRobustness アルゴリズムは、 0と の間の値を含む精度を含むEvalScoreオブジェクトのリストを返します。また、摂動モデル出力と摂動されていないモデル出力の差を1定量化します。一般的なセマンティック堅牢性アルゴリズムを実行するには、 をインスタンス化しGeneralSemanticRobustnessConfig、 を渡しますperturbation_type。には、次のいずれかを選択できますperturbation_type

  • Butterfinger – キーボードの距離に基づいて文字スワップを使用してスペルミスを模倣する摂動。特定の文字が乱される確率を入力します。Butterfinger は のデフォルト値ですperturbation_type

  • RandomUpperCase – 文字の一部を大文字に変更する摂動。から 0 までの 10 進数を入力します1

  • WhitespaceAddRemove – 空白文字が非ホワイトスペース文字の前に追加されてホワイトになる確率。

次のパラメータを指定することもできます。

  • num_perturbations – 生成されたテキストに導入する各サンプルの摂動の数。デフォルト: 5

  • butter_finger_perturbation_prob – 文字が乱される確率。perturbation_typeButterfinger である場合にのみ使用されます。デフォルト: 0.1

  • random_uppercase_corrupt_proportion – 大文字に変更する文字の割合。perturbation_typeRandomUpperCase である場合にのみ使用されます。デフォルト: 0.1

  • whitespace_add_prob – 空白がある場合、サンプルから削除される確率。perturbation_typeWhitespaceAddRemove である場合にのみ使用されます。デフォルト: 0.05

  • whitespace_remove_prob – ホワイト以外のスペースがあると、その前に空白を追加する確率。perturbation_typeWhitespaceAddRemove である場合にのみ使用されます。デフォルト: 0.1

最後に、次のコード例に示すように、 evaluateメソッドを呼び出し、目的のパラメータを渡します。

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.general_semantic_robustness import GeneralSemanticRobustness, GeneralSemanticRobustnessConfig eval_algo = GeneralSemanticRobustness(GeneralSemanticRobustnessConfig(perturbation_type="RandomUpperCase",num_perturbations=2,random_uppercase_corrupt_proportion=0.3))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

SummarizationAccuracySemanticRobustness アルゴリズムは、 EvalScore ROUGE-N, Meteor、および BERTScore 生成された概要と参照概要の間の値。これらのスコアの詳細については、「」の「テキストの要約」セクションを参照してくださいモデル評価ジョブでのプロンプトデータセットと使用可能な評価ディメンションの使用 。テキスト要約セマンティック堅牢性アルゴリズムを実行するには、 SummarizationAccuracySemanticRobustnessConfigをインスタンス化し、 を渡しますperturbation_type

には、次のいずれかを選択できますperturbation_type

  • Butterfinger – キーボードの距離に基づいて文字スワップを使用してスペルミスを模倣する摂動。特定の文字が混乱する確率を入力します。 Butterfingerは のデフォルト値ですperturbation_type

  • RandomUpperCase – 文字の一部を大文字に変更する摂動。から 0 までの 10 進数を入力します1

  • WhitespaceAddRemove – 空白文字が非ホワイトスペース文字の前に追加される確率をホワイトに入力します。

次のパラメータを指定することもできます。

  • num_perturbations – 生成されたテキストに導入する各サンプルの摂動の数。デフォルトは 5 です。

  • butter_finger_perturbation_prob – 文字が混乱する確率。perturbation_typeButterfinger である場合にのみ使用されます。デフォルトは 0.1 です。

  • random_uppercase_corrupt_proportion – 大文字に変更する文字の割合。perturbation_typeRandomUpperCase である場合にのみ使用されます。デフォルトは 0.1 です。

  • whitespace_add_prob – 空白がある場合、サンプルから削除される確率。perturbation_typeWhitespaceAddRemove である場合にのみ使用されます。デフォルトは 0.05 です。

  • whitespace_remove_prob – ホワイト以外のスペースがあると、その前に空白を追加する確率。perturbation_type が の場合にのみ使用されます。WhitespaceAddRemoveデフォルトは です0.1

  • rouge_type – 生成された概要と参照概要を比較するメトリクス。のタイプを指定します。 ROUGE の評価に使用するメトリクスrouge_typerouge1rouge2 または rougeL を選択できます。ROUGE-1 は、生成された概要と参照概要を重複するユニグラム (「the」、「is」などの 1 つの項目のシーケンス) を使用して比較します。ROUGE-2 は、生成された概要と参照概要をビッグラム (「大きな」、「ホームである」などの 2 つのシーケンスのグループ) を使用して比較します。ROUGE-L は、一致する単語の最長シーケンスを比較します。の詳細については、「」を参照してください。ROUGE、「」を参照してください。 ROUGE: サマリーの自動評価パッケージ

  • user_stemmer_for_rougeTrue または False に設定します。ステムマーは、比較する前に単語からアタッチを削除します。例えば、ステムマーは、スイミングとスワムの両方がステム後にスイミングされるように、アタッチを「スイミング」と「スワム」から削除します。

  • の計算に使用するモデルmodel_type_for_bertscoreに設定する BERTScoreROBERTA_MODEL またはより高度な MICROSOFT_DEBERTA_MODEL を選択できます。

    次のコード例に示すように、 evaluateメソッドを呼び出し、目的のパラメータを渡します。

    from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.summarization_accuracy_semantic_robustness import SummarizationAccuracySemanticRobustness, SummarizationAccuracySemanticRobustnessConfig eval_algo = SummarizationAccuracySemanticRobustness(SummarizationAccuracySemanticRobustnessConfig(perturbation_type="Butterfinger",num_perturbations=3,butter_finger_perturbation_prob=0.2))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

有害性

毒性アルゴリズムは、オープンエンド生成、テキスト要約、または質問回答のために実行できます。タスクに応じて 3 つの異なるクラスがあります。

  • オープンエンド生成の場合は、 ToxicityConfig ファイルを使用して毒性アルゴリズムを実行します。

  • 要約には、 クラス を使用しますSummarization_Toxicity

  • 質問への回答には、 クラス を使用しますQAToxicity

毒性アルゴリズムは、 0 と の間のスコアを含むEvalScoreオブジェクトのリストを (毒性ディテクターに応じて) 1 つ以上返します1。毒性アルゴリズムを実行するには、 をインスタンス化し、 でモデルを に対して評価するために使用する毒性モデルをToxicityConfig渡しますmodel_type。には、以下を選択できますmodel_type

  • UnitaryAI Detoxify-unbiased の「detoxify」は、毒性分類 の毒性コメント分類チャレンジと Jigsaw Unintended Bias についてトレーニングされたマルチラベルテキスト分類子です。 https://www.kaggle.com/c/jigsaw-unintended-bias-in-toxicity-classificationこのモデルは、毒性、重度の毒性、わいせつ、脅威、侮辱、性的露骨さ、アイデンティティ攻撃のクラスについて7スコアを提供します。

    以下は、デトックスモデルからの出力例です。

    EvalScore(name='toxicity', value=0.01936926692724228), EvalScore(name='severe_toxicity', value=3.3755677577573806e-06), EvalScore(name='obscene', value=0.00022437423467636108), EvalScore(name='identity_attack', value=0.0006707844440825284), EvalScore(name='insult', value=0.005559926386922598), EvalScore(name='threat', value=0.00016682750720065087), EvalScore(name='sexual_explicit', value=4.828436431125738e-05)
  • ToxiGen データセットで微調整されたバイナリ R oBERTaベースのテキスト分類子である Toxigen-roberta の「toxigen」。これには、13少数派グループに関する微妙で暗黙的な毒性を持つ文が含まれます。

最後に、次のコード例に示すように、 evaluateメソッドを呼び出し、目的のパラメータを渡します。

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.toxicity import Toxicity, ToxicityConfig eval_algo = Toxicity(ToxicityConfig(model_type="detoxify")) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)