在 Amazon Bedrock 中创建模型评估任务 - Amazon Bedrock

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

在 Amazon Bedrock 中创建模型评估任务

您可以使用 AWS Management Console AWS CLI、或支持的创建模型评估作业 AWS SDK。您可以创建自动模型评估作业,生成评估指标。您还可以创建基于人工的模型评估作业,利用人工团队对评估进行评分并提供他们的意见。

以下示例向您展示了如何使用适用于 SDK Python 的 Amazon Bedrock 控制台创建基于人工的自动模型评估作业。 AWS CLI

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

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

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

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

  5. 然后选择 Create

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

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/

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

  3. 在 “构建评估卡” 中,在 “人类:带上自己的队伍” 下,选择 “创建基于人类的评估”。

  4. 指定作业详细信息页面上,提供以下信息:

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

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

  5. 然后选择下一步

  6. 设置评估页面上,提供以下信息:

    1. 模型 – 最多可以选择两个要在模型评估作业中使用的模型。

      要了解有关 Amazon Bedrock 中可用模型的更多信息,请参阅 访问 Amazon Bedrock 基础模型

    2. (可选)要更改所选模型的推理配置,请选择更新

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

    3. 任务类型 – 选择您希望模型在模型评估作业期间尝试执行的任务类型。模型的所有说明都必须包含在提示中。任务类型不能控制模型的响应。

    4. 评估指标 — 推荐的指标列表会根据您选择的任务而变化。您必须为推荐的每个指标都选择一种评级方法。最多可以为每个模型评估作业设置 10 个评估指标。

    5. (可选)选择添加指标以添加指标。您必须定义指标描述评级方法

    6. 在 “数据集” 卡片中,您必须提供以下信息。

      1. 选择提示数据集-指定提示数据集文件的 S3 URI 或选择 B rowse S3 以查看可用的 S3 存储桶。自定义提示数据集中最多可以有 1000 个提示。

      2. 评估结果目的地-您必须指定要保存模型评估任务结果URI的目录的 S3,或者选择 B rowse 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。现有工作人员不会收到自动电子邮件通知,告知他们已被添加到新的模型评估作业中。

    1. 使用选择团队下拉列表,指定创建新的工作团队或现有工作团队的名称。

    2. (可选)每个提示的工作人员人数 – 更新评估每个提示的工作人员人数。您所选人数的工作人员审核完每个提示的响应之后,该提示及其响应将从工作团队负责的工作中删除。最终结果报告将包含每位工作人员的所有评级。

    3. (可选)现有工作人员电子邮件-选择此选项可复制包含工作人员门户的电子邮件模板URL。

    4. (可选)新工作人员电子邮件 – 选择此选项可查看新员工自动收到的电子邮件。

      重要

      众所周知,大型语言模型偶尔会出错,生成令人反感或不适的内容。在此评估期间,工作人员可能会看到令人反感或不适的材料。在他们开始评估工作之前,请务必采取适当的措施,为其提供培训并发送通知。他们可以拒绝和放弃任务,也可以在使用人工评估工具进行评估期间稍事休息。

  11. 然后选择下一步

  12. 提供说明页面上,使用文本编辑器提供完成任务的说明。可以预览工作团队用来评估响应的评估 UI,包括指标、评级方法和您提供的说明。预览结果取决于您为该作业创建的配置。

  13. 然后选择下一步

  14. 审核并创建页面上,可以查看您在之前步骤中选择的选项摘要。

  15. 要启动模型评估作业,请选择创建

    注意

    作业成功启动后,状态将变为进行中。作业完成后,状态将变为已完成。当模型评估任务仍在进行时,您可以选择在工作团队评估所有模型的响应之前停止该作业。为此,请在模型评估登录页面上选择停止评估。这会将模型评估任务的状态更改为 “正在停止”。成功停止模型评估作业后,您可以删除模型评估作业。

API和 AWS CLI

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

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

对于使用 Amazon Bedrock API 操作开始的模型评估任务,您必须ARN使用 AWS CLI 或支持的 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

以下代码示例向您展示了如何通过 for for Python 创建使用人工SDKSDK的模型评估作业。

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)