Nastavení Automatizovaného strojového učení pro trénování modelu zpracování přirozeného jazyka pomocí Pythonu (Preview)

PLATÍ PRO:Sada Python SDK azureml v1

Důležité

Tato funkce je v současné době ve verzi Public Preview. Tato verze Preview se poskytuje bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti.

Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

V tomto článku se dozvíte, jak trénovat modely zpracování přirozeného jazyka (NLP) pomocí automatizovaného strojového učení v sadě Python SDK služby Azure Machine Learning.

Automatizované strojové učení podporuje NLP, což umožňuje odborníkům na strojové učení a datovým vědcům používat vlastní textová data a vytvářet vlastní modely pro úlohy, jako je klasifikace textu s více třídami, klasifikace textu s více popisky a rozpoznávání pojmenovaných entit (NER).

Bezproblémovou integrací s funkcí popisování dat služby Azure Machine Learning můžete označovat textová data nebo přenést existující označená data. Automatizované strojové učení nabízí možnost použití distribuovaného trénování na výpočetních clusterech s více GPU pro rychlejší trénování modelů. Výsledný model je možné zprovoznit ve velkém měřítku s využitím funkcí MLOps služby Azure Machine Learning.

Požadavky

Vyberte úkol NLP.

Určete, jakou úlohu NLP chcete provést. Automatizované strojové učení v současné době podporuje následující úlohy hloubkové neurální sítě NLP.

Úkol Syntaxe autoMLConfig Description
Klasifikace textu s více třídami task = 'text-classification' Existuje více možných tříd a každý vzorek lze klasifikovat jako přesně jednu třídu. Úkolem je předpovědět správnou třídu pro každý vzorek.

Například filmový scénář klasifikuje jako "Komedie" nebo "Romantický".
Klasifikace textu s více popisky task = 'text-classification-multilabel' Existuje více možných tříd a každému vzorku lze přiřadit libovolný počet tříd. Úkolem je předpovědět všechny třídy pro každý vzorek.

Například filmový scénář klasifikuje jako "Komedie", "Romantické" nebo "Komedie a romantika".
Rozpoznávání pojmenovaných entit (NER) task = 'text-ner' Existuje několik možných značek pro tokeny v sekvencích. Úkolem je předpovědět značky pro všechny tokeny pro každou sekvenci.

Například extrakce entit specifických pro doménu z nestrukturovaného textu, jako jsou smlouvy nebo finanční dokumenty.

Příprava dat

V případě experimentů NLP v automatizovaném strojovém učení můžete použít datovou sadu Azure Machine Learning s formátem .csv pro úlohy klasifikace s více třídami a s více popisky. U úloh NER se podporují soubory se dvěma sloupci .txt , které jako oddělovač používají mezeru a odpovídají formátu CoNLL. Následující části obsahují další podrobnosti o formátu dat akceptovaných pro jednotlivé úlohy.

Více tříd

U klasifikace s více třídami může datová sada obsahovat několik textových sloupců a přesně jeden sloupec popisku. Následující příklad obsahuje pouze jeden textový sloupec.


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"

Více popisků

V případě klasifikace s více popisky by sloupce datové sady byly stejné jako sloupce s více třídami, existují však speciální požadavky na formát pro data ve sloupci popisku. Následující tabulka obsahuje dva akceptované formáty a příklady.

Možnosti formátu sloupce popisku Více popisků Jeden popisek Žádné popisky
Prostý text "label1, label2, label3" "label1" ""
Seznam Pythonu s uvozovkami "['label1','label2','label3']" "['label1']" "[]"

Důležité

Ke čtení popisků pro tyto formáty se používají různé analyzátory. Pokud používáte formát prostého textu, používejte v popiscích jenom abecední, číselné a '_' abecední. Všechny ostatní znaky jsou rozpoznány jako oddělovač popisků.

Pokud je "cs.AI"například popisek , čte se jako "cs" a "AI". Zatímco v případě formátu seznamu Pythonu by popisek byl "['cs.AI']", který se čte jako "cs.AI" .

Příklad dat pro více popisků ve formátu prostého textu.

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.",""

Ukázková data pro více popisků v seznamu Pythonu s formátem uvozovek

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.","[]"

Rozpoznávání pojmenovaných entit (NER)

Na rozdíl od více tříd nebo více popisků, které formátují .csv datové sady, vyžaduje rozpoznávání pojmenovaných entit formát CoNLL. Soubor musí obsahovat přesně dva sloupce a v každém řádku je token a popisek oddělený jednou mezerou.

Třeba

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

Ověřování dat

Před trénováním automatizované strojové učení provede kontroly ověření dat na vstupní data, aby se zajistilo, že se data dají správně předzpracovat. Pokud se některá z těchto kontrol nezdaří, spuštění selže s příslušnou chybovou zprávou. Níže jsou uvedené požadavky na úspěšné ověření dat pro jednotlivé úlohy.

Poznámka

Některé kontroly ověření dat se vztahují na trénovací i ověřovací sadu, zatímco jiné se vztahují pouze na trénovací sadu. Pokud testovací datová sada nemůže projít ověřením dat, znamená to, že automatizované strojové učení ji nemůže zachytit a existuje možnost selhání odvozování modelu nebo snížení výkonu modelu.

Úkol Kontrola ověření dat
Všechny úkoly - Musí být poskytnuty trénovací i ověřovací sady.
- Vyžaduje se alespoň 50 trénovacích vzorků.
Více tříd a více popisků Trénovací data a ověřovací data musí obsahovat
- Stejná sada sloupců
- Stejné pořadí sloupců zleva doprava
– Stejný datový typ pro sloupce se stejným názvem
- Alespoň dva jedinečné popisky
– Jedinečné názvy sloupců v rámci každé datové sady (například trénovací sada nemůže mít více sloupců s názvem Age)
Pouze pro více tříd Žádné
Pouze s více popisky - Formát sloupce popisku musí být v přijatém formátu.
- Alespoň jeden vzorek by měl mít popisky 0 nebo 2+ , jinak by to měl být multiclass úkol.
- Všechny popisky by měly být ve str formátu nebo int bez překrývání. Neměli byste mít popisek 1 ani popisek. '1'
Pouze NER - Soubor by neměl začínat prázdným řádkem.
- Každý řádek musí být prázdný nebo musí být ve formátu {token} {label}, kde mezi tokenem a popiskem je přesně jedna mezera a za popiskem žádné prázdné znaky.
- Všechny popisky musí začínat na I-, B-nebo musí být přesně O. Malá a velká písmena se rozlišují.
- Přesně jedna prázdná čára mezi dvěma vzorky
- Přesně jeden prázdný řádek na konci souboru

Konfigurace experimentu

Funkce NLP automatizovaného strojového učení se aktivuje prostřednictvím AutoMLConfig, což je stejný pracovní postup pro odesílání automatizovaných experimentů ML pro úlohy klasifikace, regrese a prognózování. Většinu parametrů byste nastavili stejně jako pro tyto experimenty, například task, compute_target a datové vstupy.

Existují však klíčové rozdíly:

  • Můžete ignorovat primary_metric, protože je to jenom pro účely generování sestav. Automatizované strojové učení v současné době trénuje pouze jeden model na jedno spuštění pro NLP a neexistuje žádný výběr modelu.
  • Parametr label_column_name se vyžaduje pouze pro úlohy klasifikace textu s více třídami a s více popisky.
  • Pokud většina ukázek v datové sadě obsahuje více než 128 slov, považuje se za dlouhý rozsah. Pro tento scénář můžete povolit možnost dlouhého rozsahu textu s parametrem enable_long_range_text=True v AutoMLConfig. To pomáhá zlepšit výkon modelu, ale vyžaduje delší dobu trénování.
    • Pokud povolíte text s dlouhým rozsahem, bude potřeba gpu s větší pamětí, například řada NCv3 nebo řada ND .
    • Parametr enable_long_range_text je k dispozici pouze pro úlohy klasifikace s více třídami.
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
)

Nastavení jazyka

V rámci funkcí NLP podporuje automatizované strojové učení 104 jazyků, které využívají předtrénované modely DNN pro konkrétní jazyk a více jazyků, jako je řada modelů BERT. V současné době je výchozí pro výběr jazyka angličtina.

Následující tabulka shrnuje, jaký model se používá na základě typu úlohy a jazyka. Podívejte se na úplný seznam podporovaných jazyků a jejich kódů.

Typ úkolu Syntaxe pro dataset_language Algoritmus textového modelu
Klasifikace textu s více popisky 'eng'
'deu'
'mul'
English BERT uncased
Německý BERT
Vícejazyčný BERT

Pro všechny ostatní jazyky používá automatizované strojové učení vícejazyčný BERT.
Klasifikace textu s více třídami 'eng'
'deu'
'mul'
Anglické BERT cased
Vícejazyčný BERT

Pro všechny ostatní jazyky používá automatizované strojové učení vícejazyčný BERT.
Rozpoznávání pojmenovaných entit (NER) 'eng'
'deu'
'mul'
Anglické BERT cased
Německý BERT
Vícejazyčný BERT

Pro všechny ostatní jazyky používá automatizované strojové učení vícejazyčný BERT.

Jazyk datové sady můžete zadat v FeaturizationConfigsouboru . BERT se také používá v procesu procesuaturizace automatizovaného trénování experimentů ML, kde se dozvíte více o integraci a funkciaturizaci BERT v automatizovaném strojovém učení.

from azureml.automl.core.featurization import FeaturizationConfig

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

Distribuované trénování

Můžete také spouštět experimenty NLP s distribuovaným trénováním na výpočetním clusteru Azure Machine Learning. Automatické strojové učení to zpracovává automaticky, když jsou parametry max_concurrent_iterations = number_of_vms a enable_distributed_dnn_training = True jsou uvedeny v AutoMLConfig nastavení experimentu.

max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True

Tím naplánuje distribuované trénování modelů NLP a automaticky se škáluje na každý GPU na virtuálním počítači nebo clusteru virtuálních počítačů. Maximální povolený počet virtuálních počítačů je 32. Trénování je naplánované s počtem virtuálních počítačů, které jsou v mocninách dvou.

Příklady poznámkových bloků

Podrobné příklady kódu pro jednotlivé úlohy NLP najdete v ukázkových poznámkových blocích.

Další kroky