Konfigurera AutoML för att träna en bearbetningsmodell för naturligt språk med Python (förhandsversion)

GÄLLER FÖR: Python SDK azureml v1

Viktigt!

Den här funktionen är för närvarande i allmänt tillgänglig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade.

Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

I den här artikeln får du lära dig hur du tränar NLP-modeller (natural language processing) med automatiserad ML i Azure Mašinsko učenje Python SDK.

Automatiserad ML stöder NLP som gör det möjligt för ML-proffs och dataforskare att ta med egna textdata och skapa anpassade modeller för uppgifter som textklassificering i flera klasser, textklassificering med flera etiketter och namngiven entitetsigenkänning (NER).

Du kan integrera sömlöst med azure-Mašinsko učenje dataetiketter för att märka dina textdata eller ta med dina befintliga etiketterade data. Automatiserad ML ger möjlighet att använda distribuerad träning i beräkningskluster med flera GPU:er för snabbare modellträning. Den resulterande modellen kan operationaliseras i stor skala genom att använda Azure Mašinsko učenje MLOps-funktioner.

Förutsättningar

Välj din NLP-uppgift

Ta reda på vilken NLP-uppgift du vill utföra. För närvarande stöder automatiserad ML följande nlp-uppgifter för djupa neurala nätverk.

Uppgift AutoMLConfig-syntax beskrivning
Textklassificering i flera klasser task = 'text-classification' Det finns flera möjliga klasser och varje exempel kan klassificeras som exakt en klass. Uppgiften är att förutsäga rätt klass för varje exempel.

Du kan till exempel klassificera ett filmskript som "Komedi" eller "Romantiskt".
Textklassificering med flera etiketter task = 'text-classification-multilabel' Det finns flera möjliga klasser och varje exempel kan tilldelas valfritt antal klasser. Uppgiften är att förutsäga alla klasser för varje exempel

Du kan till exempel klassificera ett filmskript som "Komedi", "Romantiskt" eller "Komedi och romantiskt".
Igenkänning av namngiven enhet (NER) task = 'text-ner' Det finns flera möjliga taggar för token i sekvenser. Uppgiften är att förutsäga taggarna för alla token för varje sekvens.

Till exempel extrahera domänspecifika entiteter från ostrukturerad text, till exempel kontrakt eller finansiella dokument

Förbereda data

För NLP-experiment i automatiserad ML kan du ta med en Azure Mašinsko učenje-datauppsättning med .csv format för klassificeringsuppgifter för flera klasser och flera etiketter. För NER-uppgifter stöds tvåkolumnsfiler .txt som använder ett blanksteg som avgränsare och följer CoNLL-formatet. Följande avsnitt innehåller ytterligare information om det dataformat som godkänts för varje uppgift.

Flera klasser

För klassificering med flera klasser kan datamängden innehålla flera textkolumner och exakt en etikettkolumn. I följande exempel finns bara en textkolumn.


text,labels
"I love watching Chicago Bulls games.","NBA"
"Tom Brady is a great player.","NFL"
"There is a game between Yankees and Orioles tonight","MLB"
"Stephen Curry made the most number of 3-Pointers","NBA"

Flera etiketter

För klassificering med flera etiketter skulle datamängdskolumnerna vara samma som flera klasser, men det finns särskilda formatkrav för data i etikettkolumnen. De två godkända formaten och exemplen finns i följande tabell.

Formatalternativ för etikettkolumner Flera etiketter En etikett Inga etiketter
Oformaterad text "label1, label2, label3" "label1" ""
Python-lista med citattecken "['label1','label2','label3']" "['label1']" "[]"

Viktigt!

Olika parsers används för att läsa etiketter för dessa format. Om du använder formatet oformaterad text använder du bara alfabetiskt, numeriskt och '_' i etiketterna. Alla andra tecken identifieras som avgränsare för etiketter.

Om etiketten till exempel är "cs.AI", läss den som "cs" och "AI". Med Python-listformatet skulle etiketten vara "['cs.AI']", som läses som "cs.AI" .

Exempeldata för flera etiketter i oformaterad textformat.

text,labels
"I love watching Chicago Bulls games.","basketball"
"The four most popular leagues are NFL, MLB, NBA and NHL","football,baseball,basketball,hockey"
"I like drinking beer.",""

Exempeldata för flera etiketter i Python-listan med citatteckenformat.

text,labels
"I love watching Chicago Bulls games.","['basketball']"
"The four most popular leagues are NFL, MLB, NBA and NHL","['football','baseball','basketball','hockey']"
"I like drinking beer.","[]"

Namngiven entitetsigenkänning (NER)

Till skillnad från flera klasser eller flera etiketter, som tar .csv formatdatauppsättningar, kräver namngiven entitetsigenkänning CoNLL-format. Filen måste innehålla exakt två kolumner och i varje rad avgränsas token och etikett med ett enda blanksteg.

Ett exempel:

Hudson B-loc
Square I-loc
is O
a O
famous O
place O
in O
New B-loc
York I-loc
City I-loc

Stephen B-per
Curry I-per
got O
three O
championship O
rings O

Datavalidering

Före träningen tillämpar automatiserad ML dataverifieringskontroller på indata för att säkerställa att data kan förbearbetas korrekt. Om någon av dessa kontroller misslyckas misslyckas körningen med relevant felmeddelande. Följande är kraven för att klara dataverifieringskontroller för varje uppgift.

Kommentar

Vissa dataverifieringskontroller gäller både tränings- och valideringsuppsättningen, medan andra endast gäller för träningsuppsättningen. Om testdatauppsättningen inte kunde klara dataverifieringen innebär det att automatiserad ML inte kunde samla in den och det finns en risk för modellinferensfel eller en minskning av modellens prestanda.

Uppgift Kontroll av dataverifiering
Alla uppgifter – Både tränings- och valideringsuppsättningar måste tillhandahållas
- Minst 50 träningsexempel krävs
Multi-class och Multi-label Träningsdata och valideringsdata måste ha
– Samma uppsättning kolumner
- Samma kolumnordning från vänster till höger
– Samma datatyp för kolumner med samma namn
– Minst två unika etiketter
– Unika kolumnnamn inom varje datauppsättning (träningsuppsättningen kan till exempel inte ha flera kolumner med namnet Ålder)
Endast flera klasser Ingen
Endast flera etiketter – Etikettkolumnformatet måste vara i godkänt format
- Minst ett exempel ska ha 0 eller 2+ etiketter, annars bör det vara en multiclass uppgift
– Alla etiketter ska vara i str eller int format, utan överlappande. Du bör inte ha både etikett 1 och etikett '1'
Endast NER – Filen ska inte börja med en tom rad
- Varje rad måste vara en tom rad, eller följa format {token} {label}, där det finns exakt ett blanksteg mellan token och etiketten och inget tomt utrymme efter etiketten
– Alla etiketter måste börja med I-, B-eller vara exakt O. Skiftlägeskänslig
- Exakt en tom rad mellan två exempel
– Exakt en tom rad i slutet av filen

Konfigurera experiment

Automatiserad ML:s NLP-funktion utlöses via AutoMLConfig, vilket är samma arbetsflöde för att skicka automatiserade ML-experiment för klassificering, regression och prognostiseringsuppgifter. Du skulle ange de flesta parametrarna som du skulle göra för dessa experiment, till exempel task, compute_target och dataindata.

Det finns dock viktiga skillnader:

  • Du kan ignorera primary_metric, eftersom det bara är i rapporteringssyfte. För närvarande tränar automatiserad ML bara en modell per körning för NLP och det finns inget modellval.
  • Parametern label_column_name krävs endast för textklassificeringsuppgifter med flera klasser och flera etiketter.
  • Om majoriteten av exemplen i datamängden innehåller mer än 128 ord anses det vara långt intervall. I det här scenariot kan du aktivera textalternativet för långt intervall med parametern enable_long_range_text=True i .AutoMLConfig Detta hjälper till att förbättra modellens prestanda men kräver längre träningstider.
    • Om du aktiverar text med långt intervall krävs en GPU med högre minne, till exempel NCv3-serien eller ND-serien .
    • Parametern enable_long_range_text är endast tillgänglig för klassificeringsuppgifter med flera klasser.
automl_settings = {
    "verbosity": logging.INFO,
    "enable_long_range_text": True, # # You only need to set this parameter if you want to enable the long-range text setting
}

automl_config = AutoMLConfig(
    task="text-classification",
    debug_log="automl_errors.log",
    compute_target=compute_target,
    training_data=train_dataset,
    validation_data=val_dataset,
    label_column_name=target_column_name,
    **automl_settings
)

Språkinställningar

Som en del av NLP-funktionen stöder automatiserad ML 104 språk som utnyttjar språkspecifika och flerspråkiga förtränade DNN-modeller, till exempel BERT-serien med modeller. För närvarande är språkvalet som standard engelska.

I följande tabell sammanfattas vilken modell som tillämpas baserat på aktivitetstyp och språk. Se den fullständiga listan över språk som stöds och deras koder.

Uppgiftstyp Syntax för dataset_language Textmodellalgoritm
Textklassificering med flera etiketter 'eng'
'deu'
'mul'
Engelska BERT utan inkapslade
Tyska BERT
Flerspråkig BERT

För alla andra språk tillämpar automatiserad ML flerspråkig BERT
Textklassificering i flera klasser 'eng'
'deu'
'mul'
Engelskt BERT-skiftläge
Flerspråkig BERT

För alla andra språk tillämpar automatiserad ML flerspråkig BERT
Namngiven entitetsigenkänning (NER) 'eng'
'deu'
'mul'
Engelskt BERT-skiftläge
Tyska BERT
Flerspråkig BERT

För alla andra språk tillämpar automatiserad ML flerspråkig BERT

Du kan ange ditt datamängdsspråk i .FeaturizationConfig BERT används också i funktionaliseringsprocessen för automatiserad ML-experimentträning, läs mer om BERT-integrering och funktionalisering i automatiserad ML.

from azureml.automl.core.featurization import FeaturizationConfig

featurization_config = FeaturizationConfig(dataset_language='{your language code}')
automl_config = AutomlConfig("featurization": featurization_config)

Distribuerad träning

Du kan också köra dina NLP-experiment med distribuerad träning på ett Azure Mašinsko učenje beräkningskluster. Detta hanteras automatiskt av automatiserad ML när parametrarna max_concurrent_iterations = number_of_vms och enable_distributed_dnn_training = True tillhandahålls i din AutoMLConfig under experimentet.

max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True

Då schemaläggs distribuerad träning av NLP-modellerna och skalas automatiskt till varje GPU på den virtuella datorn eller klustret med virtuella datorer. Det maximala antalet virtuella datorer som tillåts är 32. Träningen schemaläggs med antalet virtuella datorer som har två krafter.

Exempelnotebook-filer

Se exempelanteckningsböckerna för detaljerade kodexempel för varje NLP-uppgift.

Nästa steg