创建模型评估作业 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建模型评估作业

以下示例向您展示了如何使用 Amazon Bedrock 控制台、 AWS CLI适用于 Python 的软件开发工具包创建模型评估作业

自动模型评估作业

以下示例演示如何创建自动模型评估作业。所有自动模型评估任务都需要您创建 IAM 服务角色。要了解有关设置模型评估任务的 IAM 要求的更多信息,请参阅模型评估作业的服务角色要求

Amazon Bedrock console

使用以下步骤使用 Amazon Bedrock 控制台创建模型评估任务。要成功完成此过程,请确保您的 IAM 用户、群组或角色具有访问控制台的足够权限。要了解更多信息,请参阅使用 Amazon Bedrock 控制台创建模型评估作业所需的权限

此外,您要在模型评估任务中指定的任何自定义提示数据集都必须将所需的 CORS 权限添加到 Amazon S3 存储桶。要了解有关添加所需的 CORS 权限的更多信息,对 S3 存储桶的必要跨源资源共享 (CORS) 权限请参阅。

创建自动模型评估作业
  1. 通过以下网址打开 Amazon Bedrock 控制台:https://console.aws.amazon.com/bedrock/

  2. 在导航窗格中,选择模型评估

  3. 建立评估卡的自动下,选择创建自动评估

  4. 创建自动评估页面上,提供以下信息:

    1. 评估名称 — 为模型评估作业指定一个可描述该作业的名称。此名称将显示在模型评估作业列表中。在您的 AWS 账户 名称中,名称必须是唯一的 AWS 区域。

    2. 描述(可选)— 提供可选描述。

    3. 模型 — 选择要在模型评估作业中使用的模型。

      要详细了解可用模型并在 Amazon Bedrock 中访问它们,请参阅管理对 Amazon Bedrock 基础模型的访问权限

    4. (可选)要更改推理配置,请选择更新

      更改推理配置会更改所选模型生成的响应。要了解有关可用推理参数的更多信息,请参阅 根基模型的推理参数

    5. 任务类型 — 选择您希望模型在模型评估作业期间尝试执行的任务类型。

    6. 指标和数据集 — 可用指标列表和内置提示数据集会根据您选择的任务而变化。您可以从可用的内置数据集列表中进行选择,也可以选择使用您自己的提示数据集。如果您选择使用自己的提示数据集,请输入提示数据集文件的确切 S3 URI,或者选择 Browse S3 搜索提示数据集。

    7. >评估结果-指定要保存结果的目录的 S3 URI。选择 “浏览 S3”,在 Amazon S3 中搜索地点。

    8. (可选)要启用客户托管密钥的使用,请选择自定义加密设置(高级)。然后,提供您要使用的 AWS KMS 密钥的 ARN。

    9. A@@ mazon Bedrock IAM 角色 — 选择使用现有角色使用已具有所需权限的 IAM 服务角色,或者选择创建新角色来创建新的 IAM 服务角色,

  5. 然后选择 Create

作业启动后,状态就会改变。状态更改为 “已完成” 后,您可以查看任务的成绩单。

SDK for 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"}'

以人为本的模型评估工作

在 Amazon Bedrock 控制台之外创建基于人类的模型评估任务时,您需要创建亚马逊 SageMaker 流程定义 ARN。

流程定义 ARN 是定义模型评估任务工作流程的地方。流程定义用于定义工作人员界面和您要分配给任务的工作团队,并连接到 Amazon Bedrock。

对于在 Amazon Bedrock 中启动的模型评估任务,您必须使用 AWS CLI 或支持的软件开发工具包创建流程定义 ARN。 AWS 要详细了解流程定义的工作原理以及如何以编程方式创建它们,请参阅《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", "HumanTaskUiArn": "arn:aws:sagemaker:AWS 区域: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 后,您可以使用以下示例来创建使用人工工作人员的模型评估作业。

Amazon Bedrock console

使用以下步骤使用 Amazon Bedrock 控制台创建模型评估任务。要成功完成此过程,请确保您的 IAM 用户、群组或角色具有访问控制台的足够权限。要了解更多信息,请参阅使用 Amazon Bedrock 控制台创建模型评估作业所需的权限

此外,您要在模型评估任务中指定的任何自定义提示数据集都必须将所需的 CORS 权限添加到 Amazon S3 存储桶。要了解有关添加所需的 CORS 权限的更多信息,对 S3 存储桶的必要跨源资源共享 (CORS) 权限请参阅。

创建使用人类工作人员的模型评估作业
  1. 通过以下网址打开 Amazon Bedrock 控制台:https://console.aws.amazon.com/bedrock/

  2. 在导航窗格中,选择模型评估

  3. 建立评估卡的自动下,选择创建自动评估

  4. 创建自动评估页面上,提供以下信息:

    1. 评估名称 — 为模型评估作业指定一个可描述该作业的名称。此名称将显示在模型评估作业列表中。在您的 AWS 账户 名称中,名称必须是唯一的 AWS 区域。

    2. 描述(可选)— 提供可选描述。

    3. 模型 — 选择要在模型评估作业中使用的模型。

      要详细了解可用模型并在 Amazon Bedrock 中访问它们,请参阅管理对 Amazon Bedrock 基础模型的访问权限

    4. (可选)要更改推理配置,请选择更新

      更改推理配置会更改所选模型生成的响应。要了解有关可用推理参数的更多信息,请参阅 根基模型的推理参数

    5. 任务类型 — 选择您希望模型在模型评估作业期间尝试执行的任务类型。

    6. 指标和数据集 — 可用指标列表和内置提示数据集会根据您选择的任务而变化。您可以从可用的内置数据集列表中进行选择,也可以选择使用您自己的提示数据集。如果您选择使用自己的提示数据集,请输入提示数据集文件的确切 S3 URI,或者选择 Browse S3 搜索提示数据集。

    7. 评估结果-指定要保存模型评估任务结果的目录的 S3 URI。选择 “浏览 S3”,在 Amazon S3 中搜索地点。

    8. (可选)要启用客户托管密钥的使用,请选择自定义加密设置(高级)。然后,提供您要使用的 AWS KMS 密钥的 ARN。

    9. Amazon Bedrock IAM 角色 — 选择使用现有角色使用已具有所需权限的 IAMService 角色,或者选择创建新角色来创建新的 IAM 服务角色,

  5. 然后选择 Create

任务启动后,状态将更改为 “进行”。状态更改为 “已完成” 后,您可以查看任务的成绩单。

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