Ground Truth 直播标签工作 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Ground Truth 直播标签工作

如果您想永久 SageMaker 地向 Amazon Ground Truth 发送新的数据对象进行标记,请使用流式标记作业。直播标签作业允许您:

  • 使用永久运行的标注作业将新的数据集对象实时发送给工作人员。只要标签作业处于活动状态并且正在向其发送新对象,工作人员就会持续接收要标记的新数据对象。

  • 查看已排队等待标记的对象数量。使用此信息来控制发送到标签作业的数据对象的流。

  • 工作人员完成标签后,实时接收单个数据对象的标签数据。

Ground Truth 直播标签作业在手动停止或闲置超过 10 天之前一直处于活动状态。在标签作业处于活动状态时,您可以间歇性地向工作人员发送新的数据对象。

如果你是 Ground Truth 直播标签工作的新用户,建议你查看一下工作方式

用于学习创建流式标签作业如何创建流媒体标签作业。

注意

Ground Truth 流媒体标签作业仅通过 SageMaker API 支持。

工作方式

创建 Ground Truth 流式标签作业时,该作业将保持活动状态,直到手动停止、闲置超过 10 天或无法访问输入数据源。当新数据对象处于活动状态时,您可以间歇性地向工作人员发送新的数据对象。只要工作人员当前可用的任务总数小于中的值,工作人员就可以继续实时接收新的数据对象MaxConcurrentTaskCount。否则,数据对象将发送到 Ground Truth 在亚马逊简单队列服务 (Amazon SQS) 中代表您创建的队列以供日后处理。一旦工作人员当前可用的任务总数低于,这些任务就会立即发送给工作人员MaxConcurrentTaskCount。如果数据对象在 14 天后未发送给工作人员,则该数据对象将过期。您可以查看队列中待处理的任务数,并调整发送到标签作业的对象数量。例如,如果待处理对象的积压超过阈值,则可以降低将对象发送到标签作业的速度。

将数据发送到流式标注Job

当您使用输入清单文件创建标注任务时,您可以选择向流式标签作业提交一次输入数据。标签作业开始且状态为InProgress后,您可以使用 Amazon SNS 输入主题和 Amazon S3 事件通知将新的数据对象实时提交到您的标签任务。

在开始标注Job 时提交数据对象(一次):

  • 使用输入清单文件-在创建流式标签任务ManifestS3Uri时,您可以选择在其中指定输入清单文件 Amazon S3 URI。标签作业一开始,Ground Truth 就会将清单文件中的每个数据对象发送给工作人员进行标记。要了解更多信息,请参阅 创建清单文件(可选)

    在您提交创建流媒体标签任务的请求后,其状态将为Initializing。标注作业激活后,状态将更改为InProgress,您可以开始使用实时选项提交其他数据对象进行标注。

实时提交数据对象:

  • 使用 Amazon SNS 消息发送数据对象 — 您可以通过发送 Amazon SNS 消息将 Ground Truth 新的数据对象发送给标签。您将向您在创建流媒体标签任务时创建和指定的 Amazon SNS 输入主题发送此消息。有关更多信息,请参阅使用Amazon SNS 发送数据对象

  • 通过将数据对象放入 Amazon S3 存储桶来发送数据对象 — 每次向 Amazon S3 存储桶添加新数据对象时,都可以提示 Ground Truth 处理该对象以进行标记。为此,您需要向存储段添加事件通知,这样,每次向 Amazon SNS 存储段添加(或在)该存储段中创建新对象时,该存储段都会通知您的 Amazon SNS 输入主题。有关更多信息,请参阅使用 Amazon S3 发送数据对象:此选项不适用于基于文本的标签作业,例如文本分类和命名实体识别。

    重要

    如果您使用 Amazon S3 配置,请勿将相同的 Amazon S3 位置用于输入数据配置和输出数据。创建标签任务时,您可以为输出数据指定 S3 前缀。

使用Amazon SNS 发送数据对象

您可以使用 Amazon Simple Simple Simple SimpSimple Notification Service (Amazon SNS) ple Amazon SNS 是一项 Web 服务,用于协调和管理向或来自端点(例如,电子邮件地址或Amazon Lambda函数)的过程。Amazon SNS 主题充当两个或多个终端节点之间的通信渠道。您可以使用 Amazon SNS 向SnsTopicArn中的CreateLabelingJob参数中指定的主题发送或发布新数据对象InputConfig。这些消息的格式与输入清单文件中的单行相同。

例如,您可以通过将一段文本发布到您的输入主题来将一段文本发送给正在进行的文本分类标签作业。您发布的消息可能类似于以下内容:

{"source": "Lorem ipsum dolor sit amet"}

要将新的图像对象发送到图像分类标注作业,您的消息可能与以下内容类似:

{"source-ref": "s3://awsexamplebucket/example-image.jpg"}
注意

您还可以在您的 Amazon SNS 消息中包含自定义重复数据删除 ID 和重复数据删除密钥。要了解更多信息,请参阅 重复消息处理

当 Ground Truth 创建你的直播标签任务时,它会订阅你的Amazon SNS 输入主题。

使用 Amazon S3 发送数据对象

您可以将一个或多个新数据对象放入配置了 Amazon SNS 事件通知的 Amazon S3 存储桶中,从而将它们发送到流式标签任务。您可以设置一个事件,以便在存储段中创建新对象时通知您的 Amazon SNS 输入主题。您必须在中的CreateLabelingJob参数SnsTopicArn中指定相同的 Amazon SNS 输入主题InputConfig

每当您配置 Amazon S3 存储桶以向 Amazon SNS 发送通知时,Ground Truth 都会发布测试事件,以确保该主题存在且指定的 Amazon S3 存储段的所有者有权向指定主题发布消息。"s3:TestEvent"建议您在开始流式标签作业之前设置与 Amazon SNS 的 Amazon S3 连接。如果您不这样做,则此测试事件可能会注册为数据对象并发送到 Ground Truth 进行标记。

重要

如果您使用 Amazon S3 配置,请勿将相同的 Amazon S3 位置用于输入数据配置和输出数据。创建标签任务时,您可以为输出数据指定 S3 前缀。

对于基于图像的标签任务,Ground Truth 要求所有 S3 存储桶都附加 CORS 策略。要了解更多信息,请参阅 CORS 权限要求

配置完您的 Amazon S3 存储桶并创建了标签任务后,您就可以向存储桶添加对象,Ground Truth 要么将该对象发送给工作服务器,要么将其放入您的 Amazon SQS 队列中。

要了解更多信息,请参阅 设置 Amazon S3 存储桶事件通知

重要

此选项不适用于基于文本的标签作业,例如文本分类和命名实体识别。

使用 Amazon SQS 队列管理贴标请求

当 Ground Truth 创建您的流媒体标签任务时,它会在用于创建标签任务的Amazon账户中创建 Amazon SQS 队列。队列名称GroundTruth-labeling_job_namelabeling_job_name是标注任务的名称,以小写字母表示。当您向标注作业发送数据对象时,Ground Truth 要么将数据对象直接发送给工作人员,要么将任务放入队列中待日后处理。如果数据对象在 14 天后未发送给工作器,则该数据对象将过期并从队列中删除。您可以在 Amazon SQS 中设置警报来检测对象何时过期,并使用此机制控制发送到标签任务的对象数量。

重要

修改、删除对象或将对象直接发送到与您的流式标签任务关联的 Amazon SQS 队列可能会导致任务失败。

从流式标签Job 接收输出数据

您的 Amazon S3 输出存储桶会定期使用流式标签任务的新输出数据进行更新。

或者,您也可以指定 AAmazon SNS 输出主题。每次工作人员提交带标签的对象时,都会向该主题发送包含输出数据的通知。您可以为终端节点订阅您的 SNS 输出主题,以便在收到来自标签任务的输出数据时接收通知或触发事件。如果您想实时链接到其他流媒体任务,并在每次工作人员提交数据对象时接收 Amazon SNS 通知,请使用 Amazon SNS 输出主题。

要了解更多信息,请参阅 为您的亚马逊 SNS 输出主题订阅终端节点

重复消息处理

对于实时发送的数据对象,即使多次收到引用该对象的输入消息(重复消息),Ground Truth 通过确保每个唯一对象仅发送一次用于标记该对象来保证幂等性。为此,将为发送到流式标签作业的每个数据对象分配一个重复数据消除 ID,该去重 ID 由重复数据删除密钥标识。

如果您使用 Amazon SNS 消息直接通过 Amazon SNS 输入主题发送标记数据对象的请求,则可以选择为对象选择自定义重复数据删除密钥和重复数据删除 ID。有关更多信息,请参阅在 Amazon SNS 消息中指定重复数据删除密钥和 ID

如果您没有提供自己的重复数据删除密钥,或者您使用 Amazon S3 配置将数据对象发送到您的标签任务,Ground Truth 会使用以下其中一个作为重复数据删除 ID:

  • 对于直接发送到您的Amazon SNS 输入主题的消息,Ground Truth 使用 SNS 消息 ID。

  • 对于来自 Amazon S3 配置的消息,Ground Truth 通过将对象的 Amazon S3 URI 与消息中的序列器令牌相结合来创建去重 ID。

在 Amazon SNS 消息中指定重复数据删除密钥和 ID

当您使用 Amazon SNS 消息将数据对象发送到流式标签作业时,您可以选择通过以下方式之一指定重复数据删除密钥和重复数据删除 ID。在所有这些场景中,使用标识您的重复数据删除密钥dataset-objectid-attribute-name

自备重复数据删除密钥和 ID

通过按如下方式配置 Amazon SNS 消息,创建自己的重复数据删除密钥和去重 ID。byo-key替换为您的密钥UniqueId和该数据对象的重复数据删除 ID。

{ "source-ref":"s3://bucket/prefix/object1", "dataset-objectid-attribute-name":"byo-key", "byo-key":"UniqueId" }

您的重复数据删除密钥最多可以有 140 个字符。支持的模式包括:"^[$a-zA-Z0-9](-*[a-zA-Z0-9])*".

您的重复数据删除 ID 最多可以有 1024 个字符。支持的模式包括:^(https|s3)://([^/]+)/?(.*)$.

使用现有密钥作为重复数据删除密钥

您可以使用消息中的现有密钥作为重复数据删除密钥。执行此操作时,与该密钥关联的值将用于重复数据删除 ID。

例如,您可以通过如下格式化消息来指定使用密钥作为重复数据删除密钥:source-ref

{ "source-ref":"s3://bucket/prefix/object1", "dataset-objectid-attribute-name":"source-ref" }

在此示例中,Ground Tr"s3://bucket/prefix/object1" uth 使用重复数据删除 ID。

在输出数据中查找重复数据删除密钥和 ID

您可以在输出数据中看到去重密钥和 ID。重复数据删除密钥由标识dataset-objectid-attribute-name

当您使用自己的自定义重复数据删除密钥时,您的输出包含与以下内容类似的内容:

"dataset-objectid-attribute-name": "byo-key", "byo-key": "UniqueId",

如果您未指定密钥,则可以按如下方式找到 Ground Truth 分配给您的数据对象的重复数据删除 ID。该$label-attribute-name-object-id参数标识您的重复数据删除 ID。

{ "source-ref":"s3://bucket/prefix/object1", "dataset-objectid-attribute-name":"$label-attribute-name-object-id" "label-attribute-name" :0, "label-attribute-name-metadata": {...}, "$label-attribute-name-object-id":"<service-generated-key>" }

因为<service-generated-key>,如果数据对象通过 Amazon S3 配置获得,则 Ground Truth 会添加该服务使用的唯一值,并发出一个键入的新字段,$sequencer该字段显示所使用的 Amazon S3 序列器。如果对象直接发送到 SNS,则 Ground Truth 使用 SNS 消息 ID。

注意

不要在标签属性名称中使用该字$符。