Crear un trabajo de etiquetado (API) - Amazon SageMaker AI

Crear un trabajo de etiquetado (API)

Para crear un trabajo de etiquetado mediante la API de Amazon SageMaker, utilice la operación CreateLabelingJob. Para obtener instrucciones específicas sobre cómo crear un trabajo de etiquetado para un tipo de tarea integrada, consulte la página de tipo de tarea. Para aprender a crear un trabajo de etiquetado en streaming, que es un trabajo de etiquetado que se ejecuta de forma permanente, consulte Creación de un trabajo de etiquetado en transmisión.

Para utilizar la operación CreateLabelingJob, necesita lo siguiente:

  • Una plantilla de tarea del trabajador (UiTemplateS3Uri) o un ARN de interfaz de usuario de tareas humanas (HumanTaskUiArn) en Amazon S3.

    • Para los trabajos de nube de puntos 3D, los trabajos de detección y seguimiento de objetos en vídeo y los trabajos de NER, utilice el ARN que aparece en HumanTaskUiArn para el tipo de tarea.

    • Si utiliza un tipo de tarea integrada que no sea una tarea de nube de puntos 3D, puede agregar las instrucciones de trabajo a una de las plantillas prediseñadas y guardar la plantilla (con una extensión .html o .liquid) en el bucket de S3. Busque las plantillas de prediseñadas en la página de tipo de tarea.

    • Si utiliza un flujo de trabajo de etiquetado personalizado, puede crear una plantilla personalizada y guardarla en el bucket de S3. Para aprender a crear una plantilla de trabajo personalizada, consulte Creación de una plantilla personalizada de tareas de trabajador. Para conocer los elementos HTML personalizados que puede utilizar para personalizar la plantilla, consulte Referencia de Crowd HTML Elements. Para acceder a un repositorio de plantillas de demostración con diversos tipos de tareas de etiquetado, consulte Amazon SageMaker Ground Truth Sample Task UIs.

  • Un archivo de manifiesto de entrada que especifica los datos de entrada en Amazon S3. Especifique la ubicación del archivo de manifiesto de entrada en ManifestS3Uri. Para obtener información sobre cómo crear un manifiesto de entrada, consulte Datos de entrada. Si crea un trabajo de etiquetado en streaming, esto es opcional. Para aprender a crear un trabajo de etiquetado en streaming, consulte Creación de un trabajo de etiquetado en transmisión.

  • Un bucket de Amazon S3 para almacenar los datos de salida. Usted especifica este bucket y, opcionalmente, un prefijo en S3OutputPath.

  • Un archivo de configuración de categoría de etiqueta. El nombre de cada categoría de etiquetas debe ser único. Especifique la ubicación de este archivo en Amazon S3 utilizando el parámetro LabelCategoryConfigS3Uri. El formato y las categorías de etiquetas de este archivo dependen del tipo de tarea que utilice:

    • Para clasificación de imágenes y textos (etiquetas únicas y múltiples), debe especificar al menos dos categorías de etiquetas. Para todos los demás tipos de tareas, el número mínimo de categorías de etiquetas requeridas es una.

    • En el caso de las tareas de reconocimiento de entidades con nombre, debe proporcionar las instrucciones de trabajo en este archivo. Consulte Proporcionar instrucciones para trabajadores en el archivo de configuración de categorías de etiquetas para obtener información detallada y un ejemplo.

    • Para el tipo de tarea de nube de puntos 3D y fotogramas de vídeo, utilice el formato de Archivo de configuración de categorías de etiquetado con atributos de categorías de etiquetas y fotogramas.

    • Para todos los demás tipos de tareas integradas y tareas personalizadas, el archivo de configuración de categoría de etiqueta debe ser un archivo JSON con el siguiente formato. Identifique las etiquetas que desea utilizar reemplazando label_1, label_2,... y label_n por las categorías de etiquetas.

      { "document-version": "2018-11-28", "labels": [ {"label": "label_1"}, {"label": "label_2"}, ... {"label": "label_n"} ] }
  • Un rol de AWS Identity and Access Management (IAM) con la política de IAM administrada por AmazonSageMakerGroundTruthExecution asociada y con permisos para acceder a los bucket de S3. Especifique este rol en RoleArn. Para obtener más información sobre esta política, consulte Utilice las políticas administradas de IAM con Ground Truth. Si necesita permisos pormenorizados, consulte Asigne permisos de IAM para usar Ground Truth.

    Si el nombre del bucket de entrada o salida no contiene sagemaker, puede asociar una política similar a la siguiente al rol que se pasa a la operación CreateLabelingJob.

    JSON
    { "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/*" ] } ] }
  • Un nombre de recurso de Amazon (ARN) de la función AWS Lambda de preanotación y postanotación (o de consolidación de anotaciones) para procesar los datos de entrada y de salida.

  • Un ARN de equipo de trabajo que especifique en WorkteamArn. Recibirá un ARN de equipo de trabajo cuando se suscriba a la plantilla de un proveedor o cree un equipo de trabajo privado. Si va a crear un trabajo de etiquetado para un tipo de tarea de fotogramas de vídeo o de nube de puntos, no puede utilizar el personal de Amazon Mechanical Turk. Para todos los demás tipos de tareas, para utilizar el personal de Mechanical Turk, utilice el siguiente ARN. Sustituya region por la región de AWS en la que vaya a crear el trabajo de etiquetado.

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

    Si utiliza el personal de Amazon Mechanical Turk, utilice el parámetro ContentClassifiers en DataAttributes para declarar que el contenido está libre de información de identificación personal o contenido para adultos.

    Ground Truth exige que sus datos de entrada estén libres de información de identificación personal (PII) si utiliza el personal de Mechanical Turk. Si utiliza Mechanical Turk y no especifica que los datos de entrada están libres de PII utilizando la marca FreeOfPersonallyIdentifiableInformation, el trabajo de etiquetado producirá un error. Utilice la marca FreeOfAdultContent para declarar que los datos de entrada están libres de contenido para adultos. SageMaker AI puede impedir que el personal de Amazon Mechanical Turk vea la tarea si tiene contenido para adultos.

    Para obtener más información sobre los equipos de trabajo y el personal, consulte Personal.

  • Si utiliza el personal de Mechanical Turk, debe especificar el precio que pagará a los trabajadores por realizar una tarea en PublicWorkforceTaskPrice.

  • Para configurar la tarea, debe proporcionar una descripción y un título utilizando TaskDescription y TaskTitle, respectivamente. Si lo desea, puede establecer límites de tiempo que controlen cuánto tiempo tienen que trabajar los trabajadores en una tarea individual (TaskTimeLimitInSeconds) y cuánto tiempo permanecen las tareas en el portal del trabajador a su disposición (TaskAvailabilityLifetimeInSeconds).

  • (Opcional) Para algunos tipos de tareas, puede hacer que varios trabajadores etiqueten un solo objeto de datos introduciendo un número mayor que uno en el parámetro NumberOfHumanWorkersPerDataObject. Para obtener más información acerca de la consolidación de anotaciones, consulte Consolidación de anotaciones.

  • (Opcional) Para crear un trabajo de etiquetado de datos automatizado, especifique uno de los ARN que aparecen en LabelingJobAlgorithmSpecificationARN en. LabelingJobAlgorithmsConfig Este ARN identifica el algoritmo trabajador en el trabajo de etiquetado de datos automatizado. El tipo de tarea asociado a este ARN debe coincidir con el tipo de tarea del PreHumanTaskLambdaArn y AnnotationConsolidationLambdaArn que especifique. El etiquetado de datos automatizado es compatible con los siguientes tipos de tareas: clasificación de imágenes, cuadro delimitador, segmentación semántica y clasificación de texto. El número mínimo de objetos permitidos para el etiquetado de datos automatizado es de 1250, pero recomendamos encarecidamente proporcionar un mínimo de 5000 objetos. Para obtener más información sobre los trabajos de etiquetado de datos automatizado, consulte Automatización del etiquetado de datos.

  • (Opcional) Puede proporcionar StoppingConditions que hagan que el trabajo de etiquetado se detenga si se cumple una de las condiciones. Puede utilizar las condiciones de detención para controlar el costo del trabajo de etiquetado.

Ejemplos

Los siguientes ejemplos de código muestran cómo crear un trabajo de etiquetado utilizando CreateLabelingJob. También puede ver estos cuadernos de ejemplo en GitHub en el repositorio de Ejemplos de SageMaker AI.

AWS SDK for Python (Boto3)

A continuación se ofrece un ejemplo de solicitud del SDK de AWS Python (Boto3) para crear un trabajo de etiquetado para un tipo de tarea integrada en la región Este de EE. UU. (Norte de Virginia). Sustituya todo el texto rojo en cursiva por los recursos y las especificaciones del trabajo de etiquetado.

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

A continuación se ofrece un ejemplo de solicitud de AWS CLI para crear un trabajo de etiquetado para un tipo de tarea integrada en la región Este de EE. UU. (Norte de Virginia) utilizando el personal de Amazon Mechanical Turk. Para obtener más información, consulte start-human-loop en la Referencia de comandos de la AWS CLI. Sustituya todo el texto rojo en cursiva por los recursos y las especificaciones del trabajo de etiquetado.

$ 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 obtener más información acerca de esta operación, vea CreateLabelingJob. Para aprender a utilizar otros SDK específicos del lenguaje, consulte Vea también en el tema CreateLabelingJobs.