

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

# 创建标注作业 (API)
<a name="sms-create-labeling-job-api"></a>

要使用 Amazon SageMaker API 创建贴标任务，请使用[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html)操作。有关为内置任务类型创建标注作业的具体说明，请参阅该[任务类型页面](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html)。要了解如何创建流式标注作业（这是持续运行的标注作业），请参阅[创建流式标注作业](sms-streaming-create-job.md)。

要使用 `CreateLabelingJob` 操作，您需要以下内容：
+ Amazon S3 中的工作人员任务模板 (`UiTemplateS3Uri`) 或人工任务 UI ARN (`[HumanTaskUiArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UiConfig.html#sagemaker-Type-UiConfig-HumanTaskUiArn)`)。
  + 对于 3D 点云作业、视频对象检测和跟踪作业以及 NER 作业，请将 `HumanTaskUiArn` 中列出的 ARN 用于您的任务类型。
  + 如果您使用的是 3D 点云任务以外的内置任务类型，则可以将工作人员说明添加到其中一个预构建的模板中，并将此模板（使用 .html 或 .liquid 扩展名）保存在 S3 存储桶中。在[任务类型页面](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html)上查找预构建模板。
  + 如果使用自定义标注工作流，您可以创建一个自定义模板，并将该模板保存在 S3 存储桶中。要了解如何构建自定义工作人员模板，请参阅[创建自定义工作人员任务模板](sms-custom-templates-step2.md)。有关可用于自定义模板的自定义 HTML 元素，请参阅[Crowd HTML 元素参考](sms-ui-template-reference.md)。有关各种标签任务的演示模板存储库，请参阅 [Amazon G SageMaker round Truth 示例任务 UIs ](https://github.com/aws-samples/amazon-sagemaker-ground-truth-task-uis)。
+ 一个输入清单文件，用于指定 Amazon S3 中的输入数据。在 `ManifestS3Uri` 中指定输入清单文件的位置。有关创建输入清单的信息，请参阅[输入数据](sms-data-input.md)。如果您创建流式标注作业，则这是可选的。要了解如何创建流式标注作业，请参阅[创建流式标注作业](sms-streaming-create-job.md)。
+ 存储输出数据的 Amazon S3 存储桶。您可以在 `S3OutputPath` 中指定此存储桶并选择指定前缀。
+ 标签类别配置文件。每个标签类别名称必须唯一。使用 `LabelCategoryConfigS3Uri` 参数指定此文件在 Amazon S3 中的位置。此文件的格式和标签类别取决于您使用的任务类型：
  + 对于图像分类和文本分类（单标签和多标签），必须至少指定两个标签类别。对于所有其他任务类型，所需的标签类别的最小数量为 1。
  + 对于命名实体识别任务，必须在此文件中提供工作人员说明。有关详细信息和示例，请参阅[在标签类别配置文件中提供工作人员说明](sms-named-entity-recg.md#worker-instructions-ner)。
  + 对于 3D 点云和视频帧任务类型，请使用 [带有标签类别和框架属性参考的标注类别配置文件](sms-label-cat-config-attributes.md) 中的格式。
  + 对于所有其他内置任务类型和自定义任务，标签类别配置文件必须是以下格式的 JSON 文件。通过将 `label_1`、`label_2`、`...`、`label_n` 替换为标签类别，确定要使用的标签。

    ```
    {
        "document-version": "2018-11-28",
        "labels": [
            {"label": "label_1"},
            {"label": "label_2"},
            ...
            {"label": "label_n"}
        ]
    }
    ```
+ 附带[AmazonSageMakerGroundTruthExecution](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerGroundTruthExecution)托管 IAM 策略并有权访问您的 S3 存储桶的 AWS Identity and Access Management (IAM) 角色。在 `RoleArn` 中指定此角色。要了解有关此策略的更多信息，请参阅[在 Ground Truth 中使用 IAM 托管策略](sms-security-permissions-get-started.md)。如果您需要更精细的权限，请参阅[分配 IAM 权限以使用 Ground Truth](sms-security-permission.md)。

  如果您的输入或输出存储桶名称不包含 `sagemaker`，则可以将类似于以下内容的策略附加到传递给 `CreateLabelingJob` 操作的角色。

------
#### [ JSON ]

****  

  ```
  {
      "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 资源名称 (ARN)。
  + Lambda 函数是在每个 AWS 区域中为内置任务类型预定义的。要查找您所在地区的预注释 Lambda ARN，请参阅。[PreHumanTaskLambdaArn](https://docs.aws.amazon.com/sagemaker/latest/dg/API_HumanTaskConfig.html#SageMaker-Type-HumanTaskConfig-PreHumanTaskLambdaArn)要查找您所在地区的注释合并 Lambda ARN，请参阅。[AnnotationConsolidationLambdaArn](https://docs.aws.amazon.com/sagemaker/latest/dg/API_AnnotationConsolidationConfig.html#SageMaker-Type-AnnotationConsolidationConfig-AnnotationConsolidationLambdaArn)
  + 对于自定义标注工作流，必须提供自定义的注释前和注释后 Lambda ARN。要了解如何创建这些 Lambda 函数，请参阅[使用自定义标签工作流程处理数据 AWS Lambda](sms-custom-templates-step3.md)。
+ 您在 `WorkteamArn` 中指定的工作团队 ARN。当您订阅供应商人力或创建私有工作团队时，您会收到工作团队 ARN。如果您正在为视频帧或点云任务类型创建标注作业，则无法使用工作 Amazon Mechanical Turk 人员。对于所有其他任务类型，要使用 Mechanical Turk 人力，请使用以下 ARN。*`region`*替换为您用于创建标注任务的 AWS 区域。

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

  如果您使用 [Amazon Mechanical Turk 人力](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-management-public.html)，请在 `InputConfig` 的 `DataAttributes` 中使用 `ContentClassifiers` 参数以声明您的内容不包含个人身份信息或成人内容。

  如果您使用 Mechanical Turk 人力，Ground Truth *要求*您的输入数据不包含个人身份信息 (PII)。如果您使用 Mechanical Turk，但没有使用 `FreeOfPersonallyIdentifiableInformation` 标志指定输入数据不含 PII，那么您的标注作业将失败。使用该`FreeOfAdultContent`标志声明您的输入数据不包含成人内容。 SageMaker 如果你的任务包含成人内容，人工智能可能会限制可以查看你的任务的 Amazon Mechanical Turk 工作人员。

  要了解有关工作团队和人力的更多信息，请参阅[人力](sms-workforce-management.md)。
+ 如果您使用的是 Mechanical Turk 人力，则必须在 `PublicWorkforceTaskPrice` 中指定工作人员执行单项任务的价格。
+ 要配置任务，必须分别使用 `TaskDescription` 和 `TaskTitle` 提供任务描述和标题。您可以选择提供时间限制，以控制工作人员执行单个任务的时间 (`TaskTimeLimitInSeconds`) 以及工作人员门户中为工作人员保留任务的时间 (`TaskAvailabilityLifetimeInSeconds`)。
+ （可选）对于[某些任务类型](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-annotation-consolidation.html)，您可以让多个工作人员标注单个数据对象（为 `NumberOfHumanWorkersPerDataObject` 参数输入大于 1 的数字）。有关注释合并的更多信息，请参阅[注释整合](sms-annotation-consolidation.md)。
+ （可选）要创建自动数据标注任务，请指定[LabelingJobAlgorithmSpecificationArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_LabelingJobAlgorithmsConfig.html)中 ARNs列出的任务之一`LabelingJobAlgorithmsConfig`。此 ARN 标识自动数据标注作业中使用的算法。与此 ARN 关联的任务类型必须与您指定的 `PreHumanTaskLambdaArn` 和 `AnnotationConsolidationLambdaArn` 的任务类型匹配。以下任务类型支持自动数据标注：图像分类、边界框、语义分割和文本分类。自动数据标注允许的最小对象数量为 1250 个，我们强烈建议至少提供 5000 个对象。要了解有关自动数据标注作业的更多信息，请参阅[自动数据标注](sms-automated-labeling.md)。
+ （可选）您可以提供 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#API_CreateLabelingJob_RequestSyntax](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#API_CreateLabelingJob_RequestSyntax)，如果满足其中一个条件，标注作业就会停止。您可以使用停止条件来控制标注作业的成本。

## 示例
<a name="sms-create-labeling-job-api-examples"></a>

以下代码示例演示了如何使用 `CreateLabelingJob` 创建标注作业。您还可以在 [SageMaker AI 示例存储库 GitHub中查看这些示例](https://github.com/aws/amazon-sagemaker-examples/tree/master/ground_truth_labeling_jobs)笔记本。

------
#### [ 适用于 Python (Boto3) 的 AWS SDK ]

以下是一个 [AWS Python SDK (Boto3) 请求](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_labeling_job)示例，该请求使用私有人力在美国东部（弗吉尼亚州北部）区域中为内置任务类型创建标注作业。将所有内容*red-italized text*替换为您的标签作业资源和规格。

```
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 ]

以下是使用 [Amazon Mechanical Turk](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-management-public.html) 员工为美国东部（弗吉尼亚北部）地区的内置任务类型创建标签任务的 AWS CLI 请求示例。有关更多信息，请参阅《[AWS CLI 命令参考](https://docs.aws.amazon.com/cli/latest/reference/)》**中的 [start-human-loop](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-labeling-job.html)。将所有内容*red-italized text*替换为您的标签作业资源和规格。

```
$ 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](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateLabelingJob.html)。有关如何使用其他特定语言的信息 SDKs，请参阅主题中的[另请参阅](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateLabelingJob.html#API_CreateLabelingJob_SeeAlso)。`CreateLabelingJobs`