Amazon Bedrock でモデル評価ジョブを作成する - Amazon Bedrock

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

Amazon Bedrock でモデル評価ジョブを作成する

モデル評価ジョブは、 AWS Management Console、 AWS CLI、またはサポートされている を使用して作成できます AWS SDK。評価用のメトリクスを生成する自動モデル評価ジョブを作成できます。また、人間ベースのモデル評価ジョブを作成して、人間のワーカーのチームを活用して評価のための入力を評価および提供することもできます。

次の例は、Amazon Bedrock コンソール、 AWS CLI SDK for Python を使用して自動および人間ベースのモデル評価ジョブを作成する方法を示しています。

Amazon Bedrock コンソールを使用したモデル評価ジョブの結果の表示

モデル評価ジョブが完了すると、結果は指定した Amazon S3 バケットに保存されます。結果の場所を何らかの方法で変更すると、モデル評価レポートカードはコンソールに表示されなくなります。

自動モデル評価ジョブ

すべての自動モデル評価ジョブでは、IAMサービスロールを作成する必要があります。モデル評価ジョブの設定IAM要件の詳細については、「」を参照してくださいモデル評価ジョブのサービスロール要件

次の例は、自動モデル評価ジョブを作成する方法を示しています。ではAPI、 modelIdentifier フィールドに推論プロファイルを指定することで、ジョブに推論プロファイルを含めることもできます。 ARN

Amazon Bedrock console

Amazon Bedrock コンソールを使用してモデル評価ジョブを作成するには、次の手順に従います。この手順を正常に完了するには、IAMユーザー、グループ、またはロールにコンソールにアクセスするための十分なアクセス許可があることを確認してください。詳細については、「Amazon Bedrock コンソールを使用したモデル評価に必要なアクセス許可」を参照してください。

また、モデル評価ジョブで指定するカスタムプロンプトデータセットには、Amazon S3 バケットに必要なCORSアクセス許可を追加する必要があります。必要なCORSアクセス許可の追加の詳細については、「」を参照してくださいS3 バケットで必要なクロスオリジンリソース共有 (CORS) アクセス許可

自動モデル評価ジョブを作成するには
  1. Amazon Bedrock コンソールを開きます。 https://console.aws.amazon.com/bedrock/

  2. ナビゲーションペインで、[モデル評価] を選択します。

  3. [評価を構築] カードの [自動] で、[自動評価を作成] を選択します。

  4. [自動評価を作成] ページに次の情報を入力します。

    1. 評価名 — モデル評価ジョブを説明する名前を付けます。この名前はモデル評価ジョブリストに表示されます。この名前は、 AWS リージョンのアカウントで一意である必要があります。

    2. 説明 (オプション) — オプションで説明を入力します。

    3. モデル — モデル評価ジョブで使用するモデルを選択します。

      利用可能なモデルと Amazon Bedrock でそれらにアクセスする方法の詳細については、「」を参照してくださいAmazon Bedrock 基盤モデルにアクセスする

    4. (オプション) 推論設定を変更するには、[更新] を選択します。

      推論設定を変更すると、選択したモデルによって生成されるレスポンスが変わります。使用可能な推論パラメータの詳細については、「基盤モデルの推論リクエストパラメータとレスポンスフィールド」を参照してください。

    5. タスクタイプ — モデル評価ジョブ中にモデルに実行させるタスクタイプを選択します。

    6. メトリクスとデータセット — 使用可能なメトリクスと組み込みのプロンプトデータセットのリストは、選択したタスクに応じて変わります。[使用可能な組み込みデータセット] のリストから選択することも、[独自のプロンプトデータセットを使用] を選択することもできます。独自のプロンプトデータセットを使用する場合は、URIプロンプトデータセットファイルの正確な S3 を入力するか、Browse S3 を選択してプロンプトデータセットを検索します。

    7. >評価結果 — 結果を保存するディレクトリURIの S3 を指定します。Amazon S3 で場所を検索するには、Browse Amazon S3を選択します。

    8. (オプション) カスタマーマネージドキーの使用を有効にするには、暗号化設定をカスタマイズ (アドバンスド) を選択します。次に、使用する AWS KMS キーARNの を指定します。

    9. Amazon Bedrock IAMロール — 既存のロールを使用して、必要なアクセス許可が既にあるIAMサービスロールを使用するか、新しいロールを作成を選択して新しいIAMサービスロールを作成します。

  5. 続いて、[作成] を選択します。

ステータスが完了 に変わったら、ジョブのレポートカードを表示できます。

SDK for Python

次の例では、 を使用して自動評価ジョブを作成します。Python.

import boto3 client = boto3.client('bedrock') job_request = client.create_evaluation_job( jobName="api-auto-job-titan", jobDescription="two different task types", roleArn="arn:aws:iam::111122223333:role/role-name", inferenceConfig={ "models": [ { "bedrockModel": { "modelIdentifier":"arn:aws:bedrock:us-west-2::foundation-model/amazon.titan-text-lite-v1", "inferenceParams":"{\"temperature\":\"0.0\", \"topP\":\"1\", \"maxTokenCount\":\"512\"}" } } ] }, outputDataConfig={ "s3Uri":"s3://model-evaluations/outputs/" }, evaluationConfig={ "automated": { "datasetMetricConfigs": [ { "taskType": "QuestionAndAnswer", "dataset": { "name": "Builtin.BoolQ" }, "metricNames": [ "Builtin.Accuracy", "Builtin.Robustness" ] } ] } } ) print(job_request)
AWS CLI

では AWS CLI、 help コマンドを使用して、 create-evaluation-jobで を指定するときに必要なパラメータとオプションであるパラメータを確認できます AWS CLI。

aws bedrock create-evaluation-job help
aws bedrock create-evaluation-job \ --job-name 'automatic-eval-job-cli-001' \ --role-arn 'arn:aws:iam::111122223333:role/role-name' \ --evaluation-config '{"automated": {"datasetMetricConfigs": [{"taskType": "QuestionAndAnswer","dataset": {"name": "Builtin.BoolQ"},"metricNames": ["Builtin.Accuracy","Builtin.Robustness"]}]}}' \ --inference-config '{"models": [{"bedrockModel": {"modelIdentifier":"arn:aws:bedrock:us-west-2::foundation-model/amazon.titan-text-lite-v1","inferenceParams":"{\"temperature\":\"0.0\", \"topP\":\"1\", \"maxTokenCount\":\"512\"}"}}]}' \ --output-data-config '{"s3Uri":"s3://automatic-eval-jobs/outputs"}'

人間ベースのモデル評価ジョブ

次の例は、ヒューマンワーカーを使用するモデル評価ジョブを作成する方法を示しています。ではAPI、 modelIdentifier フィールドに推論プロファイルを指定することで、ジョブARNに推論プロファイルを含めることもできます。

コンソール

ヒューマンワーカーによるモデル評価ジョブを作成するには
  1. Amazon Bedrock コンソールを開く: https://console.aws.amazon.com/bedrock/home

  2. ナビゲーションペインで、[モデル評価] を選択します。

  3. 「評価カードの構築」の「人間: 自分のチームを持ち込む」で「人間ベースの評価の作成」を選択します

  4. [ジョブの詳細の指定] ページに次の情報を入力します。

    1. 評価名 — モデル評価ジョブを説明する名前を付けます。この名前はモデル評価ジョブリストに表示されます。この名前は、 AWS リージョンのアカウントで一意である必要があります。

    2. 説明 (オプション) — オプションで説明を入力します。

  5. [次へ] を選択します。

  6. [評価を設定] ページに次の情報を入力します。

    1. モデル — モデル評価ジョブで使用するモデルを最大 2 つまで選択できます。

      Amazon Bedrock で使用可能なモデルの詳細については、「Amazon Bedrock 基盤モデルにアクセスする」を参照してください。

    2. (オプション) 選択したモデルの推論設定を変更するには、更新 を選択します。

      推論設定を変更すると、選択したモデルによって生成されるレスポンスが変わります。使用可能な推論パラメータの詳細については、「基盤モデルの推論リクエストパラメータとレスポンスフィールド」を参照してください。

    3. タスクタイプ — モデル評価ジョブ中にモデルに実行させるタスクタイプを選択します。モデルに関するすべての指示をプロンプト自体に含める必要があります。タスクタイプはモデルのレスポンスを制御しません。

    4. 評価メトリクス — 推奨メトリクスのリストは、選択したタスクによって変わります。推奨メトリクスごとに、[評価方法] を選択する必要があります。モデル評価ジョブあたりの最大評価メトリクス数は 10 個です。

    5. (オプション) メトリクスを追加するメトリクスの追加を選択します。[メトリクス][説明][評価方法] を定義する必要があります。

    6. データセットカードでは、以下を指定する必要があります。

      1. プロンプトデータセットを選択する – URIプロンプトデータセットファイルの S3 を指定するか、Browse S3 を選択して使用可能な S3 バケットを表示します。カスタムプロンプトデータセットには、最大 1000 個のプロンプトを含めることができます。

      2. 評価結果の送信先 – モデル評価ジョブの結果を保存するディレクトリURIの S3 を指定するか、Browse S3 を選択して使用可能な S3 バケットを表示する必要があります。

    7. (オプション) AWS KMS キー – モデル評価ジョブの暗号化に使用するカスタマーマネージドキーARNの を指定します。

    8. Amazon Bedrock IAMロール – アクセス許可カードでは、以下を実行する必要があります。モデル評価に必要なアクセス許可の詳細については、「Amazon Bedrock でのモデル評価に必要なアクセス許可とIAMサービスロール」を参照してください。

      1. 既存の Amazon Bedrock サービスロールを使用するには、既存のロールを使用する を選択します。それ以外の場合は、新しいロールの作成を使用して、新しいIAMサービスロールの詳細を指定します。

      2. サービスロール名 で、IAMサービスロールの名前を指定します。

      3. 準備ができたら、ロールの作成を選択して新しいIAMサービスロールを作成します。

  7. [次へ] を選択します。

  8. [アクセス許可] カードで、以下を指定します。モデル評価に必要なアクセス許可の詳細については、「Amazon Bedrock でのモデル評価に必要なアクセス許可とIAMサービスロール」を参照してください。

  9. ヒューマンワークフローIAMロール – 必要なアクセス許可を持つサービスロールを指定します SageMaker。

  10. [作業チーム] カードで、以下を指定します。

    ヒューマンワーカーの通知要件

    モデル評価ジョブに新しいヒューマンワーカーを追加すると、モデル評価ジョブへの参加を勧めるメールがヒューマンワーカーに自動的に送信されます。既存のヒューマンワーカーをモデル評価ジョブに追加するときは、モデル評価ジョブURLのワーカーポータルを通知して提供する必要があります。既存のワーカーには、新しいモデル評価ジョブに追加されたことを知らせる自動Eメール通知は送信されません。

    1. [チームを選択] ドロップダウンで、[新しい作業チームを作成] を選択するか、既存の作業チーム名を指定します。

    2. (オプション) [プロンプト別ワーカー数] — 各プロンプトを評価するワーカーの数を更新します。選択したワーカー数による各プロンプトのレスポンスのレビューが完了すると、プロンプトとそのレスポンスは作業チームから配布されなくなります。最終結果レポートには、すべてのワーカーの評価が含まれます。

    3. (オプション) 既存のワーカー E メール – ワーカーポータル を含む E メールテンプレートをコピーするには、これを選択しますURL。

    4. (オプション) 新しいワーカーの E メール — 新しいワーカーに自動的に送信される E メールを表示します。

      重要

      大規模言語モデルでは、ハルシネーションが起きたり、有害または攻撃的なコンテンツが作成されたりすることが知られています。この評価では、ワーカーに有害または攻撃的な内容が表示されることがあります。評価を始める前に、適切な措置を講じてトレーニングを行い、その旨を通知します。評価中は、人間による評価ツールにアクセスしている間、タスクを辞退してタスクをリリースすることや休憩を取ることもできます。

  11. [次へ] を選択します。

  12. [指示を入力] ページに、テキストエディタを使用して、タスクを完了するための指示を入力します。作業チームがレスポンスを評価するために使用する評価 UI (メトリクス、評価方法、指示など) をプレビューできます。このプレビューは、このジョブ用に作成した設定に基づいています。

  13. [次へ] を選択します。

  14. [確認して作成] ページでは、前の手順で選択したオプションの概要を確認できます。

  15. モデル評価ジョブを開始するには、[作成] を選択します。

    注記

    ジョブが正常に開始されると、ステータスが [進行中] に変わります。ジョブが終了すると、ステータスが [完了] に変わります。モデル評価ジョブがまだ進行中である間、すべてのモデルのレスポンスが作業チームによって評価される前に、ジョブを停止することを選択できます。これを行うには、モデル評価ランディングページで評価を停止を選択します。これにより、モデル評価ジョブのステータス停止 に変更されます。モデル評価ジョブが正常に停止したら、モデル評価ジョブを削除できます。

API および AWS CLI

Amazon Bedrock コンソールの外部で人間ベースのモデル評価ジョブを作成する場合は、Amazon SageMaker フロー定義 を作成する必要がありますARN。

フロー定義ARNは、モデル評価ジョブのワークフローが定義される場所です。フロー定義は、タスクに割り当てるワーカーインターフェイスと作業チームを定義し、Amazon Bedrock に接続するために使用されます。

Amazon Bedrock APIオペレーションを使用して開始されたモデル評価ジョブでは、 AWS CLI またはサポートされている ARNを使用してフロー定義を作成する必要があります AWS SDK。フロー定義の仕組みとプログラムによる作成の詳細については、「 SageMaker デベロッパーガイド」の「人間によるレビューワークフローの作成 (API)」を参照してください。

ではCreateFlowDefinition、 への入力AWS/Bedrock/Evaluationとして を指定する必要がありますAwsManagedHumanLoopRequestSource。Amazon Bedrock サービスロールには、フロー定義の出力バケットにアクセスするためのアクセス許可も必要です。

以下は、 AWS CLIを使ったリクエストの例です。リクエストでは、 HumanTaskUiArnは SageMaker 所有の ですARN。ではARN、 のみ変更できます AWS リージョン。

aws sagemaker create-flow-definition --cli-input-json ' { "FlowDefinitionName": "human-evaluation-task01", "HumanLoopRequestSource": { "AwsManagedHumanLoopRequestSource": "AWS/Bedrock/Evaluation" }, "HumanLoopConfig": { "WorkteamArn": "arn:aws:sagemaker:AWS リージョン:111122223333:workteam/private-crowd/my-workteam", ## The Task UI ARN is provided by the service team, you can only modify the AWS Region. "HumanTaskUiArn":"arn:aws:sagemaker:AWS Region:394669845002:human-task-ui/Evaluation" "TaskTitle": "Human review tasks", "TaskDescription": "Provide a real good answer", "TaskCount": 1, "TaskAvailabilityLifetimeInSeconds": 864000, "TaskTimeLimitInSeconds": 3600, "TaskKeywords": [ "foo" ] }, "OutputConfig": { "S3OutputPath": "s3://your-output-bucket" }, "RoleArn": "arn:aws:iam::111122223333:role/SageMakerCustomerRoleArn" }'

フロー定義 を作成したらARN、次の例を使用して、 AWS CLI またはサポートされている を使用して人間ベースのモデル評価ジョブを作成します AWS SDK。

SDK for Python

次のコード例は、 SDK SDK for for Python を使用してヒューマンワーカーを使用するモデル評価ジョブを作成する方法を示しています。

import boto3 client = boto3.client('bedrock') job_request = client.create_evaluation_job( jobName="111122223333-job-01", jobDescription="two different task types", roleArn="arn:aws:iam::111122223333:role/example-human-eval-api-role", inferenceConfig={ ## You must specify and array of models "models": [ { "bedrockModel": { "modelIdentifier":"arn:aws:bedrock:us-west-2::foundation-model/amazon.titan-text-lite-v1", "inferenceParams":"{\"temperature\":\"0.0\", \"topP\":\"1\", \"maxTokenCount\":\"512\"}" } }, { "bedrockModel": { "modelIdentifier": "anthropic.claude-v2", "inferenceParams": "{\"temperature\":\"0.25\",\"top_p\":\"0.25\",\"max_tokens_to_sample\":\"256\",\"top_k\":\"1\"}" } } ] }, outputDataConfig={ "s3Uri":"s3://job-bucket/outputs/" }, evaluationConfig={ "human": { "humanWorkflowConfig": { "flowDefinitionArn": "arn:aws:sagemaker:us-west-2:111122223333:flow-definition/example-workflow-arn", "instructions": "some human eval instruction" }, "customMetrics": [ { "name": "IndividualLikertScale", "description": "testing", "ratingMethod": "IndividualLikertScale" } ], "datasetMetricConfigs": [ { "taskType": "Summarization", "dataset": { "name": "Custom_Dataset1", "datasetLocation": { "s3Uri": "s3://job-bucket/custom-datasets/custom-trex.jsonl" } }, "metricNames": [ "IndividualLikertScale" ] } ] } } ) print(job_request)