Création d'une tâche d'étiquetage (API) - Amazon SageMaker

Création d'une tâche d'étiquetage (API)

Pour créer une tâche d'étiquetage à l'aide de l'API Amazon SageMaker, utilisez l'opération CreateLabelingJob. Pour obtenir des instructions spécifiques sur la création d'une tâche d'étiquetage pour un type de tâche intégré, consultez cette page de type de tâche. Pour savoir comment créer une tâche d'étiquetage en streaming, c'est-à-dire une tâche d'étiquetage qui s'exécute perpétuellement, veuillez consulter Créer une tâche d'étiquetage en streaming.

Pour utiliser l'opération CreateLabelingJob, vous avez besoin des éléments suivants :

  • Un modèle de tâche employé (UiTemplateS3Uri) ou un ARN d'interface utilisateur de tâche humaine (HumanTaskUiArn) dans Amazon S3.

    • Pour les tâches de nuage de points 3D, les tâches de détection et de suivi d'objets vidéo et les tâches NER, utilisez l'ARN répertorié dans HumanTaskUiArn pour votre type de tâche.

    • Si vous utilisez un type de tâche intégré autre que des tâches de nuage de points 3D, vous pouvez ajouter vos instructions de travail à l'un des modèles prédéfinis et enregistrer le modèle (avec une extension .html ou .liquid) dans votre compartiment S3. Recherchez les modèles de pré-génération sur votre page de type de tâche.

    • Si vous utilisez un flux de travail d'étiquetage personnalisé, vous pouvez créer un modèle personnalisé et l'enregistrer dans votre compartiment S3. Pour savoir comment créer un modèle de travail personnalisé, veuillez consulter Étape 2 : Création de votre modèle de tâche employé personnalisée. Pour connaître les éléments HTML personnalisés que vous pouvez utiliser pour personnaliser votre modèle, veuillez consulter Référence des éléments HTML crowd. Pour obtenir un référentiel de modèles de démonstration pour divers types de tâches d'étiquetage, veuillez consulter les Exemples d'interface utilisateur de tâche pour Amazon SageMaker Ground Truth.

  • Un fichier manifeste source qui spécifie vos données source dans Amazon S3. Indiquer l'emplacement de votre fichier manifeste source dans ManifestS3Uri. Pour de plus amples informations sur la création d'un manifeste d'entrée, veuillez consulter Données d'entrée. Si vous créez une tâche d'étiquetage en streaming, cette option est facultative. Pour savoir comment créer une tâche d'étiquetage en streaming, veuillez consulter Créer une tâche d'étiquetage en streaming.

  • Un compartiment Amazon S3 pour stocker vos données de sortie. Vous spécifiez ce compartiment et, éventuellement, un préfixe dans S3OutputPath.

  • Un fichier de configuration de catégorie d'étiquette. Chaque nom de catégorie d'étiquette doit être unique. Spécifiez l'emplacement de ce fichier dans Amazon S3 à l'aide du paramètre LabelCategoryConfigS3Uri. Le format et les catégories d'étiquettes de ce fichier dépendent du type de tâche que vous utilisez :

    • Pour la classification des images et la classification de texte (à étiquette unique et multiple), vous devez spécifier au moins deux catégories d'étiquettes. Pour tous les autres types de tâches, le nombre minimum de catégories d'étiquettes requises est une.

    • Pour les tâches de reconnaissance des entités nommées, vous devez fournir des instructions pour les employés dans ce fichier. Pour obtenir plus de détails et voir un exemple, veuillez consulter Fournir des instructions aux employés dans un fichier de configuration de catégorie d'étiquette.

    • Pour le type de tâche nuage de points 3D et de trame vidéo, utilisez le format Créer un fichier de configuration de catégorie d'étiquetage avec les attributs de catégorie d'étiquette et de trame.

    • Pour tous les autres types de tâches intégrées et de tâches personnalisées, votre fichier de configuration de catégorie d'étiquettes doit être un fichier JSON au format suivant. Identifiez les étiquettes que vous souhaitez utiliser en remplaçant label_1, label_2,...,label_n par vos catégories d'étiquettes.

      { "document-version": "2018-11-28" "labels": [ {"label": "label_1"}, {"label": "label_2"}, ... {"label": "label_n"} ] }
  • Un rôle AWS Identity and Access Management (IAM) auquel est attachée la stratégie gérée IAM AmazonSageMakerGroundTruthExecution et disposant des autorisations d'accès à vos compartiments S3. Spécifiez ce rôle dans RoleArn. Pour en savoir plus sur cette stratégie, veuillez consulter Utiliser les stratégies gérées IAM avec Ground Truth. Si vous avez besoin d'autorisations plus détaillées, veuillez consulter Attribuer des autorisations IAM pour utiliser Ground Truth.

    Si le nom de votre compartiment en entrée ou en sortie ne contient pas sagemaker, vous pouvez attacher une stratégie similaire à la suivante au rôle transmis à l'opération 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 Amazon Resource Name (ARN) de fonction AWS Lambda de pré-annotation et de post-annotation (ou de consolidation des annotations) pour traiter vos données d'entrée et de sortie.

    • Les fonctions Lambda sont prédéfinies dans chaque région AWS pour les types de tâches intégrés. Pour trouver l'ARN Lambda de pré-annotation pour votre région, veuillez consulter PreHumanTaskLambdaArn. Pour trouver l'ARN Lambda de consolidation des annotations pour votre région, veuillez consulter AnnotationConsolidationLambdaArn.

    • Pour les flux d'étiquetage personnalisés, vous devez fournir un ARN Lambda de pré- et post-annotation personnalisé. Pour savoir comment créer ces fonctionnalités Lambda, veuillez consulter Étape 3 : Traitement avec AWS Lambda.

  • Un ARN de l'équipe de travail que vous définissez dans WorkteamArn. Vous recevez un ARN d'équipe de travail lorsque vous vous abonnez à une main-d'œuvre de fournisseur ou créez une équipe de travail privée. Si vous créez une tâche d'étiquetage pour un type de tâche de nuage de points ou de trame vidéo, vous ne pouvez pas utiliser la main-d'œuvre Amazon Mechanical Turk. Pour tous les autres types de tâches, pour utiliser la main-d'œuvre Mechanical Turk, utilisez l'ARN suivant. Remplacez region par la région AWS que vous utilisez pour créer la tâche d'étiquetage ou les boucles humaines.

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

    Si vous utilisez de la main-d'œuvre Amazon Mechanical Turk, utilisez le paramètre ContentClassifiers dans DataAttributes de InputConfig pour déclarer que votre contenu ne contient pas d'informations personnelles identifiables ni de contenu pour adultes.

    Ground Truth nécessite que vos données source soient exemptes de données d'identification personnelle (PII) si vous utilisez la main-d'œuvre de Mechanical Turk. Si vous utilisez Mechanical Turk et que vous ne spécifiez pas que vos données d'entrée sont exemptes de PII à l'aide de l'indicateur FreeOfPersonallyIdentifiableInformation, votre tâche d'étiquetage échouera. Utilisez l'indicateur FreeOfAdultContent pour déclarer que vos données source sont exemptes de contenu pour adultes. SageMaker peut restreindre les employés d'Amazon Mechanical Turk qui peuvent visualiser votre tâche si elle contient du contenu pour adultes.

    Pour en savoir plus sur les équipes de travail et la main-d'œuvre, veuillez consulter Création et gestion de mains-d'œuvres.

  • Si vous utilisez la main-d'œuvre Mechanical Turk, vous devez spécifier le prix que vous payerez aux employés pour effectuer une seule tâche dans PublicWorkforceTaskPrice.

  • Pour configurer la tâche, vous devez fournir une description et un titre de tâche, respectivement à l'aide de TaskDescription et TaskTitle. Le cas échéant, vous pouvez fournir des limites de temps qui contrôlent la durée de travail des employés sur une tâche individuelle (TaskTimeLimitInSeconds) et combien de temps les tâches restent disponibles pour les employés (TaskAvailabilityLifetimeInSeconds) dans le portail employé.

  • (Facultatif) Pour certains types de tâches, plusieurs collaborateurs peuvent étiqueter un seul objet de données (en saisissant un nombre supérieur à un pour le paramètre NumberOfHumanWorkersPerDataObject). Pour de plus amples informations sur la consolidation des annotations, veuillez consulter Consolider les annotations.

  • (Facultatif) Pour créer une tâche d'étiquetage automatisé des données, spécifiez l'un des ARN répertoriés dans LabelingJobAlgorithmSpecificationArn dans LabelingJobAlgorithmsConfig. Cet ARN identifie l'algorithme utilisé dans la tâche d'étiquetage automatisé des données. Le type de tâche associé à cet ARN doit correspondre au type de tâche du PreHumanTaskLambdaArn et AnnotationConsolidationLambdaArn que vous spécifiez. L'étiquetage automatisé des données est pris en charge pour les types de tâches suivants : classification d'image, cadre de délimitation, segmentation sémantique et classification de texte. Le nombre minimum d'objets autorisés pour l'étiquetage automatisé des données est de 1 250, mais nous suggérons fortement de fournir un minimum de 5 000 objets. Pour en savoir plus sur les tâches d'étiquetage automatisé des données, veuillez consulter Automatiser l'étiquetage des données.

  • (Facultatif) Vous pouvez fournir des StoppingConditions qui provoquent l'arrêt de la tâche d'étiquetage si l'une des conditions est remplie. Vous pouvez utiliser les conditions d'arrêt pour contrôler le coût de la tâche d'étiquetage.

Exemples

Les exemples de code suivants illustrent comment créer une tâche d'étiquetage à l'aide de CreateLabelingJob. Pour d'autres exemples, nous vous recommandons d'utiliser l'un des Bloc-notes Jupyter Ground Truth Labeling Jobs (Tâches d'étiquetage Ground Truth) dans la section Exemples de SageMaker d'une instance de bloc-notes SageMaker. Pour savoir comment utiliser un exemple de bloc-notes à partir des exemples SageMaker, veuillez consulter Exemples de blocs-notes. Vous pouvez également voir ces exemples de blocs-notes sur GitHub dans le Répertoire d'exemples SageMaker.

AWS SDK for Python (Boto3)

Voici un exemple de requête du kit SDK AWS Python (Boto3) pour créer une tâche d'étiquetage pour un type de tâche intégré dans la région USA-Est (Virginie du Nord) à l'aide d'une main-d'œuvre privée. Remplacez tout letexte en italique rouge par les ressources et les spécifications de votre tâche d'étiquetage.

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

Voici un exemple de requête AWS CLI pour créer une tâche d'étiquetage pour un type de tâche intégré dans la région Est des USA-Est (Virginie du Nord ) à l'aide de la main-d'œuvre Amazon Mechanical Turk. Pour de plus amples informations, veuillez consulter start-human-loop dans la Référence des commandes AWS CLI. Remplacez tout letexte en italique rouge par les ressources et les spécifications de votre tâche d'étiquetage.

$ 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" } }'

Pour de plus amples informations sur cette opération, veuillez consulter CreateLabelingJob. Pour de plus amples informations sur l'utilisation d'autres kits SDK spécifiques au langage, veuillez consulter Voir aussi dans la rubrique CreateLabelingJobs.