创建标记作业 (API) - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建标记作业 (API)

要使用 Amazon SageMaker API 创建标记作业,您可以使用CreateLabelingJoboperation. 有关为内置任务类型创建标记作业的具体说明,请参阅该任务类型页面。要了解如何创建流式标记作业(一个永久运行的标记作业),请参阅。创建直播标记 Job.

使用CreateLabelingJob操作,您需要满足以下条件:

  • 工作人员任务模板 (UiTemplateS3Uri) 或人工任务 UI ARN (HumanTaskUiArn) 在 Amazon S3 中。

    • 对于 3D 点云作业、视频对象检测和跟踪作业以及 NER 作业,请使用中列出的 ARN。HumanTaskUiArn对于你的任务类型。

    • 如果您使用的是 3D 点云任务以外的内置任务类型,则可以将工作人员说明添加到其中一个预构建的模板中,并将此模板(使用 .html 或 .liquid 扩展名)保存在 S3 存储桶中。在任务类型页面上查找预构建模板。

    • 如果使用自定义标记工作流,您可以创建一个自定义模板,并将该模板保存在 S3 存储桶中。要了解如何构建自定义工作人员模板,请参阅第 2 步:创建自定义工作人员任务模板。有关可用于自定义模板的自定义 HTML 元素,请参阅Crowd HTML 元素参考。有关各种标记任务的演示模板的存储库,请参阅 Amazon SageMaker Ground Truth 示例任务 UI

  • 一个输入清单文件,用于指定 Amazon S3 中的输入数据。在中指定输入清单文件的位置ManifestS3Uri. 有关创建输入清单的信息,请参阅输入数据。如果您创建流式标签作业,则这是可选的。要了解如何创建流式标记作业,请参阅。创建直播标记 Job.

  • 用于存储输出数据的 Amazon S3 存储桶。您可以在中指定此存储桶,还可以选择在中添加前S3OutputPath.

  • 标签类别配置文件。每个标签类别名称必须唯一。要在 Amazon S3 中使用LabelCategoryConfigS3Uri参数。此文件的格式和标签类别取决于您使用的任务类型:

    • 对于图像分类和文本分类(单个和多标签),您必须至少指定两个标签类别。对于所有其他任务类型,所需的标签类别的最小数量为 1。

    • 对于指定实体识别任务,必须在此文件中提供工作人员说明。请参阅在标签类别配置文件中提供工作人员说明有关详细信息和示例。

    • 对于 3D 点云和视频帧任务类型,请在中使用格式。创建具有标签类别和框架属性的标记类别配置文件.

    • 对于所有其他内置任务类型和自定义任务,标签类别配置文件必须是以下格式的 JSON 文件。通过将 label_1label_2...label_n 替换为标签类别,确定要使用的标签。

      { "document-version": "2018-11-28" "labels": [ {"label": "label_1"}, {"label": "label_2"}, ... {"label": "label_n"} ] }
  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon Identity and Access Management一个 (IAM) 角色AmazonSageMakerGroundTruthExecution附加托管 IAM 策略,并具有访问 S3 存储桶的权限。在中指定此角色RoleArn. 要了解此策略的更多信息,请参阅。使用 IAM 托管策略与 Ground Truth. 如果您需要更精细的权限,请参阅分配 IAM 权限以使用 Ground Truth

    如果您的输入或输出存储桶名称不包含 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/*" ] } ] }
  • 用于处理输入和输出数据的注释前和注释后(或注释-合并)Amazon Lambda 函数 Amazon 资源名称 (ARN)。

    • Lambda 函数在每个函数中都预定义Amazon区域用于内置任务类型。要查找您所在区域的注释前 Lambda ARN,请参阅。PreHumanTaskLambdaArn. 要查找您所在区域的注释整合 Lambda ARN,请参阅。AnnotationConsolidationLambdaArn.

    • 对于自定义标记工作流,您必须提供自定义注释前和注释后 Lambda ARN。要了解如何创建这些 Lambda 函数,请参阅。第 3 步:使用处理Amazon Lambda.

  • 您在中指定的工作团队 ARNWorkteamArn. 当您订阅供应商员工或创建私有工作团队时,您会收到工作团队 ARN。如果您要为视频帧或点云任务类型创建标记作业,您不能使用Amazon Mechanical Turk人力。对于所有其他任务类型,要使用 Mechanical Turk 员工,请使用以下 ARN。Replaceregion使用Amazon您用来创建标签作业的区域。

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

    如果您将Amazon Mechanical Turk劳动力,使用ContentClassifiers中的参数DataAttributesInputConfig要声明您的内容不含个人身份信息和成人内容。

    Ground Truth要求如果您使用 Mechanical Turk 工作人员,则输入数据不含个人身份信息 (PII)。如果您使用 Mechanical Turk 并且没有指定输入数据不含 PII,请使用FreeOfPersonallyIdentifiableInformation标记,你的标签作业将失败。使用FreeOfAdultContent标记,以声明您的输入数据不含成人内容。 如果您的任务包含成人内容,SageMaker 可能会限制可以查看您的任务的 Amazon Mechanical Turk 人力。

    要了解有关工作团队和人力的更多信息,请参阅创建和管理人力

  • 如果您使用 Mechanical Turk 劳动力队伍,则必须指定工作人员在中执行单项任务时需要支付的费用PublicWorkforceTaskPrice.

  • 要配置任务,必须使用以下方法提供任务描述和标题TaskDescriptionTaskTitle分别。或者,您可以提供时间限制,以控制工作人员必须在单个任务上工作的时间(TaskTimeLimitInSeconds) 以及任务在工作人员门户中保留多长时间,可供工作人员使用 (TaskAvailabilityLifetimeInSeconds)。

  • (可选)对于某些任务类型,您可以让多个工作人员标记单个数据对象(为 NumberOfHumanWorkersPerDataObject 参数输入大于 1 的数字)。有关注释合并的更多信息,请参阅合并注释

  • (可选)要创建自动数据标记作业,请在中指定一个 ARN。LabelingJobAlgorithmSpecificationArnLabelingJobAlgorithmsConfig. 此 ARN 标识自动化数据标记作业中使用的算法。与此 ARN 关联的任务类型必须与PreHumanTaskLambdaArnAnnotationConsolidationLambdaArn你指定。以下任务类型支持自动数据标记:图像分类、边界框、语义分割和文本分类。自动数据标记允许的最小对象数量为 1,250,我们强烈建议至少提供 5,000 个对象。要了解自动数据标记作业的更多信息,请参阅自动数据标记.

  • (可选)你可以提供StoppingConditions如果符合条件,那就导致标签作业停止。您可以使用停止条件来控制贴标作业的成本。

示例

以下代码示例演示如何使用创建标记作业:CreateLabelingJob. 有关其他示例,我们建议您使用一个Ground Truth 标记作业SageMaker 笔记本实例的 SageMaker 示例部分中的 Jupyter 笔记本。要了解如何使用 SageMaker 示例中的笔记本示例,请参阅示例笔记本. 你也可以在 GitHub 上看到这些示例笔记本SageMaker 示例存储库.

Amazon SDK for Python (Boto3)

以下是一个示例:AmazonPython 开发工具包 (Boto3) 请求为美国东部(弗吉尼亚北部)区域使用私有人力创建内置任务类型的标记作业。RESPECT All红色斜体文本使用你的标签作业资源和规格。

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" }, ] )
Amazon CLI

以下是一个示例:Amazon要求 CLI 请求在美国东部(弗吉尼亚北部)区域为内置任务类型创建标记作业。Amazon Mechanical Turk 人力. 有关更多信息,请参阅 。开始人类循环中的Amazon CLI命令参考. RESPECT All红色斜体文本使用你的标签作业资源和规格。

$ 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。有关如何使用其他特定于语言的开发工具包的信息,请参阅。另请参阅中的CreateLabelingJobs主题。