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

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

您可以在 Lambda 控制台中测试注释前和注释后 Lambda 函数。如果您是 Lambda 的新用户,可以使用《Amazon Lambda 开发人员指南》中的使用控制台创建 Lambda 函数教程,了解如何在控制台中测试或调用您的 Lambda 函数。

您可以使用本页上的各部分了解如何测试通过 Amazon Serverless Application Repository (SAR) 提供的 Ground Truth 注释前和注释后模板。

先决条件

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

  • 您需要访问 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 执行角色访问 S3 中的注释数据文件 sample-annotations.json

测试注释前 Lambda 函数

使用以下过程测试在部署 Ground Truth Amazon Serverless Application Repository (SAR) 配方时创建的注释前 Lambda 函数。

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

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

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

  4. 选择配置测试事件

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

  6. 事件模板下,选择 SageMaker Ground 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 函数

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

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

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

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

  4. 选择配置测试事件

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

  6. 事件模板下,选择 SageMaker Ground Truth AnnotationConsolidation

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

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

    • roleArn 中的 Amazon 资源名称 (ARN) 替换为用于创建标注作业的 SageMaker 执行角色的 ARN。

    • s3Uri 中的 S3 URI 替换为添加到 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 中包括的所有注释的列表。