本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
测试标注前和标注后 Lambda 函数
您可以在 Lambda 控制台中测试注释前和注释后 Lambda 函数。如果您是 Lambda 的新用户,可以使用《 Amazon Lambda 开发人员指南》中的使用控制台创建 Lambda 函数教程,了解如何在控制台中测试或调用您的 Lambda 函数。您可以使用本页上的章节来学习如何测试通过 Amazon Serverless Application Repository () SAR 提供的 Ground Truth 注释前和注释后模板。
先决条件
您必须执行以下操作才能使用本页上描述的测试。
-
您需要访问 Lambda 控制台,还需要创建和调用 Lambda 函数的权限。要了解如何设置这些权限,请参阅授予创建和选择 Amazon 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 Amazon Serverless Application Repository und Truth SAR () 配方时创建的预注解 Lambda 函数。
测试 Ground Truth SAR 配方预注释 Lambda 函数
-
在 Lambda 控制台中打开函数页面
。 -
选择从 Ground Truth SAR 配方中部署的预注解函数。此函数的名称类似于
serverlessrepo-aws-sagema-GtRecipePreHumanTaskFunc-
。<id>
-
在代码来源部分中,选择测试旁边的箭头。
-
选择配置测试事件。
-
保持选中创建新测试事件选项。
-
在事件模板下,选择 G SageMakerround Truth PreHumanTask。
-
为您的测试指定事件名称。
-
选择创建。
-
再次选择测试旁边的箭头,您应该会看到您创建的测试已选中,在事件名称旁用点表示。如果未选中,请选择该测试。
-
选择测试来运行测试。
运行测试后,您可以看到执行结果。在函数日志中,您应该会看到类似于以下内容的响应:
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 Amazon Serverless Application Repository und Truth SAR () 配方时创建的注释后 Lambda 函数。
测试 Ground Truth SAR 配方注释后 Lambda
-
在 Lambda 控制台中打开函数页面
。 -
选择从 Ground Truth SAR 配方中部署的后期注释函数。此函数的名称类似于
serverlessrepo-aws-sagema-GtRecipeAnnotationConsol-
。<id>
-
在代码来源部分中,选择测试旁边的箭头。
-
选择配置测试事件。
-
保持选中创建新测试事件选项。
-
在事件模板下,选择 G SageMakerround Truth AnnotationConsolidation。
-
为您的测试指定事件名称。
-
对提供的模板代码进行如下修改:
-
将中的
roleArn
Amazon 资源名称 (ARN) 替换为您用于创建标签任务的 SageMaker 执行角色。ARN -
将URI中的
s3Uri
S3 替换为您添加到 Amazon S3 中的
文件。URIsample-annotations.json
进行这些修改后,您的测试应类似于以下内容:
{ "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" } } -
-
选择创建。
-
再次选择测试旁边的箭头,您应该会看到您创建的测试已选中,在事件名称旁用点表示。如果未选中,请选择该测试。
-
选择测试来运行测试。
运行测试后,您应该会在函数日志中看到 -- Consolidated Output
--
部分,其中包含 sample-annotations.json
中包括的所有注释的列表。