Criar um trabalho de rotulagem (API) - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criar um trabalho de rotulagem (API)

Para criar um trabalho de etiquetagem usando a SageMaker API da Amazon, você usa a CreateLabelingJoboperação. Para obter instruções específicas sobre como criar um trabalho de rotulagem para um tipo de tarefa integrada, consulte a página do tipo de tarefa em questão. Para saber como criar um trabalho de rotulagem de streaming, que é um trabalho de rotulagem que é executado perpetuamente, consulte Criar um trabalho de rotulagem de streaming.

Para usar a operação CreateLabelingJob, você precisa do seguinte:

  • Um modelo de tarefas do operador (UiTemplateS3Uri) ou um ARN de interface do usuário de tarefa humana (HumanTaskUiArn) no Amazon S3.

    • Para trabalhos de nuvem de pontos 3D, trabalhos de monitoramento, de detecção de objetos de vídeo e trabalhos NER, use o ARN listado em HumanTaskUiArn para seu tipo de tarefa.

    • Se estiver usando um tipo de tarefa integrada que não seja uma tarefa de nuvem de pontos 3D, você poderá adicionar as instruções do operador a um dos modelos pré-criados e salvar o modelo (usando uma extensão.html ou .liquid) no bucket do S3. Encontre os modelos de pré-compilação na página do tipo de tarefa em questão.

    • Se estiver usando um fluxo de trabalho de rotulagem personalizado, você poderá criar um modelo personalizado e salvar o modelo no bucket do S3. Para saber como criar um modelo de operador personalizado, consulte Etapa 2: Criar seu modelo de tarefa de operador personalizada. Para obter elementos HTML personalizados que você pode usar para personalizar o modelo, consulte Referência do Crowd HTML Elements. Para obter um repositório de modelos de demonstração para uma variedade de tarefas de rotulagem, consulte Amazon SageMaker Ground Truth Sample Task UIs.

  • Um arquivo manifesto de entrada que especifique os dados de entrada no Amazon S3. Especifique o local do arquivo manifesto de entrada no ManifestS3Uri. Para obter informações sobre como criar um manifesto de entrada, consulte Dados de entrada. Se você criar um trabalho de rotulagem de streaming, isso é opcional. Para saber como criar um trabalho de rotulagem de streaming, consulte Criar um trabalho de rotulagem de streaming.

  • Um bucket do Amazon S3 para armazenar seus dados de saída. Você especifica este bucket e, opcionalmente, um prefixo em S3OutputPath.

  • Um arquivo de configuração de categoria de rótulo. O nome de cada categoria de rótulo deve ser exclusivo. Especifique o local desse arquivo no Amazon S3 usando o parâmetro LabelCategoryConfigS3Uri. As categorias de rótulo e formato desse arquivo dependem do tipo de tarefa que você usa:

    • Para classificação de imagens e classificação de texto (rótulo único e múltiplos), você deve especificar pelo menos duas categorias de rótulos. Para todos os outros tipos de tarefas, o número mínimo de categorias de rótulos exigido é 01.

    • Para tarefas de reconhecimento de entidades nomeadas, você deve fornecer instruções de trabalhadores nesse arquivo. Para obter detalhes e um exemplo, consulte Forneça instruções de trabalho em um Arquivo de configuração de categoria de rótulo.

    • Para o tipo de tarefa de nuvem de pontos 3D e quadros de vídeo, use o formato em Criar um arquivo de configuração de categoria de rotulagem com atributos de categoria e quadro de rótulo.

    • Para todos os outros tipos de tarefa integradas e tarefas personalizadas, o arquivo de configuração da categoria de rótulo deve ser um arquivo JSON no seguinte formato. Identifique os rótulos que você deseja usar substituindo label_1, label_2, ..., label_n pelas categorias de rótulos.

      { "document-version": "2018-11-28" "labels": [ {"label": "label_1"}, {"label": "label_2"}, ... {"label": "label_n"} ] }
  • Uma função AWS Identity and Access Management (IAM) com a política AmazonSageMakerGroundTruthExecutiongerenciada do IAM anexada e com permissões para acessar seus buckets do S3. Especifique essa função em RoleArn. Para saber mais sobre essa política, consulte Use políticas IAM gerenciadas com Ground Truth. Se você precisar de permissões mais granulares, consulte Atribua IAM permissões para usar o Ground Truth.

    Se o nome do bucket de entrada ou saída não contiver sagemaker, você poderá anexar uma política à função passada para a operação CreateLabelingJob semelhante à seguinte.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my_input_bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::my_output_bucket/*" ] } ] }
  • Um Nome de recurso da Amazon (ARN) da função de pré e pós-anotação do AWS Lambda (ou consolidação de anotação) para processar seus dados de entrada e saída.

    • As funções Lambda são predefinidas em cada AWS região para tipos de tarefas incorporados. Para encontrar a pré-anotação Lambda ARN para sua região, consulte. PreHumanTaskLambdaArn Para encontrar o ARN Lambda de consolidação de anotações para sua região, consulte. AnnotationConsolidationLambdaArn

    • Para fluxos de trabalho de rotulagem personalizada, é necessário fornecer um ARN do Lambda de pré e pós-anotação. Para saber como criar essas funções do Lambda, consulte Etapa 3: Processando com AWS Lambda.

  • Um ARN de equipe de trabalho que você especifica em WorkteamArn. Você recebe um ARN de equipe de trabalho ao assinar uma força de trabalho de um fornecedor ou criar uma equipe de trabalho privada. Se você estiver criando um trabalho de rotulagem para um quadro de vídeo ou tipo de tarefa de nuvem de pontos, não poderá usar a Amazon Mechanical Turk força de trabalho. Para todos os outros tipos de tarefas, para usar a força de trabalho do Mechanical Turk, use o seguinte ARN. regionSubstitua pela AWS região que você está usando para criar o trabalho de etiquetagem.

    arn:aws:sagemaker:region:394669845002:workteam/public-crowd/default

    Se você usar a força de trabalho Amazon Mechanical Turk, use o parâmetro ContentClassifiers em DataAttributes de InputConfig para declarar que o seu conteúdo não contém informações de identificação pessoal e nem conteúdo adulto.

    O Ground Truth exige que seus dados de entrada estejam livres de informações de identificação pessoal (PII) quando você usa o Mechanical Turk. Se você usa o Mechanical Turk e não especifica que seus dados de entrada estão livres de PII usando o sinalizador FreeOfPersonallyIdentifiableInformation, seu trabalho de rotulagem irá falhar. Use a FreeOfAdultContent bandeira para declarar que seus dados de entrada estão livres de conteúdo adulto. SageMaker pode restringir os funcionários do Amazon Mechanical Turk que podem visualizar sua tarefa se ela contiver conteúdo adulto.

    Para saber mais sobre equipes de trabalho e forças de trabalho, consulte Criar e gerenciar forças de trabalho.

  • Se você usa a força de trabalho do Mechanical Turk, deve especificar o preço que pagará aos trabalhadores pela execução de uma única tarefa em PublicWorkforceTaskPrice.

  • Para configurar a tarefa, você deve fornecer uma descrição da tarefa e um título usando TaskDescription e TaskTitle, respectivamente. Opcionalmente, você pode fornecer limites de tempo que controlam por quanto tempo os operadores precisam trabalhar em uma tarefa individual (TaskTimeLimitInSeconds) e por quanto tempo as tarefas permanecem no portal do operador, disponível para os operadores (TaskAvailabilityLifetimeInSeconds).

  • (Opcional) Para alguns tipos de tarefa, é possível que vários operadores rotulem um único objeto de dados inserindo um número superior a um para o parâmetro NumberOfHumanWorkersPerDataObject. Para obter mais informações sobre consolidação de anotações, consulte Consolidar anotações.

  • (Opcional) Para criar um trabalho automatizado de rotulagem de dados, especifique um dos ARNs listados LabelingJobAlgorithmSpecificationArnemLabelingJobAlgorithmsConfig. Esse ARN identifica o algoritmo usado na tarefa automatizada de rotulagem de dados. O tipo de tarefa associado a esse ARN deve corresponder ao tipo de tarefa do PreHumanTaskLambdaArn e AnnotationConsolidationLambdaArn que você especificar. A rotulagem automatizada de dados é compatível com os seguintes tipos de tarefas: classificação de imagens, caixa delimitadora, segmentação de semântica e classificação de texto. O número mínimo de objetos permitidos para a rotulagem de dados automatizada é de 1.250, mas é altamente recomendável fornecer um mínimo de 5.000 objetos. Para saber mais sobre trabalhos de rotulagem de dados automatizados, consulteAutomatizar a rotulagem de dados.

  • (Opcional) Você pode fornecer StoppingConditions, que faz com que o trabalho de rotulagem seja interrompido se uma das condições for atendida. Você pode usar condições de interrupção para controlar o custo do trabalho de rotulagem.

Exemplos

Os exemplos de código a seguir demonstram como criar um trabalho de rotulagem usando CreateLabelingJob. Para obter exemplos adicionais, recomendamos que você use um dos cadernos Jupyter do Ground Truth Labeling Jobs na seção SageMaker Exemplos de uma SageMaker instância de notebook. Para saber como usar um exemplo de caderno a partir dos SageMaker Exemplos, consulteBlocos de anotações de exemplo. Você também pode ver esses exemplos de cadernos GitHub no repositório SageMaker Examples.

AWS SDK for Python (Boto3)

Veja a seguir um exemplo de uma solicitação do AWS SDK Python (Boto3) para criar um trabalho de rotulagem para tipos de tarefas integradas na região Leste dos EUA (Norte da Virgínia) usando uma força de trabalho privada. Substitua todo o texto em itálico vermelho pelos recursos e especificações do seu trabalho de rotulagem.

response = client.create_labeling_job( LabelingJobName="example-labeling-job", LabelAttributeName="label", InputConfig={ 'DataSource': { 'S3DataSource': { 'ManifestS3Uri': "s3://bucket/path/manifest-with-input-data.json" } }, 'DataAttributes': { 'ContentClassifiers': [ "FreeOfPersonallyIdentifiableInformation"|"FreeOfAdultContent", ] } }, OutputConfig={ 'S3OutputPath': "s3://bucket/path/file-to-store-output-data", 'KmsKeyId': "string" }, RoleArn="arn:aws:iam::*:role/*", LabelCategoryConfigS3Uri="s3://bucket/path/label-categories.json", StoppingConditions={ 'MaxHumanLabeledObjectCount': 123, 'MaxPercentageOfInputDatasetLabeled': 123 }, HumanTaskConfig={ 'WorkteamArn': "arn:aws:sagemaker:region:*:workteam/private-crowd/*", 'UiConfig': { 'UiTemplateS3Uri': "s3://bucket/path/custom-worker-task-template.html" }, 'PreHumanTaskLambdaArn': "arn:aws:lambda:us-east-1:432418664414:function:PRE-tasktype", 'TaskKeywords': [ "Images", "Classification", "Multi-label" ], 'TaskTitle': "Multi-label image classification task", 'TaskDescription': "Select all labels that apply to the images shown", 'NumberOfHumanWorkersPerDataObject': 1, 'TaskTimeLimitInSeconds': 3600, 'TaskAvailabilityLifetimeInSeconds': 21600, 'MaxConcurrentTaskCount': 1000, 'AnnotationConsolidationConfig': { 'AnnotationConsolidationLambdaArn': "arn:aws:lambda:us-east-1:432418664414:function:ACS-" }, Tags=[ { 'Key': "string", 'Value': "string" }, ] )
AWS CLI

Veja a seguir um exemplo de uma solicitação de AWS CLI para criar um trabalho de rotulagem para um tipo de tarefa incorporado na região Leste dos EUA (Norte da Virgínia) usando a força de trabalho do Amazon Mechanical Turk. Para obter mais informações, consulte start-human-loop na Referência de comandos da AWS CLI. Substitua todo o texto em itálico vermelho pelos recursos e especificações do seu trabalho de rotulagem.

$ aws --region us-east-1 sagemaker create-labeling-job \ --labeling-job-name "example-labeling-job" \ --label-attribute-name "label" \ --role-arn "arn:aws:iam::account-id:role/role-name" \ --input-config '{ "DataAttributes": { "ContentClassifiers": [ "FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent" ] }, "DataSource": { "S3DataSource": { "ManifestS3Uri": "s3://bucket/path/manifest-with-input-data.json" } } }' \ --output-config '{ "KmsKeyId": "", "S3OutputPath": "s3://bucket/path/file-to-store-output-data" }' \ --human-task-config '{ "AnnotationConsolidationConfig": { "AnnotationConsolidationLambdaArn": "arn:aws:lambda:us-east-1:432418664414:function:ACS-" }, "TaskAvailabilityLifetimeInSeconds": 21600, "TaskTimeLimitInSeconds": 3600, "NumberOfHumanWorkersPerDataObject": 1, "PreHumanTaskLambdaArn": "arn:aws:lambda:us-east-1:432418664414:function:PRE-tasktype", "WorkteamArn": "arn:aws:sagemaker:us-east-1:394669845002:workteam/public-crowd/default", "PublicWorkforceTaskPrice": { "AmountInUsd": { "Dollars": 0, "TenthFractionsOfACent": 6, "Cents": 3 } }, "TaskDescription": "Select all labels that apply to the images shown", "MaxConcurrentTaskCount": 1000, "TaskTitle": "Multi-label image classification task",, "TaskKeywords": [ "Images", "Classification", "Multi-label" ], "UiConfig": { "UiTemplateS3Uri": "s3://bucket/path/custom-worker-task-template.html" } }'

Para obter mais informações sobre essa operação, consulte CreateLabelingJob. Para obter informações sobre como usar outros SDKs específicos de linguagem, consulte Consulte também no tópico CreateLabelingJobs.