Crear un trabajo de etiquetado (API) - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Crear un trabajo de etiquetado (API)

Para crear un trabajo de etiquetado mediante la SageMaker API de Amazon, se utiliza la CreateLabelingJoboperación. 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 Crear un trabajo de etiquetado en streaming.

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 Paso 2: Creación de la plantilla de tareas de etiquetado personalizada. Para conocer los elementos HTML personalizados que puede utilizar para personalizar la plantilla, consulte Referencia de Crowd HTML Elements. Para ver un repositorio de plantillas de demostración para diversas tareas de etiquetado, consulta las interfaces de usuario de tareas de muestra de Amazon SageMaker Ground Truth.

  • 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 Crear un trabajo de etiquetado en streaming.

  • 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 Crear un 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 AWS Identity and Access Management (IAM) con la política de IAM AmazonSageMakerGroundTruthExecutionadministrada adjunta y con permisos para acceder a sus buckets de S3. Especifique este rol en RoleArn. Para obtener más información sobre esta política, consulte Utilice políticas IAM gestionadas con Ground Truth. Si necesita permisos pormenorizados, consulte Asigne IAM permisos 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.

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

    • Las funciones Lambda están predefinidas en cada AWS región para los tipos de tareas integradas. Para encontrar el ARN Lambda previo a la anotación correspondiente a su región, consulte. PreHumanTaskLambdaArn Para encontrar el ARN Lambda de consolidación de anotaciones de su región, consulte. AnnotationConsolidationLambdaArn

    • Para flujos de trabajo de etiquetado personalizados, debe proporcionar un ARN de Lambda de preanotación y postanotación personalizado. Para obtener información sobre cómo crear estas funciones de Lambda, consulte Paso 3: Procesar con AWS Lambda.

  • 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 fotograma de vídeo o una tarea de tipo nube de puntos, no podrá utilizar personal. Amazon Mechanical Turk Para todos los demás tipos de tareas, para utilizar el personal de Mechanical Turk, utilice el siguiente ARN. regionReemplácela por la AWS región que está utilizando para 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. Usa la FreeOfAdultContent bandera para declarar que los datos introducidos no contienen contenido para adultos. SageMaker puede restringir el número de trabajadores de Amazon Mechanical Turk que pueden ver tu tarea si contiene contenido para adultos.

    Para obtener más información sobre los equipos de trabajo y el personal, consulte Creación y gestión de 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 Consolidar anotaciones.

  • (Opcional) Para crear un trabajo de etiquetado de datos automatizado, especifique uno de los ARN que figuran en LabelingJobAlgorithmSpecificationArn. 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 Automatizar el 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. Para ver ejemplos adicionales, le recomendamos que utilice uno de los cuadernos Jupyter de Ground Truth Labeling Jobs en la sección de SageMaker ejemplos de una SageMaker instancia de cuaderno. Para aprender a usar un ejemplo de cuaderno de los SageMaker ejemplos, consulte. Ejemplo de cuadernos También puedes ver estos cuadernos de ejemplo GitHub en el repositorio de SageMaker ejemplos.

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

El siguiente es un ejemplo de una solicitud de AWS CLI para crear un trabajo de etiquetado para un tipo de tarea integrada en la región EE.UU. Este (Virginia del Norte) con el personal de Amazon Mechanical Turk. Para obtener más información, consulte start-human-loop en la Referencia de los comandos de 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, consulte CreateLabelingJob. Para aprender a utilizar otros SDK específicos del lenguaje, consulte Vea también en el tema CreateLabelingJobs.