测试注释前和注释后 Lambda 函数 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

您可以在 Lambda 控制台中测试注释前和注释后 Lambda 函数。如果您是 Lambda 的新用户,您可以学习如何测试,或者调用,您的 Lambda 函数在控制台中使用创建 Lambda 函数教程中的控制台Amazon Lambda开发人员指南 的第一个版本。

您可以使用本页上的部分了解如何测试通过Amazon Serverless Application Repository(特别行政区).

Prerequisites

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

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

  • 如果尚未部署 Ground Truth SAR 配方,请使用为自定义标签工作流创建 Lambda 函数来执行此操作。

  • 要测试注释后 Lambda 函数,您必须在 Amazon S3 中拥有包含示例注释数据的数据文件。对于简单测试,您可以将以下代码复制并粘贴到文件中,并将其保存为sample-annotations.json将此文件上传到 Amazon S3。请注意此文件的 S3 URI-您需要此信息来配置注释后 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 执行角色访问注释数据文件,sample-annotations.json,在 S3 中。

测试预注释 Lambda 函数

使用以下过程测试在部署 “Ground Truth” 时创建的预注释 Lambda 函数Amazon Serverless Application Repository(SAR) 食谱.

测试 Ground Truth SAR 配方预注释 Lambda 函数

  1. 打开函数在 Lambda 控制台中。

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

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

  4. Select配置测试事件

  5. 保留创建新的测试事件选项。

  6. UNDO事件模板中,选择SageMaker Ground Truth 标记

  7. 为您的测试提供一个Event name (事件名称)

  8. 选择 Create (创建)

  9. 选择测试,您应该看到您创建的测试已被选中,该测试由事件名称用点表示。如果未选择该选项,请将其选中。

  10. Select测试运行测试。

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

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 函数

使用以下过程测试在部署 “Ground Truth” 时创建的注释后 Lambda 函数Amazon Serverless Application Repository(SAR) 食谱.

测试 Ground Truth SAR 食谱后注释 Lambda

  1. 打开函数在 Lambda 控制台中。

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

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

  4. Select配置测试事件

  5. 保留创建新的测试事件选项。

  6. UNDO事件模板中,选择SageMaker Maker Maker Ground Truth 标记

  7. 为您的测试提供一个Event name (事件名称)

  8. 按如下所示修改模板代码:

    • 替换 Amazon 资源名称 (ARN)roleArn与您用于创建标记作业的 SageMaker 执行角色的 ARN 一起使用。

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

    在进行这些修改之后,测试看起来应当如下所示:

    { "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-exeuction-role", "payload": { "s3Uri": "s3://your-bucket/sample-annotations.json" } }
  9. 选择 Create (创建)

  10. 选择测试,您应该看到您创建的测试已被选中,该测试由事件名称用点表示。如果未选择该选项,请将其选中。

  11. 选择测试运行测试。

运行测试之后,应当看到-- Consolidated Output --部分中的函数日志,其中包含一个所有注释的列表。sample-annotations.json