翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 バケットのアクセス許可を設定するには
ドメインとロールを作成したら、次のステップを使用してモデルの評価に必要なアクセス許可を追加します。
で Amazon SageMaker コンソールを開きますhttps://console.aws.amazon.com/sagemaker/
。 -
ナビゲーションペインで、ページの上部にある検索バー
S3
に を入力します。 -
サービス で S3 を選択します。
-
ナビゲーションペインからバケットを選択します。
-
汎用バケットセクションの名前 で、モデルの入出力をコンソールに保存するために使用する S3 バケットの名前を選択します。S3 バケットがない場合は、以下を実行します。
-
バケットの作成を選択して、新しいバケットの作成ページを開きます。
-
全般設定セクションのAWS リージョン で、基盤モデルがあるリージョンを選択します AWS 。
-
バケット名 の入力ボックスに S3 バケットに名前を付けます。
-
デフォルトの選択肢をすべて受け入れます。
-
[Create bucket] (バケットの作成) を選択します。
-
汎用バケットセクションの名前 で、作成した S3 バケットの名前を選択します。
-
-
[アクセス許可] タブを選択します。
-
ウィンドウ下部のクロスオリジンリソース共有 (CORS) セクションまでスクロールします。[編集] を選択します。
-
基礎評価のアクセス許可をバケットに追加するには、入力ボックスに次のコードが表示されていることを確認します。入力ボックスに以下をコピーして貼り付けることもできます。
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [ "Access-Control-Allow-Origin" ] } ]
-
[Save changes] (変更の保存) をクリックします。
IAM ポリシーにアクセス許可を追加するには
-
ページ上部の検索バーに と入力します
IAM
。 -
サービス で、アイデンティティとアクセス管理 (IAM) を選択します。
-
ナビゲーションペインからポリシーを選択します。
-
検索バーAmazonSageMakerFullAccessに を入力します。表示されるポリシーの横にあるラジオボタンを選択します。アクションボタンを選択できるようになりました。
-
アクション の横にある下矢印を選択します。2 つのオプションが表示されます。
-
添付を選択します。
-
表示されるIAMリストで、作成したロールの名前を検索します。名前の横にあるチェックボックスをオンにします。
-
Attach policy] (ポリシーのアタッチ) を選択します。
Studio の使用を開始する
-
ページ上部の検索バーに と入力します
SageMaker
。 -
サービス で、Amazon SageMakerを選択します。
-
ナビゲーションペインから Studio を選択します。
-
ドメインを選択 の下矢印を展開した後、開始するセクションからドメインを選択します。
-
ユーザープロファイルを選択 の下向き矢印を展開した後、「開始方法」セクションからユーザープロファイルを選択します。
-
Open Studio を選択して Studio のランディングページを開きます。
-
ナビゲーションペインからファイルブラウザを選択し、ルートディレクトリに移動します。
-
ノートブックの作成 を選択します。
-
開いたノートブック環境ダイアログボックスで、Data Science 3.0 イメージを選択します。
-
[選択] を選びます。
-
次のコード例に示すように、
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
-
次のいずれかを実行してエンドポイントを指定します。
-
を既存の 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 モデルのリストは、事前トレーニング済みのモデルテーブル を備えた組み込みアルゴリズム
で確認できます。 -
-
次の設定例に示すように
JumpStartModelRunner
、ModelRunner
を使用して を設定します。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_name
、model_id
、 と同じ値を使用します。 -
をテストします
ModelRunner
。次のコード例に示すように、モデルにサンプルリクエストを送信します。js_model_runner.predict("What is the capital of London")
Amazon Bedrock モデルを使用する
Amazon Bedrock モデルを評価するには、モデルと組み込みデータセットを定義し、 を設定する必要がありますModelRunner
。
Amazon Bedrock モデルを定義し、 を設定する ModelRunner
-
モデルの詳細を定義して印刷するには、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。 -
を設定するには
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
に指示します。値を小さくすると、予測可能なレスポンスが生成されます。の一般的な範囲temperature
は0.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
」の「」を参照してください。 JumpStartModelRunner
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-NSummarizationAccuracyConfig
、以下を渡します。
-
のタイプを指定します。 ROUGE
の評価に使用するメトリクス rouge_type
。rouge1
、rouge2
またはrougeL
を選択できます。これらのメトリクスは、生成された概要をリファレンス概要と比較します。ROUGE-1 は、生成された概要と参照概要を重複するユニグラム (「the」、「is」などの 1 つの項目のシーケンス) を使用して比較します。ROUGE-2 は、生成された概要と参照概要をビッグラム (「大きな」、「ホームである」などの 2 つのシーケンスのグループ) を使用して比較します。ROUGE-L は、一致する単語の最長シーケンスを比較します。の詳細については、「」を参照してください。ROUGE、「」を参照してください。 ROUGE: 概要の自動評価パッケージ。 -
use_stemmer_for_rouge
をTrue
またはFalse
に設定します。ステムマーは、比較する前に単語からアタッチを削除します。例えば、ステムマーは、スイミングとスワムの両方がステム後にスイミングされるように、アタッチを「スイミング」と「スワム」から削除します。 -
model_type_for_bertscore を、 の計算に使用するモデルに設定します。 BERTScore
。 ROBERTA_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_strategy
。micro
、、macro
、samples
weighted
、または を選択できます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_type
がButterfinger
である場合にのみ使用されます。デフォルト:0.1
。 -
random_uppercase_corrupt_proportion
– 大文字に変更する文字の割合。perturbation_type
がRandomUpperCase
である場合にのみ使用されます。デフォルト:0.1
。 -
whitespace_add_prob
– 空白がある場合、サンプルから削除される確率。perturbation_type
がWhitespaceAddRemove
である場合にのみ使用されます。デフォルト:0.05
。 -
whitespace_remove_prob
– ホワイト以外のスペースがあると、その前に空白を追加する確率。perturbation_type
がWhitespaceAddRemove
である場合にのみ使用されます。デフォルト: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-NSummarizationAccuracySemanticRobustnessConfig
をインスタンス化し、 を渡しますperturbation_type
。
には、次のいずれかを選択できますperturbation_type
。
-
Butterfinger
– キーボードの距離に基づいて文字スワップを使用してスペルミスを模倣する摂動。特定の文字が混乱する確率を入力します。Butterfinger
は のデフォルト値ですperturbation_type
。 -
RandomUpperCase
– 文字の一部を大文字に変更する摂動。から0
までの 10 進数を入力します1
。 -
WhitespaceAddRemove
– 空白文字が非ホワイトスペース文字の前に追加される確率をホワイトに入力します。
次のパラメータを指定することもできます。
-
num_perturbations
– 生成されたテキストに導入する各サンプルの摂動の数。デフォルトは5
です。 -
butter_finger_perturbation_prob
– 文字が混乱する確率。perturbation_type
がButterfinger
である場合にのみ使用されます。デフォルトは0.1
です。 -
random_uppercase_corrupt_proportion
– 大文字に変更する文字の割合。perturbation_type
がRandomUpperCase
である場合にのみ使用されます。デフォルトは0.1
です。 -
whitespace_add_prob
– 空白がある場合、サンプルから削除される確率。perturbation_type
がWhitespaceAddRemove
である場合にのみ使用されます。デフォルトは0.05
です。 -
whitespace_remove_prob
– ホワイト以外のスペースがあると、その前に空白を追加する確率。perturbation_type
が の場合にのみ使用されます。WhitespaceAddRemove
デフォルトは です0.1
。 -
rouge_type
– 生成された概要と参照概要を比較するメトリクス。のタイプを指定します。 ROUGEの評価に使用するメトリクス rouge_type
。rouge1
、rouge2
またはrougeL
を選択できます。ROUGE-1 は、生成された概要と参照概要を重複するユニグラム (「the」、「is」などの 1 つの項目のシーケンス) を使用して比較します。ROUGE-2 は、生成された概要と参照概要をビッグラム (「大きな」、「ホームである」などの 2 つのシーケンスのグループ) を使用して比較します。ROUGE-L は、一致する単語の最長シーケンスを比較します。の詳細については、「」を参照してください。ROUGE、「」を参照してください。 ROUGE: サマリーの自動評価パッケージ。 -
user_stemmer_for_rouge
をTrue
またはFalse
に設定します。ステムマーは、比較する前に単語からアタッチを削除します。例えば、ステムマーは、スイミングとスワムの両方がステム後にスイミングされるように、アタッチを「スイミング」と「スワム」から削除します。 -
の計算に使用するモデル
model_type_for_bertscore
に設定する BERTScore。 ROBERTA_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)