SageMaker:如何从未完成/进行中的作业收集标注结果?
解决SageMaker标注作业提前获取未完成任务标注数据的方案
调用SageMaker Ground Truth API提取原始标注数据
使用GetLabelingJobAPI获取作业的输出配置信息,定位到对应的S3存储路径。同时通过ListDatasetObjects配合ListLabelingJobsForWorkteam关联已完成标注的数据集对象和工作者响应。核心是直接读取S3中annotations/worker-response前缀下的文件——只要有工作者提交标注,这些原始响应文件就会实时写入S3,不受任务完成阈值限制。直接访问输出S3桶的中间文件
打开标注作业指定的输出S3存储桶,进入annotations目录找到worker-response子文件夹。这里会按数据集对象ID分目录,每个目录下是对应工作者提交的JSON格式标注文件。你可以直接下载这些文件,自行完成数据解析和聚合,无需等待作业结束或手动停止。临时调整作业的标注阈值(应急方案)
通过UpdateLabelingJobAPI将“每个数据集对象的工作者数量”临时修改为1,此时所有已有至少1个标注的任务会被标记为完成,系统自动生成聚合后的标准输出文件。导出数据后,若还需继续收集剩余标注,可再将阈值改回5。注意:此操作会触发已完成任务的聚合流程,可能影响后续标注任务分配,操作前需确认作业处于运行状态。
如果上述方法都无法满足需求,确实会对标注作业的灵活性造成明显限制。后续创建标注作业时,可以考虑以下优化方向:
- 将大型标注作业拆分为多个小型作业,降低单批任务风险,便于提前获取部分结果
- 配置作业时启用增量输出机制(若支持),让系统定期导出已完成的标注数据
- 基于自定义标注工作流,通过Lambda函数实时捕获工作者的标注数据,并存入自主管理的存储系统(如S3或数据库),完全掌控数据获取时机
内容的提问来源于stack exchange,提问作者Qazir Wazowski
相关产品推荐
相关产品推荐

