Creazione di un processo di etichettatura (API) - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di un processo di etichettatura (API)

Per creare un processo di etichettatura utilizzando l' SageMaker API Amazon, si utilizza l'CreateLabelingJoboperazione. Per istruzioni specifiche sulla creazione di un job di etichettatura per un tipo di task predefinito, vedere la pagina relativa al tipo di task. Per informazioni su come creare un processo di etichettatura in streaming, che è un processo di etichettatura che viene eseguito continuamente, vedere Creare un processo di etichettatura in streaming

Per utilizzare l’operazione CreateLabelingJob, è necessario quanto segue:

  • Un modello di attività lavoratore (UiTemplateS3Uri) o un ARN dell'interfaccia utente dell'attività umana (HumanTaskUiArn) in Amazon S3.

    • Per i processi con nuvole di punti 3D, i processi di rilevamento e tracciamento di oggetti video e i processi NER, utilizza l'ARN elencato in HumanTaskUiArn base al tipo di attività.

    • Se si utilizza un tipo di attività incorporato diverso dalle attività cloud di punti 3D, è possibile aggiungere le istruzioni di lavoro a uno dei modelli predefiniti e salvare il modello (utilizzando un'estensione.html o .liquid) nel bucket S3. Trova i modelli di pre-compilazione nella pagina del tipo di task.

    • Se si utilizza un flusso di lavoro di etichettatura personalizzato, è possibile creare un modello personalizzato e salvarlo nel bucket S3. Per informazioni su come creare un modello di lavoro personalizzato, consulta Fase 2: creazione di un modello di attività del worker personalizzato. Per gli elementi HTML personalizzati che è possibile utilizzare per personalizzare il modello, consulta Riferimento per gli elementi Crowd HTML. Per un archivio di modelli dimostrativi per una varietà di attività di etichettatura, consulta Amazon SageMaker Ground Truth Sample Task UI.

  • Un file manifest di input che specifica i dati di input in Amazon S3. Specifica la posizione del file manifest di input in ManifestS3Uri. Per informazioni sulla creazione di un file manifest di input, consulta Dati di input. Se crei un lavoro di etichettatura in streaming, questo è facoltativo. Per informazioni su come creare un processo di etichettatura in streaming, consulta Creare un processo di etichettatura in streaming.

  • Un bucket Amazon S3 per memorizzare i dati di output. Specificate questo bucket e, facoltativamente, un prefisso in S3OutputPath.

  • Un file di configurazione della categoria di etichetta. Il nome di ciascuna categoria di etichette deve essere univoco. Specificare la posizione di questo file in Amazon S3 utilizzando il parametro LabelCategoryConfigS3Uri. Il formato e le categorie di etichette per questo file dipendono dal tipo di attività utilizzata:

    • Per la classificazione delle immagini e del testo (etichetta singola e multipla) devi specificare almeno due categorie di etichette. Per tutti gli altri tipi di attività, il numero minimo di categorie di etichette richieste è una.

    • Per le attività di riconoscimento di entità denominate, è necessario fornire istruzioni ai lavoratori in questo file. Per informazioni dettagliate e un esempio, consulta Fornisci le istruzioni per il lavoratore in un file di configurazione della categoria di etichette.

    • Per il tipo di attività cloud di punti 3D e fotogrammi video, utilizzare il formato in Creazione di un file di configurazione della categoria di etichettatura con gli attributi Categoria di etichette e Attributi frame.

    • Per tutti gli altri tipi di attività incorporati e attività personalizzate, il file di configurazione delle categorie di etichette deve essere un file JSON nel formato seguente. Identificare le etichette che si desidera utilizzare sostituendo label_1, label_2,... e label_n con le categorie di etichette.

      { "document-version": "2018-11-28" "labels": [ {"label": "label_1"}, {"label": "label_2"}, ... {"label": "label_n"} ] }
  • Un ruolo AWS Identity and Access Management (IAM) con la policy IAM AmazonSageMakerGroundTruthExecutiongestita allegata e con autorizzazioni per accedere ai bucket S3. Specificare questo ruolo in RoleArn. Per ulteriori informazioni su questa policy, vedere Utilizzare le policy gestite da IAM con Ground Truth. Se sono necessarie autorizzazioni più granulari, consulta Assegnare le autorizzazioni IAM per utilizzare Ground Truth.

    Se il nome del bucket di input o di output non contiene sagemaker, è possibile allegare un criterio simile al seguente al ruolo passato all'operazione 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/*" ] } ] }
  • Una funzione AWS Lambda di pre-annotazione e post-annotazione (o consolidamento annotazioni) Amazon Resource Name (ARN) per elaborare i dati di input e output.

    • Le funzioni Lambda sono predefinite in ogni AWS regione per i tipi di attività predefiniti. Per trovare l'ARN Lambda di pre-annotazione per la tua regione, consulta. PreHumanTaskLambdaArn Per trovare l'ARN Lambda di consolidamento delle annotazioni per la tua regione, consulta. AnnotationConsolidationLambdaArn

    • Per i flussi di lavoro di etichettatura personalizzati, è necessario fornire un ARN Lamda post-annotazione e pre-annotazione personalizzato. Per informazioni su come creare queste funzioni Lambda, vedere Fase 3: Elaborazione con AWS Lambda.

  • Un ARN del team di lavoro specificato dall'utente in WorkteamArn. Riceverai un ARN per il team di lavoro quando ti iscrivi alla forza lavoro di un fornitore o crei un team di lavoro privato. Se state creando un lavoro di etichettatura per un tipo di attività con frame video o nuvola di punti, non potete utilizzare la forza lavoro. Amazon Mechanical Turk Per tutti gli altri tipi di attività, per utilizzare la forza lavoro Mechanical Turk, usa il seguente ARN. regionSostituiscilo con la AWS regione che stai utilizzando per creare il lavoro di etichettatura.

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

    Se utilizzi la forza lavoro Amazon Mechanical Turk, usa il parametro ContentClassifiers in DataAttributes di InputConfig per dichiarare che i tuoi contenuti sono privi di informazioni personali e di contenuti per adulti.

    Ground Truth e richiede che i dati di input siano privi di informazioni di identificazione personale (PII) quando utilizzi la forza lavoro Mechanical Turk. Se utilizzi Mechanical Turk e non specifichi che i dati di input sono privi di informazioni personali utilizzando il flag FreeOfPersonallyIdentifiableInformation, il processo di etichettatura avrà esito negativo. Usa il FreeOfAdultContent flag per dichiarare che i tuoi dati di input sono privi di contenuti per adulti. SageMaker può limitare il numero di dipendenti di Amazon Mechanical Turk che possono visualizzare la tua attività se contiene contenuti per adulti.

    Per ulteriori informazioni sui team di lavoro e sulle forze lavoro, consulta Creare e gestire le forze lavoro.

  • Se utilizzi la forza lavoro di Mechanical Turk, devi specificare il prezzo che pagherai ai lavoratori per l'esecuzione di una singola attività in PublicWorkforceTaskPrice.

  • Per configurare l'attività, è necessario fornire una descrizione e un titolo dell'attività utilizzando TaskDescription e TaskTitle rispettivamente. Facoltativamente, puoi fornire limiti di tempo che controllano il tempo a disposizione dei lavoratori per lavorare su una singola attività (TaskTimeLimitInSeconds) e per quanto tempo le attività rimangono nel portale dei lavoratori, disponibile per i lavoratori (TaskAvailabilityLifetimeInSeconds).

  • (Facoltativo) Per alcuni tipi di task, è possibile assegnare a più lavoratori un'etichetta a singola immagine dati (inserendo un numero maggiore di uno per il parametro NumberOfHumanWorkersPerDataObject). Per ulteriori informazioni sul consolidamento delle annotazioni, consulta Consolidare le annotazioni.

  • (Facoltativo) Per creare un processo automatico di etichettatura dei dati, specifica uno degli ARN elencati in. LabelingJobAlgorithmSpecificationArnLabelingJobAlgorithmsConfig Questo ARN identifica l'algoritmo utilizzato nel processo di etichettatura automatica dei dati. Il tipo di attività associato a questo ARN deve corrispondere al tipo di attività di PreHumanTaskLambdaArn e AnnotationConsolidationLambdaArn specificat. L'etichettatura automatica dei dati è supportata per i seguenti tipi di attività: classificazione delle immagini, riquadro di selezione, segmentazione semantica e classificazione del testo. Il numero minimo di oggetti consentiti per l'etichettatura automatizzata dei dati è di 1.250, e consigliamo vivamente di fornire un minimo di 5.000 oggetti. Per ulteriori informazioni sui lavori di etichettatura automatizzata dei dati, consulta Automatizzare l'etichettatura dei dati.

  • (Facoltativo) Puoi fornire StoppingConditions che fa in modo che il processo di etichettatura si interrompa se viene soddisfatta una delle condizioni. Puoi utilizzare le condizioni di interruzione per controllare il costo del lavoro di etichettatura.

Esempi

Gli esempi di codice seguenti mostrano come creare un processo di etichettatura utilizzando CreateLabelingJob. Per ulteriori esempi, ti consigliamo di utilizzare uno dei notebook Jupyter Ground Truth Labeling Jobs nella sezione Esempi di un'istanza di notebook. SageMaker SageMaker Per imparare a usare un esempio di notebook tratto dagli Esempi, consulta. SageMaker Notebook di esempio Puoi anche vedere questi taccuini di esempio GitHub nel repository Examples. SageMaker

AWS SDK for Python (Boto3)

Di seguito è riportato un esempio di richiesta AWS Python SDK (Boto3) per creare un processo di etichettatura per un tipo di attività incorporata nella regione Stati Uniti orientali (Virginia settentrionale) utilizzando una forza lavoro privata. Sostituisci tutto il testo in corsivo rosso con le risorse e le specifiche del processo di etichettatura.

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

Di seguito è riportato un esempio di richiesta AWS CLI per creare un processo di etichettatura per un tipo di attività integrato nella regione Stati Uniti orientali (Virginia settentrionale) utilizzando la forza lavoro di Amazon Mechanical Turk. Per ulteriori informazioni, consulta la sezione start-human-loop nella Documentazione di riferimento della AWS CLI. Sostituisci tutto il testo in corsivo rosso con le risorse e le specifiche del processo di etichettatura.

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

Per ulteriori informazioni su questa operazione, consulta CreateLabelingJob. Per informazioni su come utilizzare altri SDK specifici della lingua, vai su Consulta anche nell'argomento CreateLabelingJobs.