Tester les fonctions Lambda de pré-annotation et post-annotation - Amazon SageMaker

Tester les fonctions Lambda de pré-annotation et post-annotation

Vous pouvez tester vos fonctions Lambda de pré-annotation et de post-annotation dans la console Lambda. Si vous débutez avec Lambda, vous pouvez apprendre à tester, ou invoquer, vos fonctions Lambda dans la console à l'aide du tutoriel Créer une fonction Lambdaavec la console dans le Guide du développeur AWS Lambda.

Vous pouvez utiliser les sections de cette page pour apprendre à tester les modèles de pré-annotation et de post-annotation Ground Truth fournis via un AWS Serverless Application Repository(SAR).

Prérequis

Vous devez effectuer les opérations suivantes pour utiliser les tests décrits sur cette page.

  • Vous devez accéder à la console Lambda, et vous avez besoin d'une autorisation pour créer et invoquer des fonctions Lambda. Pour savoir comment configurer ces autorisations, veuillez consulter Accorder l'autorisation de créer et de sélectionner une fonction AWS Lambda.

  • Si vous n'avez pas déployé la recette SAR Ground Truth, utilisez la procédure décrite dans Créer des fonctions Lambda pour un flux d'étiquetage personnalisé pour le faire.

  • Pour tester la fonction Lambda de post-annotation, vous devez disposer d'un fichier de données dans Amazon S3 avec des exemples de données d'annotation. Pour un test simple, vous pouvez copier et coller le code suivant dans un fichier et l'enregistrer sous sample-annotations.json et télécharger ce fichier sur Amazon S3. Notez l'URI S3 de ce fichier : vous avez besoin de ces informations pour configurer le test Lambda de post-annotation.

    [{"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}]}}"}}]}]
  • Vous devez utiliser les instructions de la section Accorder des autorisations Lambda de post-annotation pour accéder à l'annotation pour autoriser le rôle d'exécution de votre fonction Lambda de post-annotation à assumer le rôle d'exécution SageMaker que vous utilisez pour créer la tâche d'étiquetage. La fonction Lambda de post-annotation utilise le rôle d'exécution SageMaker pour accéder au fichier de données d'annotation sample-annotations.json dans S3.

Tester la fonction Lambda de pré-annotation

Utilisez la procédure suivante pour tester la fonction Lambda de pré-annotation créée lorsque vous avez déployé la recette AWS Serverless Application Repository (SAR) Ground Truth.

Tester la fonction Lambda de pré-annotation de la recette SAR Ground Truth

  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Sélectionnez la fonction de pré-annotation qui a été déployée à partir de la recette SAR Ground Truth. Le nom de cette fonction est similaire à serverlessrepo-aws-sagema-GtRecipePreHumanTaskFunc-<id>.

  3. Dans la section Code source, sélectionnez la flèche en regard de Test.

  4. Sélectionnez Configure test event (Configurer l'événement de test).

  5. Conserver l'option Create new test event (Création d'un événement de test) sélectionnée.

  6. Sous Event template (Modèle d'événement), sélectionnez SageMaker Ground Truth PreHumanTask.

  7. Donnez à votre test un Event name (Nom d'événement).

  8. Sélectionnez Create (Créer).

  9. Sélectionnez à nouveau la flèche en regard de Test et vous devriez voir que le test que vous avez créé est sélectionné, ce qui est indiqué par un point par le nom de l'événement. S'il n'est pas sélectionné, sélectionnez-le.

  10. Sélectionnez Test pour l'exécuter.

Après avoir exécuté le test, vous pouvez voir les Execution results (Résultats de l'exécution). Dans Function logs (Journaux de fonctions), la réponse devrait être similaire à ce qui suit :

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

Dans cette réponse, nous pouvons voir que la sortie de la fonction Lambda correspond à la syntaxe de réponse de pré-annotation requise :

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

Tester la fonction Lambda de post-annotation

Utilisez la procédure suivante pour tester la fonction Lambda de post-annotation créée lorsque vous avez déployé la recette AWS Serverless Application Repository (SAR) Ground Truth.

Tester la fonction Lambda de post-annotation de la recette SAR Ground Truth

  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Sélectionnez la fonction post-annotation qui a été déployée à partir de la recette SAR Ground Truth. Le nom de cette fonction est similaire à serverlessrepo-aws-sagema-GtRecipeAnnotationConsol-<id>.

  3. Dans la section Code source, sélectionnez la flèche en regard de Test.

  4. Sélectionnez Configure test event (Configurer l'événement de test).

  5. Conserver l'option Create new test event (Création d'un événement de test) sélectionnée.

  6. Sous Event template (Modèle d'événement), sélectionnez SageMaker Ground Truth AnnotationConsolidation.

  7. Donnez à votre test un Event name (Nom d'événement).

  8. Modifiez le code du modèle fourni comme suit :

    • Remplacez l'Amazon Resource Name (ARN) dans roleArn par l'ARN du rôle d'exécution SageMaker que vous avez utilisé pour créer la tâche d'étiquetage.

    • Remplacez l'URI S3 dans s3Uri avec l'URI du fichier sample-annotations.json que vous avez ajouté à Amazon S3.

    Après avoir apporté ces modifications, votre test doit se présenter comme suit :

    { "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. Sélectionnez Create (Créer).

  10. Sélectionnez à nouveau la flèche en regard de Test et vous devriez voir que le test que vous avez créé est sélectionné, ce qui est indiqué par un point par le nom de l'événement. S'il n'est pas sélectionné, sélectionnez-le.

  11. Sélectionnez le Test pour l'exécuter.

Une fois le test exécuté, vous devriez voir une section -- Consolidated Output -- dans les Function Logs (Journaux de fonctions), qui contient une liste de toutes les annotations incluses dans sample-annotations.json.