Testar as funções do Lambda de pré-anotação e pós-anotação - Amazon SageMaker

Testar as funções do Lambda de pré-anotação e pós-anotação

Você pode testar suas funções do Lambda de pré-anotação e pós-anotação no console Lambda. Se você for um novo usuário do Lambda, poderá saber como testar ou invocar suas funções do Lambda no console usando o tutorial Criar uma função do Lambda com o console no Guia do desenvolvedor AWS Lambda. Você pode usar as seções desta página para aprender como testar os modelos de pré-anotação e pós-anotação do Ground Truth fornecidos por meio de um (SAR) AWS Serverless Application Repository.

Pré-requisitos

Você deve fazer o seguinte para usar os testes descritos nesta página:

  • Você precisa acessar o console Lambda e precisa de permissão para criar e invocar funções do Lambda. Para saber como configurar essas permissões, consulte Conceder permissão para criar e selecionar uma função AWS Lambda.

  • Se você não implantou a fórmula SAR do Ground Truth, use o procedimento em Criar funções do Lambda usando modelos Ground Truth para fazer isso.

  • Para testar a função do Lambda de pós-anotação, você deve ter um arquivo de dados no Amazon S3 com dados de anotação de amostra. Para um teste simples, você pode copiar e colar o código a seguir em um arquivo, salvá-lo como sample-annotations.json e fazer o upload desse arquivo no Amazon S3. Observe o URI do S3 desse arquivo. Você precisa dessas informações para configurar o teste Lambda pós-anotação.

    [{"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}]}}"}}]}]
  • Você deve usar as instruções Conceder permissões Lambda de pós-anotação para acessar a anotação para dar permissão ao perfil de execução da função do Lambda de pós-anotação para assumir o perfil de execução do SageMaker que você usa para criar o trabalho de rotulagem. A função do Lambda de pós-anotação usa o perfil de execução do SageMaker para acessar o arquivo de dados de anotação, sample-annotations.json, no S3.

Sua função do Lambda de pré-anotação

Use o procedimento a seguir para testar a função do Lambda de pré-anotação criada quando você implantou a fórmula do AWS Serverless Application Repository Ground Truth (SAR).

Teste a função do Lambda de pré-anotação da fórmula Ground Truth SAR
  1. Abra a página Funções no console do Lambda.

  2. Selecione a função de pré-anotação que foi implantada a partir da fórmula SAR do Ground Truth. O nome dessa função é semelhante a serverlessrepo-aws-sagema-GtRecipePreHumanTaskFunc-<id>.

  3. Na seção Origem do código, selecione a seta ao lado de Testar.

  4. Selecione Configurar evento de teste.

  5. Mantenha a opção Criar novo evento de teste selecionada.

  6. Em Modelo de evento, selecione SageMaker Ground Truth PreHumanTask.

  7. Dê ao seu teste um Nome do evento.

  8. Escolha Criar.

  9. Selecione a seta ao lado de Testar novamente e você verá que o teste que você criou está selecionado, indicado com um ponto ao lado do nome do evento. Se não estiver selecionado, selecione-o.

  10. Selecione Testar para executar o teste.

Depois de executar o teste, você pode ver os resultados da execução. Em Logs de função, você deverá ver a seguinte resposta da função:

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

Nessa resposta, podemos ver que a saída da função do Lambda corresponde à sintaxe de resposta de pré-anotação necessária:

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

Sua função do Lambda de pós-anotação

Use o procedimento a seguir para testar a função do Lambda de pós-anotação criada quando você implantou a fórmula do AWS Serverless Application Repository Ground Truth (SAR).

Teste a fórmula de SAR de Ground Truth após a anotação Lambda
  1. Abra a página Funções no console do Lambda.

  2. Selecione a função de pós-anotação que foi implantada a partir da fórmula SAR do Ground Truth. O nome dessa função é semelhante serverlessrepo-aws-sagema-GtRecipeAnnotationConsol-<id> a.

  3. Na seção Origem do código, selecione a seta ao lado de Testar.

  4. Selecione Configurar evento de teste.

  5. Mantenha a opção Criar novo evento de teste selecionada.

  6. Em Modelo de evento, selecione SageMaker Ground Truth AnnotationConsolidation.

  7. Dê ao seu teste um Nome do evento.

  8. Modifique o código do modelo de mapeamento da seguinte maneira:

    • Substitua o nome do recurso da Amazon (ARN) pelo ARN roleArn do perfil de execução do SageMaker que você usou para criar a tarefa de rotulagem.

    • Substitua o URI do S3 em s3Uri pelo URI do arquivo sample-annotations.json que você adicionou ao Amazon S3.

    Depois de fazer essas modificações, o teste deve ser semelhante ao seguinte:

    { "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. Escolha Criar.

  10. Selecione a seta ao lado de Testar novamente e você verá que o teste que você criou está selecionado, indicado com um ponto ao lado do nome do evento. Se não estiver selecionado, selecione-o.

  11. Selecione o Testar para executar o teste.

Depois de executar o teste, você deve ver uma -- Consolidated Output -- seção nos logs de funções, que contém uma lista de todas as anotações incluídas em sample-annotations.json.