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
En Azure-prenumeration. Om du inte har en Azure-prenumeration kan du registrera dig för att prova den kostnadsfria eller betalda versionen av Azure Mašinsko učenje i dag.
En Azure Mašinsko učenje-arbetsyta med en GPU-träningsberäkning. Information om hur du skapar arbetsytan finns i Skapa arbetsyteresurser. Mer information om GPU-instanser som tillhandahålls av Azure finns i GPU-optimerade storlekar för virtuella datorer.
Varning
Stöd för flerspråkiga modeller och användning av modeller med längre maximal sekvenslängd är nödvändigt för flera NLP-användningsfall, till exempel icke-engelska datamängder och dokument med längre intervall. Därför kan dessa scenarier kräva högre GPU-minne för att modellträningen ska lyckas, till exempel NC_v3-serien eller ND-serien.
Azure Mašinsko učenje Python SDK installerat.
Om du vill installera SDK:et kan du antingen
Skapa en beräkningsinstans som automatiskt installerar SDK och är förkonfigurerad för ML-arbetsflöden. Mer information finns i Skapa och hantera en Azure Mašinsko učenje beräkningsinstans.
automl
Installera paketet själv, vilket inkluderar standardinstallationen av SDK: et.
Viktigt!
Python-kommandona i den här artikeln kräver den senaste
azureml-train-automl
paketversionen.- Installera det senaste
azureml-train-automl
paketet i din lokala miljö. - Mer information om det senaste
azureml-train-automl
paketet finns i viktig information.
Den här artikeln förutsätter viss kunskap om hur du konfigurerar ett automatiserat maskininlärningsexperiment. Följ självstudien eller instruktioner för att se de huvudsakliga designmönstren för automatiserade maskininlärningsexperiment.
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.
- Textklassificering i flera klasser
- Textklassificering med flera etiketter
- Namngiven entitetsigenkänning