Ground Truth 流式标记作业 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

Ground Truth 流式标记作业

如果要将新数据对象永久发送到 Amazon SageMaker Ground Truth 进行标记,请使用流标记作业。流式标记作业允许您:

  • 使用永久运行的标记作业向工作人员实时发送新数据集对象。只要标记作业处于活动状态并且有新对象被发送到工作线程,工作线程就会持续接收新数据对象以标记它。

  • 了解已排队并正在等待标记的对象的数量。使用此信息控制发送到标记作业的数据对象的流。

  • 在工作人员完成标记单个数据对象时实时接收这些数据对象的标签数据。

Ground Truth 流标记作业将保持活动状态,直到手动停止或已空闲超过 10 天。当标记作业处于活动状态时,您可以间歇性地将新数据对象发送给工作人员。

如果您是Ground Truth流式处理标记作业的新用户,建议您查看如何使用

使用 Create a Streaming Labeling Job 了解如何创建流标记作业。

注意

Ground Truth 仅通过 SageMaker API 支持 流标记作业。

如何使用

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

将数据发送到流标记作业

当您使用输入清单文件创建标记作业时,可以选择将输入数据提交到流标记作业一次。在标记作业启动且状态为 后InProgress,您可以使用Amazon SNS输入主题和Amazon S3事件通知实时将新数据对象提交到标记作业。

在启动标记作业(一次性)时提交数据对象:

  • 使用输入清单文件 – 在创建流式处理标记作业Amazon S3时,您可以选择在 中指定输入清单文件 ManifestS3Uri URI。在标记作业启动后, 会立即将清单文件中的每个数据对象Ground Truth发送给工作人员进行标记。要了解更多信息,请参阅“Create a Manifest File (Optional)”。

    在提交创建流标记作业的请求后,其状态将为 Initializing。标记作业处于活动状态后,状态将变为 InProgress ,您可以开始使用实时选项提交要标记的其他数据对象。

实时提交数据对象:

  • 使用 Amazon SNS 消息发送数据对象 – 您可以通过发送 Ground Truth 消息来发送Amazon SNS新数据对象进行标记。您将此消息发送到您在创建流标记作业时创建并指定的Amazon SNS输入主题。有关更多信息,请参阅使用 发送数据对象 Amazon SNS

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

    重要

    如果您使用 Amazon S3 配置,请不要为输入数据配置和输出数据使用相同的 S3 位置。在创建标记作业时,您为输出数据指定 S3 前缀。

使用 发送数据对象 Amazon SNS

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

例如,您可以通过将文本发布到输入主题来向活动的文本分类标记作业发送一段文本。您发布的消息可能类似于以下内容:

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

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

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

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

当 Ground Truth 创建您的流标记作业时,它会订阅您的Amazon SNS输入主题。

使用 发送数据对象 Amazon S3

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

每次您将 S3 存储桶配置为向 发送通知时Amazon SNS, Ground Truth 都会发布测试事件 "s3:TestEvent",以确保该主题存在,并且指定Amazon S3存储桶的拥有者有权发布到指定主题。建议您在启动流标记作业Amazon S3之前设置与 Amazon SNS 的连接。如果没有,此测试事件可能会注册为数据对象并发送到 Ground Truth 进行标记。

重要

如果您使用 Amazon S3 配置,请不要为输入数据配置和输出数据使用相同的 S3 位置。在创建标记作业时,您为输出数据指定 S3 前缀。

在配置Amazon S3存储桶并创建标记作业后,您可以将对象添加到存储桶,并将该对象Ground Truth发送给工作人员或放在Amazon SQS队列中。

要了解更多信息,请参阅“Set up Amazon S3 Bucket Event Notifications”。

重要

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

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

当 Ground Truth 创建您的流标记作业时,它会在用于创建标记作业的 AWS 账户中创建 Amazon SQS 队列。队列名称是 GroundTruth-labeling_job_name ,其中 labeling_job_name 是您的标记作业的名称(采用小写字母)。当您将数据对象发送到标记作业时, Ground Truth 会将数据对象直接发送给工作人员,或将任务放在队列中以便稍后处理。如果数据对象在 14 天后未发送到工作线程,它将过期并从队列中删除。您可以在 中设置警报Amazon SQS以检测对象何时过期,并使用此机制来控制发送到标记作业的对象量。

重要

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

从流标记作业接收输出数据

您的Amazon S3输出存储桶会定期使用流标记作业中的新输出数据进行更新。

此外,如果您指定Amazon SNS输出主题,则每次工作人员提交带有标签的对象时,都会向该主题发送包含输出数据的通知。您可以为终端节点订阅 SNS 输出主题,以便在从标记任务接收输出数据时接收通知或触发事件。要了解更多信息,请参阅“Subscribe an Endpoint to Your Amazon SNS Output Topic”。

重复消息处理

对于实时发送的数据对象, 通过确保每个唯一对象只发送一次进行标记来确保Ground Truth等价,即使引用该对象的输入消息被多次接收(重复消息)。为此,将向发送到流标记作业的每个数据对象分配一个重复数据删除 ID,该 ID 使用重复数据删除键标识。

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

如果您未提供自己的重复数据删除密钥,或者如果您使用 Amazon S3 配置将数据对象发送到标记作业Ground Truth,则 将使用以下内容之一作为重复数据删除 ID:

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

  • 对于来自 Amazon S3 配置的消息, 通过将 对象的 Ground Truth URI 与消息中的Amazon S3排序程序令牌组合在一起来创建重复数据删除 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 Truth 使用 "s3://bucket/prefix/object1" 作为重复数据删除 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,其中显示使用的 S3 序列器。如果 对象直接提供给 Ground Truth SNS,请使用 SNS 消息 ID。

注意

请勿在标签属性名称中使用 $ 字符。