建立標記任務 (API) - Amazon SageMaker

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

建立標記任務 (API)

若要使用 Amazon SageMaker API 建立標籤任務,請使用該CreateLabelingJob操作。如需為內建任務類型建立標記任務的特定指示,請參閱該任務類型頁面。若要了解如何建立串流標記工作 (永久執行的標記工作),請參閱 建立串流標籤工作

若要使用 CreateLabelingJob 操作,您需要下列項目:

  • Amazon S3 中的工作者任務範本 (UiTemplateS3Uri) 或人工任務 UI ARN (HumanTaskUiArn)。

    • 對於 3D 點雲工作、影片物件偵測和追蹤工作,以及 NER 工作,請針對您的任務類型使用 HumanTaskUiArn 中列出的 ARN。

    • 如果使用 3D 點雲模式任務以外的內建任務類型,您可以將工作者指示新增至其中一個預先建置的範本,並將範本儲存在 S3 儲存貯體中 (使用 .html 或 .liquid 副檔名)。在您的任務類型頁面上尋找預先建置的範本。

    • 如果您使用自訂標記工作流程,則可以建立自訂範本,並將範本儲存在 S3 儲存貯體中。若要了解如何建立自訂工作者範本,請參閱自訂工作者任務範本。如需可用來自訂範本的自訂 HTML 元素,請參閱 Crowd HTML 元素參考。如需各種標籤任務的示範範本儲存庫,請參閱 Amazon SageMaker Ground Truth 範例任務 UI

  • 指定您在 Amazon S3 中的輸入資料的輸入資訊清單檔案。在 ManifestS3Uri 指定輸入資訊清單檔案的位置。如需建立輸入資訊清單的相關資訊,請參閱 輸入資料。如果您建立串流標記工作,此為選用。若要了解如何建立串流標記任務,請參閱 建立串流標籤工作

  • 用來儲存輸出資料的 Amazon S3 儲存貯體。您可以在 S3OutputPath 中指定此儲存貯體及選擇性指定前綴。

  • 標籤類別組態檔案。每個標籤類別名稱必須是唯一的。使用 LabelCategoryConfigS3Uri 參數,指定此檔案在 Amazon S3 中的位置。此檔案的格式和標籤類別取決於您使用的任務類型:

    • 對於影像分類和文字分類 (單一標籤和多標籤),您必須至少指定兩個標籤類別。對於所有其他任務類型,最少需要一個標籤類別。

    • 對於具名實體辨識任務,您必須在此檔案中提供工作者指示。如需詳細資訊和範例,請參閱 在標籤類別組態檔案中提供工作者指示

    • 對於 3D 點雲和影片影格任務類型,請使用 使用標籤類別和影格屬性參考來標記類別組態檔案 中的格式。

    • 對於所有其他內建任務類型和自訂任務,您的標籤類別組態檔案必須是下列格式的 JSON 檔案。使用標籤類別取代 label_1label_2...label_n,藉此來識別您要使用的標籤。

      { "document-version": "2018-11-28" "labels": [ {"label": "label_1"}, {"label": "label_2"}, ... {"label": "label_n"} ] }
  • 附加AmazonSageMakerGroundTruthExecution受管 IAM 政策並具有存取 S3 儲存貯體許可的 AWS Identity and Access Management (IAM) 角色。在 RoleArn 中指定此角色。若要進一步了解此政策,請參閱 搭配 Ground Truth 使用IAM受管政策。如果您需要更精細的許可,請參閱指派使用 Ground Truth 的IAM許可

    如果您的輸入或輸出儲存貯體名稱不包含 sagemaker,您可以將類似下列內容的政策連接至傳遞到 CreateLabelingJob 操作的角色。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my_input_bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::my_output_bucket/*" ] } ] }
  • 可處理您的輸入和輸出資料的預先標註和事後標註 (或註釋合併) AWS Lambda 函數 Amazon Resource Name (ARN)。

    • Lambda 函數在每個 AWS 區域中針對內建工作類型預先定義。若要尋找您所在區域的預先註解 Lambda ARN,請參閱。PreHumanTaskLambdaArn若要尋找適用於您區域的註解整合 Lambda ARN,請參閱。AnnotationConsolidationLambdaArn

    • 對於自訂標記工作流程,您必須提供自訂的預先標註和事後標註 Lambda ARN。若要了解如何建立這些 Lambda 函數,請參閱 使用 處理 AWS Lambda

  • 您在 WorkteamArn 中指定的工作團隊 ARN。訂閱廠商人力或建立私人工作團隊時,您會收到工作團隊 ARN。如果要為視訊影格或點雲工作類型建立標籤工作,則無法使用工作 Amazon Mechanical Turk 人力。對於所有其他任務類型,若要使用 Mechanical Turk 人力,請使用以下 ARN。以您用來建立標籤工作的 AWS 區域取region代。

    arn:aws:sagemaker:region:394669845002:workteam/public-crowd/default

    如果您使用 Amazon Mechanical Turk 人力,請在 InputConfigDataAttributes 中使用 ContentClassifiers 參數,以宣告您的內容不含個人識別資訊和成人內容。

    如果您使用 Mechanical Turk 人力,Ground Truth 要求您的輸入資料不含個人身分識別資訊 (PII)。如果您使用 Mechanical Turk,並且沒有使用 FreeOfPersonallyIdentifiableInformation 旗標指定輸入資料沒有 PII,則標記任務將失敗。使用FreeOfAdultContent旗標來宣告您的輸入資料不含成人內容。 SageMaker 可能會限制可以查看您任務的 Amazon Mechanical Turk 員,如果它包含成人內容。

    若要進一步了解工作團隊和人力,請參閱 人力資源

  • 如果您使用 Mechanical Turk 人力,則必須在 PublicWorkforceTaskPrice 指定將支付給執行單一任務工作者的價格。

  • 若要配置工作,您必須分別使用 TaskDescriptionTaskTitle 提供任務說明和標題。或者,您可以提供時間限制,以控制工作者處理個別任務的時間長度 (TaskTimeLimitInSeconds),以及工作者入口網站中可供工作者使用的任務剩餘時間 (TaskAvailabilityLifetimeInSeconds)。

  • (選用) 對於某些任務類型,您可以讓多個工作者為 NumberOfHumanWorkersPerDataObject 參數輸入大於一的數字來標記單一資料物件。如需註釋合併的詳細資訊,請參閱註釋合併

  • (選擇性) 若要建立自動化資料標籤工作,請指定中列出的其LabelingJobAlgorithmSpecificationArnLabelingJobAlgorithmsConfig一個 ARN。此 ARN 可識別自動化資料標籤工作中使用的演算法。與此 ARN 關聯的任務類型須符合您指定的 PreHumanTaskLambdaArnAnnotationConsolidationLambdaArn 的任務類型。下列任務類型支援自動化資料標籤:影像分類、週框方塊、語義分隔和文字分類。自動化資料標記允許的物件數量下限為 1,250,但強烈建議您至少提供 5,000 個物件。若要進一步了解自動化資料標籤工作,請參閱 自動化資料標籤

  • (選用) 您可以提供 StoppingConditions,在符合條件的情況下,使標記任務停止。您可以使用停止條件來控制標記任務的成本。

範例

下列程式碼範例示範如何使用 CreateLabelingJob 建立標記任務。如需其他範例,我們建議您使用筆記本執行個體「範 SageMaker例」區段中的「Ground Truth 標籤工作 Jupyter」 SageMaker 筆記本之一。若要瞭解如何使用範例中的記事本 SageMaker 範例,請參閱存取範例筆記本。您也可以在 [範例] 儲存庫 GitHub 中查看這些範SageMaker 例筆記本。

AWS SDK for Python (Boto3)

以下是 AWS Python 開發套件 (Boto3) 請求的範例,可使用私有人力為美國東部 (維吉尼亞北部) 區域中的內建任務類型建立標記任務。將所有紅色斜體文字取代為您的標記任務資源和規格。

response = client.create_labeling_job( LabelingJobName="example-labeling-job", LabelAttributeName="label", InputConfig={ 'DataSource': { 'S3DataSource': { 'ManifestS3Uri': "s3://bucket/path/manifest-with-input-data.json" } }, 'DataAttributes': { 'ContentClassifiers': [ "FreeOfPersonallyIdentifiableInformation"|"FreeOfAdultContent", ] } }, OutputConfig={ 'S3OutputPath': "s3://bucket/path/file-to-store-output-data", 'KmsKeyId': "string" }, RoleArn="arn:aws:iam::*:role/*", LabelCategoryConfigS3Uri="s3://bucket/path/label-categories.json", StoppingConditions={ 'MaxHumanLabeledObjectCount': 123, 'MaxPercentageOfInputDatasetLabeled': 123 }, HumanTaskConfig={ 'WorkteamArn': "arn:aws:sagemaker:region:*:workteam/private-crowd/*", 'UiConfig': { 'UiTemplateS3Uri': "s3://bucket/path/custom-worker-task-template.html" }, 'PreHumanTaskLambdaArn': "arn:aws:lambda:us-east-1:432418664414:function:PRE-tasktype", 'TaskKeywords': [ "Images", "Classification", "Multi-label" ], 'TaskTitle': "Multi-label image classification task", 'TaskDescription': "Select all labels that apply to the images shown", 'NumberOfHumanWorkersPerDataObject': 1, 'TaskTimeLimitInSeconds': 3600, 'TaskAvailabilityLifetimeInSeconds': 21600, 'MaxConcurrentTaskCount': 1000, 'AnnotationConsolidationConfig': { 'AnnotationConsolidationLambdaArn': "arn:aws:lambda:us-east-1:432418664414:function:ACS-" }, Tags=[ { 'Key': "string", 'Value': "string" }, ] )
AWS CLI

以下是 AWS CLI 請求的範例,可使用 Amazon Mechanical Turk 人力為美國東部 (維吉尼亞北部) 區域中的內建任務類型建立標籤任務。如需詳細資訊,請參閱 AWS CLI 命令參考中的 start-human-loop。將所有紅色斜體文字取代為您的標記任務資源和規格。

$ aws --region us-east-1 sagemaker create-labeling-job \ --labeling-job-name "example-labeling-job" \ --label-attribute-name "label" \ --role-arn "arn:aws:iam::account-id:role/role-name" \ --input-config '{ "DataAttributes": { "ContentClassifiers": [ "FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent" ] }, "DataSource": { "S3DataSource": { "ManifestS3Uri": "s3://bucket/path/manifest-with-input-data.json" } } }' \ --output-config '{ "KmsKeyId": "", "S3OutputPath": "s3://bucket/path/file-to-store-output-data" }' \ --human-task-config '{ "AnnotationConsolidationConfig": { "AnnotationConsolidationLambdaArn": "arn:aws:lambda:us-east-1:432418664414:function:ACS-" }, "TaskAvailabilityLifetimeInSeconds": 21600, "TaskTimeLimitInSeconds": 3600, "NumberOfHumanWorkersPerDataObject": 1, "PreHumanTaskLambdaArn": "arn:aws:lambda:us-east-1:432418664414:function:PRE-tasktype", "WorkteamArn": "arn:aws:sagemaker:us-east-1:394669845002:workteam/public-crowd/default", "PublicWorkforceTaskPrice": { "AmountInUsd": { "Dollars": 0, "TenthFractionsOfACent": 6, "Cents": 3 } }, "TaskDescription": "Select all labels that apply to the images shown", "MaxConcurrentTaskCount": 1000, "TaskTitle": "Multi-label image classification task",, "TaskKeywords": [ "Images", "Classification", "Multi-label" ], "UiConfig": { "UiTemplateS3Uri": "s3://bucket/path/custom-worker-task-template.html" } }'

如需此操作的詳細資訊,請參閱CreateLabelingJob。如需如何使用其他語言特定 SDK 的資訊,請參閱 CreateLabelingJobs 主題中的另請參閱