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
Předplatné Azure. Pokud ještě nemáte předplatné Azure, zaregistrujte se a vyzkoušejte bezplatnou nebo placenou verzi služby Azure Machine Learning ještě dnes.
Pracovní prostor Azure Machine Learning s výpočetními prostředky pro trénování GPU. Informace o vytvoření pracovního prostoru najdete v tématu Vytvoření prostředků pracovního prostoru. Další podrobnosti o instancích GPU poskytovaných Azure najdete v tématu Velikosti virtuálních počítačů optimalizovaných pro GPU.
Upozornění
Podpora vícejazyčných modelů a použití modelů s delší maximální délkou sekvence je nezbytná pro několik případů použití NLP, jako jsou neanglické datové sady a dokumenty s delším rozsahem. V důsledku toho můžou tyto scénáře vyžadovat větší paměť GPU pro úspěšné trénování modelu, například řady NC_v3 nebo ND.
Nainstalovaná sada Azure Machine Learning Python SDK
K instalaci sady SDK můžete použít jednu z těchto možností:
Vytvořte výpočetní instanci, která automaticky nainstaluje sadu SDK a je předem nakonfigurovaná pro pracovní postupy ML. Další informace najdete v tématu Vytvoření a správa výpočetní instance služby Azure Machine Learning .
automl
Nainstalujte balíček sami, který zahrnuje výchozí instalaci sady SDK.
Důležité
Příkazy Pythonu v tomto článku vyžadují nejnovější
azureml-train-automl
verzi balíčku.- Nainstalujte nejnovější
azureml-train-automl
balíček do místního prostředí. - Podrobnosti o nejnovějším
azureml-train-automl
balíčku najdete ve zprávě k vydání verze.
Tento článek předpokládá určitou znalost nastavení experimentu automatizovaného strojového učení. Postupujte podle kurzu nebo návodu a podívejte se na hlavní vzory návrhu experimentů automatizovaného strojového učení.
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
vAutoMLConfig
. To pomáhá zlepšit výkon modelu, ale vyžaduje delší dobu trénování.
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 FeaturizationConfig
souboru . 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
- Přečtěte si další informace o tom, jak a kde nasadit model.
- Řešení potíží s experimenty automatizovaného strojového učení