创建和启动人工循环 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建和启动人工循环

人工循环 启动人工审核工作流,并将数据审核任务发送给工作人员。当您使用 Amazon A2I 内置任务类型之一时,相应的Amazon服务会在满足流程定义中指定的条件时代表您创建并启动人为循环。如果您的流程定义中未指定任何条件,则会为每个对象创建人为循环。使用 Amazon A2I 执行自定义任务时,当您的应用程序调用时,会启动人为循环StartHumanLoop

按照以下说明使用Amazon Rekognition 或 Amazon Textract 内置任务类型和自定义任务类型配置人工循环。

先决条件

要创建和启动人为循环,您必须将AmazonAugmentedAIFullAccess策略附加到配置或启动人为循环的Amazon Identity and Access Management (IAM) 用户或角色。这是您用来HumanLoopConfig为内置任务类型配置人机循环的身份。对于自定义任务类型,这是您用来调用的身份StartHumanLoop

此外,在使用内置任务类型时,您的用户或角色必须有权调用与您的任务类型关联的Amazon服务的 API 操作。例如,如果您将 Amazon Rekognition 与Augmented AI 配合使用,则必须附加呼叫所需的权限DetectModerationLabels。有关可用于授予这些权限的基于身份的策略的示例,请参阅 Amazon Rekognition 基于身份的策略示例Amazon Textract 基于身份的策略示例。您也可以使用更通用的策略AmazonAugmentedAIIntegratedAPIAccess来授予这些权限。有关更多信息,请参阅创建有权调用亚马逊 A2I、亚马逊 Textract 和Amazon Rekognition API 操作的用户

要创建和启动人为循环,您需要流程定义 ARN。要了解如何创建流定义(或人工审核工作流),请参阅创建人工审核工作流程

重要

Amazon A2I 要求所有包含人为循环输入图像数据的 S3 存储桶附加 CORS 策略。要了解有关此项变更的更多信息,请参阅CORS 权限要求

为内置任务类型创建和启动人工循环

要使用内置任务类型启动人为循环,请使用相应服务的 API 来提供您的输入数据并配置人为循环。对于Amazon Textract ract,您可以使用AnalyzeDocument API 操作。对于Amazon Rekognition,您可以使用DetectModerationLabels API 操作。您可以使用Amazon CLI或特定语言的 SDK 使用这些 API 操作创建请求。

重要

使用内置任务类型创建人为循环时,可以使用DataAttributes来指定一组与提供给StartHumanLoop操作的输入ContentClassifiers相关的。使用内容分类器声明您的内容不包含个人身份信息或成人内容。

要使用 Amazon Mechanical Turk,请确保您的数据不包含个人身份信息,包括 HIPAA 下受保护的健康信息。包括FreeOfPersonallyIdentifiableInformation内容分类器。如果你不使用这个内容分类器,就 SageMaker 不会将你的任务发送给 Mechanical Turk。如果您的数据不包含成人内容,还应包括'FreeOfAdultContent'分类器。如果您不使用这些内容分类器, SageMaker 可能会限制 Mechanical Turk 工作人员查看您的任务。

在您使用内置任务类型的Amazon服务 API 启动 ML 作业后,Amazon A2I 会监控该服务的推断结果。例如,在使用 Amazon Rekognition 运行任务时,Amazon A2I 会检查每张图片的推理置信度分数,并将其与流程定义中指定的置信度阈值进行比较。如果满足启动人工审核任务的条件,或者如果您未在流定义中指定条件,则人工审核任务将发送到工作人员。

创建 Amazon Textract

亚马逊 A2I 与Amazon Textract t 集成,因此您可以使用Amazon Textract t API 配置和启动人为循环。要将文档文件发送到Amazon Textract t 进行文档分析,您可以使用Amazon Textrac AnalyzeDocumentt API 操作。要向此文档分析作业添加人工循环,必须配置参数HumanLoopConfig

当您配置人为循环时,您在 of 中FlowDefinitionArn指定的流定义HumanLoopConfig必须与Document参数中标识Bucket的存储段位于同一Amazon区域。

下表显示了如何将此操作与Amazon CLI和一起使用的示例Amazon SDK for Python (Boto3)。

Amazon SDK for Python (Boto3)

以下请求示例使用SDK for Python (Boto3)。有关更多信息,请参阅 Python Amazon开发工具包 (Boto) API 参考中的 an alyze_ document

import boto3 textract = boto3.client('textract', aws_region) response = textract.analyze_document( Document={'S3Object': {'Bucket': bucket_name, 'Name': document_name}}, FeatureTypes=["TABLES", "FORMS"], HumanLoopConfig={ 'FlowDefinitionArn': 'arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name', 'HumanLoopName': 'human_loop_name', 'DataAttributes': {'ContentClassifiers': ['FreeOfPersonallyIdentifiableInformation','FreeOfAdultContent']} } )
Amazon CLI

以下请求示例使用 Amazon CLI。有关更多信息,请参阅《Amazon CLI命令参考》中的 analyze- document。

$ aws textract analyze-document \ --document '{"S3Object":{"Bucket":"bucket_name","Name":"document_name"}}' \ --human-loop-config HumanLoopName="human_loop_name",FlowDefinitionArn="arn:aws:sagemaker:aws-region:aws_account_number:flow-definition/flow_def_name",DataAttributes='{ContentClassifiers=["FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent"]}' \ --feature-types '["TABLES", "FORMS"]'
$ aws textract analyze-document \ --document '{"S3Object":{"Bucket":"bucket_name","Name":"document_name"}}' \ --human-loop-config \ '{"HumanLoopName":"human_loop_name","FlowDefinitionArn":"arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name","DataAttributes": {"ContentClassifiers":["FreeOfPersonallyIdentifiableInformation","FreeOfAdultContent"]}}' \ --feature-types '["TABLES", "FORMS"]'

在配置了人AnalyzeDocument为循环的情况下运行后,Amazon A2I 会监控来自的结果,AnalyzeDocument并根据流程定义的激活条件进行检查。如果一个或多个键值对的 Amazon Textract 推理置信度分数符合审查条件,Amazon A2I 将启动人工审核循环并将该HumanLoopActivationOutput对象包含在AnalyzeDocument响应中。

创建Amazon Rekognition 人机循环

亚马逊 A2I 与 Amazon Rekognition 集成在一起,因此您可以使用 Amazon Rekognition API 配置和启动人为循环。要将图片发送到Amazon Rekognition 进行内容审核,您可以使用Amazon Rekognition DetectModerationLabelsAPI 操作。要配置人工循环,请在配置 DetectModerationLabels 时设置 HumanLoopConfig 参数。

当您配置人为循环时,您在FlowDefinitionArn的中指定的流定义HumanLoopConfig必须与Image参数中标识的 S3 存储桶位于同一Amazon区域。Bucket

下表显示了如何将此操作与Amazon CLI和一起使用的示例Amazon SDK for Python (Boto3)。

Amazon SDK for Python (Boto3)

以下请求示例使用SDK for Python (Boto3)。有关更多信息,请参阅 Py thonAmazon 开发工具包 (Boto) API 参考中的 detect_moder ation_labels

import boto3 rekognition = boto3.client("rekognition", aws_region) response = rekognition.detect_moderation_labels( \ Image={'S3Object': {'Bucket': bucket_name, 'Name': image_name}}, \ HumanLoopConfig={ \ 'HumanLoopName': 'human_loop_name', \ 'FlowDefinitionArn': , "arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name" \ 'DataAttributes': {'ContentClassifiers': ['FreeOfPersonallyIdentifiableInformation','FreeOfAdultContent']} })
Amazon CLI

以下请求示例使用 Amazon CLI。有关更多信息,请参见detect-moderation-labelsAmazon CLI命令参考中的

$ aws rekognition detect-moderation-labels \ --image "S3Object={Bucket='bucket_name',Name='image_name'}" \ --human-loop-config HumanLoopName="human_loop_name",FlowDefinitionArn="arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name",DataAttributes='{ContentClassifiers=["FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent"]}'
$ aws rekognition detect-moderation-labels \ --image "S3Object={Bucket='bucket_name',Name='image_name'}" \ --human-loop-config \ '{"HumanLoopName": "human_loop_name", "FlowDefinitionArn": "arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name", "DataAttributes": {"ContentClassifiers": ["FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent"]}}'

在配置了人DetectModerationLabels为循环的情况下运行后,Amazon A2I 会监控来自的结果,DetectModerationLabels并根据流程定义的激活条件进行检查。如果图片的 Amazon Rekognition 推理置信度分数符合审核条件,Amazon A2I 将启动人工审核循环并在回复HumanLoopActivationOutput中包含DetectModerationLabels响应元素。

为自定义任务类型创建和启动人工循环

要为自定义人工审核任务配置人工循环,请在应用程序中使用 StartHumanLoop 操作。此部分提供了一个使用 Amazon SDK for Python (Boto3) 和 Amazon Command Line Interface (Amazon CLI) 的人工循环请求的示例。有关支持StartHumanLoop的其他特定语言的软件开发工具包的文档,请使用 Amazon Augented AI Runtime API 文档中的 “另请参阅” 部分。StartHumanLoop请参阅演示如何在自定义任务类型中使用 Amazon A2I 的示例。使用 Amazon A2I 使用案例和示例

先决条件

要完成此过程,您需要:

  • 格式化为 JSON 格式文件的字符串表示的输入数据

  • 流定义的 Amazon 资源名称 (ARN)

配置人工循环
  1. 对于 DataAttributes,指定一组与提供给 StartHumanLoop 操作的输入相关的 ContentClassifiers。使用内容分类器声明您的内容不包含个人身份信息或成人内容。

    要使用 Amazon Mechanical Turk,请确保您的数据不包含个人身份信息,包括 HIPAA 下受保护的健康信息,并包含FreeOfPersonallyIdentifiableInformation内容分类器。如果你不使用这个内容分类器,就 SageMaker 不会将你的任务发送给 Mechanical Turk。如果您的数据不包含成人内容,还应包括'FreeOfAdultContent'分类器。如果您不使用这些内容分类器, SageMaker 可能会限制 Mechanical Turk 工作人员查看您的任务。

  2. 对于 FlowDefinitionArn,输入流定义的 Amazon 资源名称 (ARN)。

  3. 对于 HumanLoopInput,以 JSON 格式文件的字符串表示形式输入您的输入数据。构建输入数据和自定义工作人员任务模板,以便在您启动人工循环时,向工作人员正确显示输入数据。请参阅预览工作人员任务模板以了解如何预览您的自定义工作任务模板。

  4. 对于 HumanLoopName,输入人工循环的名称。此名称在账户的一个区域内必须是唯一的。有效字符包括 a-z、-(连字符)(连字符)(连字符)。

启动人工循环
  • 要开始人工循环,请使用您的首选语言专用 SDK 提交与以下示例类似的请求。

Amazon SDK for Python (Boto3)

以下请求示例使用SDK for Python (Boto3)。有关更多信息,请参阅 PythonAmazon 开发工具包 (Boto) API 参考中的 Boto 3 Augmented AI 运行时

import boto3 a2i_runtime_client = boto3.client('sagemaker-a2i-runtime') response = a2i_runtime_client.start_human_loop( HumanLoopName='human_loop_name', FlowDefinitionArn='arn:aws:sagemaker:aws-region:xyz:flow-definition/flow_def_name', HumanLoopInput={ 'InputContent': '{"InputContent": {\"prompt\":\"What is the answer?\"}}' }, DataAttributes={ 'ContentClassifiers': [ 'FreeOfPersonallyIdentifiableInformation'|'FreeOfAdultContent', ] } )
Amazon CLI

以下请求示例使用 Amazon CLI。有关更多信息,请参见start-human-loopAmazon CLI命令参考中的

$ aws sagemaker-a2i-runtime start-human-loop --flow-definition-arn 'arn:aws:sagemaker:aws_region:xyz:flow-definition/flow_def_name' \ --human-loop-name 'human_loop_name' \ --human-loop-input '{"InputContent": "{\"prompt\":\"What is the answer?\"}"}' \ --data-attributes ContentClassifiers="FreeOfPersonallyIdentifiableInformation","FreeOfAdultContent" \

当你通过StartHumanLoop直接调用成功启动人为循环时,响应包括一个HumanLoopARN和一个设置为的HumanLoopActivationResults对象NULL。您可以使用此人工循环名称来监控和管理您的人工循环。

后续步骤:

启动人为循环后,您可以使用亚马逊Augmented AI 运行时 API 和 Amazon Ev CloudWatch ents 对其进行管理和监控。要了解更多信息,请参阅“监控和管理您的人工循环”。