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

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Pour créer une tâche d'étiquetage à l'aide de l' SageMaker API Amazon, vous devez utiliser l'CreateLabelingJobopération. 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 un référentiel de modèles de démonstration pour diverses tâches d'étiquetage, consultez Amazon SageMaker Ground Truth Sample Task UI.

  • 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 politique IAM AmazonSageMakerGroundTruthExecutiongérée et avec les 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 AWS région pour les types de tâches intégrés. Pour trouver l'ARN Lambda préalable à l'annotation pour votre région PreHumanTaskLambdaArn, consultez. Pour trouver l'ARN Lambda de consolidation des annotations pour votre région, consultez. 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 une image vidéo ou un type de tâche de nuage de points, vous ne pouvez pas faire appel à la Amazon Mechanical Turk main-d'œuvre. Pour tous les autres types de tâches, pour utiliser la main-d'œuvre Mechanical Turk, utilisez l'ARN suivant. Remplacez regionpar la AWS région que vous utilisez pour créer la tâche d'étiquetage.

    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 travail de labélisation échouera. Utilisez le FreeOfAdultContent drapeau pour déclarer que vos données d'entrée sont exemptes de contenu réservé aux adultes. SageMaker peut empêcher les employés d'Amazon Mechanical Turk de consulter votre tâche si celle-ci contient du contenu réservé aux 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 automatique des données, spécifiez l'un des ARN répertoriés LabelingJobAlgorithmSpecificationArndansLabelingJobAlgorithmsConfig. 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 des exemples supplémentaires, nous vous recommandons d'utiliser l'un des blocs-notes Jupyter de Ground Truth Labeling Jobs dans la section Examples d'une SageMaker SageMaker instance de bloc-notes. Pour savoir comment utiliser un exemple de bloc-notes à partir des SageMaker exemples, consultezExemples de blocs-notes. Vous pouvez également consulter ces exemples de blocs-notes GitHub dans le référentiel SageMaker d'exemples.

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 demande AWS CLI visant à 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 du personnel d'Amazon Mechanical Turk. Pour plus d’informations, consultez la section start-human-loop dans la référence des commandes AWS CLI. Remplacez l'ensemble du texte 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 plus d'informations sur cette opération, consultez 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.