测试标注前和标注后 Lambda 函数 - Amazon SageMaker

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

测试标注前和标注后 Lambda 函数

您可以在 Lambda 控制台中测试注释前和注释后 Lambda 函数。如果您是 Lambda 的新用户,可以使用《 AWS Lambda 开发人员指南》中的使用控制台创建 Lambda 函数教程,了解如何在控制台中测试或调用您的 Lambda 函数。您可以使用本页上的章节来学习如何测试通过 AWS Serverless Application Repository () SAR 提供的 Ground Truth 注释前和注释后模板。

先决条件

您必须执行以下操作才能使用本页上描述的测试。

  • 您需要访问 Lambda 控制台,还需要创建和调用 Lambda 函数的权限。要了解如何设置这些权限,请参阅授予创建和选择 AWS Lambda 函数的权限

  • 如果您尚未部署 Ground Trut SAR h 配方,请使用中的步骤使用 Ground Truth 模板创建 Lambda 函数 进行部署。

  • 要测试注释后 Lambda 函数,您必须在 Amazon S3 中拥有一个包含示例注释数据的数据文件。对于简单的测试,您可以将以下代码复制并粘贴到一个文件中,将此文件另存为 sample-annotations.json将此文件上传到 Amazon S3。请注意此文件的 S3URI,您需要这些信息来配置注释后的 Lambda 测试。

    [{"datasetObjectId":"0","dataObject":{"content":"To train a machine learning model, you need a large, high-quality, labeled dataset. Ground Truth helps you build high-quality training datasets for your machine learning models."},"annotations":[{"workerId":"private.us-west-2.0123456789","annotationData":{"content":"{\"crowd-entity-annotation\":{\"entities\":[{\"endOffset\":8,\"label\":\"verb\",\"startOffset\":3},{\"endOffset\":27,\"label\":\"adjective\",\"startOffset\":11},{\"endOffset\":33,\"label\":\"object\",\"startOffset\":28},{\"endOffset\":51,\"label\":\"adjective\",\"startOffset\":46},{\"endOffset\":65,\"label\":\"adjective\",\"startOffset\":53},{\"endOffset\":74,\"label\":\"adjective\",\"startOffset\":67},{\"endOffset\":82,\"label\":\"adjective\",\"startOffset\":75},{\"endOffset\":102,\"label\":\"verb\",\"startOffset\":97},{\"endOffset\":112,\"label\":\"verb\",\"startOffset\":107},{\"endOffset\":125,\"label\":\"adjective\",\"startOffset\":113},{\"endOffset\":134,\"label\":\"adjective\",\"startOffset\":126},{\"endOffset\":143,\"label\":\"object\",\"startOffset\":135},{\"endOffset\":169,\"label\":\"adjective\",\"startOffset\":153},{\"endOffset\":176,\"label\":\"object\",\"startOffset\":170}]}}"}}]},{"datasetObjectId":"1","dataObject":{"content":"Sift 3 cups of flour into the bowl."},"annotations":[{"workerId":"private.us-west-2.0123456789","annotationData":{"content":"{\"crowd-entity-annotation\":{\"entities\":[{\"endOffset\":4,\"label\":\"verb\",\"startOffset\":0},{\"endOffset\":6,\"label\":\"number\",\"startOffset\":5},{\"endOffset\":20,\"label\":\"object\",\"startOffset\":15},{\"endOffset\":34,\"label\":\"object\",\"startOffset\":30}]}}"}}]},{"datasetObjectId":"2","dataObject":{"content":"Jen purchased 10 shares of the stock on Janurary 1st, 2020."},"annotations":[{"workerId":"private.us-west-2.0123456789","annotationData":{"content":"{\"crowd-entity-annotation\":{\"entities\":[{\"endOffset\":3,\"label\":\"person\",\"startOffset\":0},{\"endOffset\":13,\"label\":\"verb\",\"startOffset\":4},{\"endOffset\":16,\"label\":\"number\",\"startOffset\":14},{\"endOffset\":58,\"label\":\"date\",\"startOffset\":40}]}}"}}]},{"datasetObjectId":"3","dataObject":{"content":"The narrative was interesting, however the character development was weak."},"annotations":[{"workerId":"private.us-west-2.0123456789","annotationData":{"content":"{\"crowd-entity-annotation\":{\"entities\":[{\"endOffset\":29,\"label\":\"adjective\",\"startOffset\":18},{\"endOffset\":73,\"label\":\"adjective\",\"startOffset\":69}]}}"}}]}]
  • 您必须使用中的授予注释后 Lambda 访问注释的权限说明向注释后 Lambda 函数的执行角色授予权限,以承担 SageMaker 您用于创建标签任务的执行角色。注释后 Lambda 函数使用 SageMaker 执行角色访问 S3 中的注解数据文件sample-annotations.json

测试注释前 Lambda 函数

使用以下过程来测试在部署 Gro AWS Serverless Application Repository und Truth SAR () 配方时创建的预注解 Lambda 函数。

测试 Ground Truth SAR 配方预注释 Lambda 函数
  1. 在 Lambda 控制台中打开函数页面

  2. 选择从 Ground Truth SAR 配方中部署的预注解函数。此函数的名称类似于 serverlessrepo-aws-sagema-GtRecipePreHumanTaskFunc-<id>

  3. 代码来源部分中,选择测试旁边的箭头。

  4. 选择配置测试事件

  5. 保持选中创建新测试事件选项。

  6. 事件模板下,选择 G SageMakerround Truth PreHumanTask

  7. 为您的测试指定事件名称

  8. 选择创建

  9. 再次选择测试旁边的箭头,您应该会看到您创建的测试已选中,在事件名称旁用点表示。如果未选中,请选择该测试。

  10. 选择测试来运行测试。

运行测试后,您可以看到执行结果。在函数日志中,您应该会看到类似于以下内容的响应:

START RequestId: cd117d38-8365-4e1a-bffb-0dcd631a878f Version: $LATEST Received event: { "version": "2018-10-16", "labelingJobArn": "arn:aws:sagemaker:us-east-2:123456789012:labeling-job/example-job", "dataObject": { "source-ref": "s3://sagemakerexample/object_to_annotate.jpg" } } {'taskInput': {'taskObject': 's3://sagemakerexample/object_to_annotate.jpg'}, 'isHumanAnnotationRequired': 'true'} END RequestId: cd117d38-8365-4e1a-bffb-0dcd631a878f REPORT RequestId: cd117d38-8365-4e1a-bffb-0dcd631a878f Duration: 0.42 ms Billed Duration: 1 ms Memory Size: 128 MB Max Memory Used: 43 MB

在此响应中,我们可以看到 Lambda 函数的输出与所需的注释前响应语法匹配:

{'taskInput': {'taskObject': 's3://sagemakerexample/object_to_annotate.jpg'}, 'isHumanAnnotationRequired': 'true'}

测试注释后 Lambda 函数

使用以下过程来测试在部署 Gro AWS Serverless Application Repository und Truth SAR () 配方时创建的注释后 Lambda 函数。

测试 Ground Truth SAR 配方注释后 Lambda
  1. 在 Lambda 控制台中打开函数页面

  2. 选择从 Ground Truth SAR 配方中部署的后期注释函数。此函数的名称类似于 serverlessrepo-aws-sagema-GtRecipeAnnotationConsol-<id>

  3. 代码来源部分中,选择测试旁边的箭头。

  4. 选择配置测试事件

  5. 保持选中创建新测试事件选项。

  6. 事件模板下,选择 G SageMakerround Truth AnnotationConsolidation

  7. 为您的测试指定事件名称

  8. 对提供的模板代码进行如下修改:

    • 将中的 roleArn Amazon 资源名称 (ARN) 替换为您用于创建标签任务的 SageMaker 执行角色。ARN

    • 将URI中的 s3Uri S3 替换为您添加到 Amazon S3 中的sample-annotations.json文件。URI

    进行这些修改后,您的测试应类似于以下内容:

    { "version": "2018-10-16", "labelingJobArn": "arn:aws:sagemaker:us-east-2:123456789012:labeling-job/example-job", "labelAttributeName": "example-attribute", "roleArn": "arn:aws:iam::222222222222:role/sm-execution-role", "payload": { "s3Uri": "s3://your-bucket/sample-annotations.json" } }
  9. 选择创建

  10. 再次选择测试旁边的箭头,您应该会看到您创建的测试已选中,在事件名称旁用点表示。如果未选中,请选择该测试。

  11. 选择测试来运行测试。

运行测试后,您应该会在函数日志中看到 -- Consolidated Output -- 部分,其中包含 sample-annotations.json 中包括的所有注释的列表。