建立和啟動人工迴圈 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立和啟動人工迴圈

人工迴圈會啟動您的人工檢閱工作流程,並將資料檢閱任務傳送給人力工作者。當您使用其中一種 Amazon A2I 內建任 AWS 務類型時,當符合流程定義中指定的條件時,對應的服務會代表您建立並啟動人工迴圈。如果您的流程定義中未指定任何條件,則會為每個物件建立人工迴路。在為自訂任務使用 Amazon A2I 時,人工循環會在應用程式中呼叫 StartHumanLoop 時啟動。

使用下列指示來設定具有 Amazon Rekognition 或 Amazon Textract 內建任務類型和自訂工作類型的人工循環。

先決條件

若要建立並啟動人工迴圈,您必須將AmazonAugmentedAIFullAccess政策附加至設定或啟動人工迴圈的 AWS Identity and Access Management (IAM) 使用者或角色。這將是您用來設定將 HumanLoopConfig 用於內建任務類型的人工循環的身分。對於自訂任務類型,這將是您用來呼叫 StartHumanLoop 的身分。

此外,使用內建工作類型時,您的使用者或角色必須具有叫用與您工作類型相關聯之 AWS 服務之 API 作業的權限。例如,如果將 Amazon Rekognition 和 Augmented AI 搭配使用,您必須附加 DetectModerationLabels 所需的呼叫許可。如需您可以用來授予這些許可的以身分為基礎的政策範例,請參閱 Amazon Rekognition 以身分為基礎的政策範例Amazon Textract 以身分為基礎的政策範例。您也可以使用比較一般的政策AmazonAugmentedAIIntegratedAPIAccess,來授予這些許可。如需詳細資訊,請參閱 建立具有叫用 Amazon A2I、亞馬遜 Textract 和亞馬遜重新認知操作的許可的使用者 API

若要建立和啟動人工循環,您需要流程定義 ARN。若要了解如何建立流程定義 (或人工檢閱工作流程),請參閱 建立人工檢閱工作流程 (API)

重要

Amazon A2I 要求所有包含人工循環輸入影像資料的 S3 儲存貯體都必須附加 CORS 政策。若要進一步了解此變更,請參閱 CORS權限要求

建立並啟動內建任務類型的人工迴圈

若要使用內建任務啟動人工循環,請使用相對應服務的 API 來提供您的輸入資料,並設定人工循環。對於 Amazon Textract 取,您可以使用 AnalyzeDocument API 操作。對於 Amazon Rekognition 取,您可以使用 DetectModerationLabels API 操作。您可以使用 AWS CLI 或特定於語言的 SDK,使用這些 API 操作來建立要求。

重要

當您使用內建工作類型建立人工循環時,您可DataAttributes以使用指定與提供給StartHumanLoop作業的輸入ContentClassifiers相關的集合。使用內容分類器來宣告您的內容不含個人識別資訊或成人內容。

若要使用 Amazon Mechanical Turk,請確保您的資料不含個人可識別資訊,包括 HIPAA 受保護的健康資訊。包括FreeOfPersonallyIdentifiableInformation內容分類器。如果您不使用此內容分類器,則 SageMaker 不會將您的任務發送給 Mechanical Turk。如果您的資料不含成人內容,且包括 'FreeOfAdultContent' 分類器。如果您不使用這些內容分類器,可 SageMaker 能會限制可以檢視您工作的 Mechanical Turk 工作者。

使用內建任務類型的 AWS 服務 API 開始 ML 任務後,Amazon A2I 會監控該服務的推論結果。例如,在使用 Amazon Rekognition 執行任務時,Amazon A2I 會檢查每個影像的推論信可信度分數,並將其與流程定義中指定的可信度閾值進行比較。如果啟動人工檢閱任務的條件已滿足,或者您未在流程定義中指定條件,則人工檢閱任務會傳送給工作者。

建立 Amazon Textract 人工循環

Amazon A2I 與 Amazon Textract 整合,以便您使用 Amazon Textract API 設定並啟動人工循環。若要將文件檔案傳送至 Amazon Textract 以進行文字分析,請使用 Amazon Textract AnalyzeDocument API 操作。若要將人工循環新增至此文件分析工作,您必須設定參數HumanLoopConfig

設定人工循環時,您在其中指定的流程定FlowDefinitionArnHumanLoopConfig必須位於與Document參數中識別的值 AWS 區相同Bucket的「區域」中。

下表顯示如何將此作業與 AWS CLI 和搭配使用的範例 AWS SDK for Python (Boto3)。

AWS SDK for Python (Boto3)

以下範例會使用適用於 Python (Boto)的 SDK 開發套件。有關詳細信息,請參閱分析文檔AWS 用於 Python 的軟件開發工具包(博託)API 參考

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']} } )
AWS CLI

下列要求範例使用 AWS CLI。有關詳細信息,請參閱分析文檔AWS CLI 命令參考

$ 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 人類循環

Amazon A2I 與 Amazon Rekognition 整合,以便您使用 Amazon Rekognition API 設定並啟動人工循環。若要將影像傳送至 Amazon Rekognition 以進行內容審核,請使用 Amazon Rekognition DetectModerationLabels API 操作。若要設定人工迴圈,請在設定 DetectModerationLabels 時設定 HumanLoopConfig 參數。

設定人工循環時,您在其中指定的流程定FlowDefinitionArnHumanLoopConfig必須位於與Image參數中識別的值 AWS 區相同Bucket的「區域」中。

下表顯示如何將此作業與 AWS CLI 和搭配使用的範例 AWS SDK for Python (Boto3)。

AWS SDK for Python (Boto3)

以下請求範例使用適用於 Python 的 SDK (Boto3)。有關詳細信息,請參閱檢測-審查標籤AWS 用於 Python 的軟件開發工具包(博託)API 參考

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']} })
AWS CLI

下列要求範例使用 AWS CLI。如需詳細資訊,請參閱 AWS CLI 命令參考中的 detect-moderation-labels

$ 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 會啟動人工檢閱循環,並在 DetectModerationLabels 回應中包含回應元素 HumanLoopActivationOutput

建立和啟動自訂任務類型的人工迴圈

若要為自訂人工檢閱任務設定人工迴圈,請使用應用程式內的 StartHumanLoop 操作。本節提供使用 AWS SDK for Python (Boto3) 和 AWS Command Line Interface (AWS CLI) 的人類迴圈要求範例。如需其他支援之特定語言開發套件的文件StartHumanLoop,請參閱 Amazon Augmented AI 執行階段 API 文件StartHumanLoop中的「另請參閱」一節。請參閱使用 Amazon A2I 的使用案例和範例,查看演示如何將 Amazon A2I 用於自定義任務類型的示例。

先決條件

若要完成此程序,您需要:

  • 輸入資料格式化為 JSON 格式檔案的字串顯示方式。

  • 您流程定義的 Amazon Resource Name (ARN)

設定人工迴圈
  1. 對於 DataAttributes,指定一組與提供給 StartHumanLoop 操作的輸入有關的 ContentClassifiers。使用內容分類器來宣告您的內容不含個人識別資訊或成人內容。

    若要使用 Amazon Mechanical Turk,請確保您的資料不含個人可識別資訊,包括 HIPAA 受保護的健康資訊,並包括 FreeOfPersonallyIdentifiableInformation 內容分類器。如果您不使用此內容分類器,則 SageMaker 不會將您的任務發送給 Mechanical Turk。如果您的資料不含成人內容,且包括 'FreeOfAdultContent' 分類器。如果您不使用這些內容分類器,可 SageMaker 能會限制可以檢視您工作的 Mechanical Turk 工作者。

  2. 對於 FlowDefinitionArn,請輸入流程定義的 Amazon Resource Name (ARN)。

  3. 對於 HumanLoopInput,輸入您的輸入資料以做為 JSON 格式檔案的字串顯示方式。建構輸入資料和自訂工作者任務範本的結構,以便在啟動人工迴圈時將輸入資料正確顯示給人力工作者。請參閱預覽工作者任務範本以了解如何預覽您的自訂工作者任務範本。

  4. 對於 HumanLoopName,請輸入人工迴圈的名稱。該名稱在您帳戶中的區域內必須是唯一的,最多可以有 63 個字元。有效字元:a-z、0-9 和 - (連字號)。

開始人工迴圈
  • 若要啟動人工循環,請使用您偏好的語言特定 SDK 提交類似下列範例的請求。

AWS SDK for Python (Boto3)

以下範例會使用適用於 Python (Boto)的 SDK 開發套件。有關詳細信息,請參閱博託 3 Augmented AI 運行時AWS 用於 Python 的軟件開發工具包(博託)API 參考

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', ] } )
AWS CLI

下列要求範例使用 AWS CLI。如需詳細資訊,請參閱 AWS CLI 命令參考中的 start-human-loop

$ 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 和被設為 NULLHumanLoopActivationResults 物件。您可以使用此人工迴圈名稱來監控和管理您的人工迴圈。

後續步驟:

開始人工循環後,您可以使用 Amazon Augmented AI 運行時 API 和 Amazon CloudWatch 事件對其進行管理和監控。如需進一步了解,請參閱監控和管理您的人工循環