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

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

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

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

您可以使用本页面上的部分了解如何测试通过Amazon Serverless Application Repository(SAR)。

先决条件

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

  • 您需要访问 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. UNDER活动模板,请选择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. UNDER活动模板,请选择SageMaker Ground Truth 注释后.

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

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

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

    • 在中替换 S3 URIs3Uri使用的 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-execution-role", "payload": { "s3Uri": "s3://your-bucket/sample-annotations.json" } }
  9. 选择 Create (创建)

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

  11. SELECT测试运行测试。

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