Nastavení AutoML pro trénování modelu zpracování přirozeného jazyka pomocí Pythonu (Preview)
PLATÍ PRO: Python SDK azureml v1
Důležité
Tato funkce je v současné době ve verzi Public Preview. Tato verze Preview je poskytována 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 naučíte trénovat modely zpracování přirozeného jazyka (NLP) pomocí automatizovaného strojového učení v sadě Azure Machine Learning Python SDK.
Automatizované strojové učení podporuje NLP, což umožňuje odborníkům na strojové učení a datovým vědcům přinést 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 integraci s možností popisování dat ve službě Azure Machine Learning můžete označit textová data nebo přenést existující označená data. Automatizované strojové učení poskytuje možnost používat distribuované 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 pomocí funkcí MLOps služby Azure Machine Learning.
Požadavky
Předplatné Azure. Pokud ještě nemáte předplatné Azure, zaregistrujte si bezplatnou nebo placenou verzi služby Azure Machine Learning ještě dnes.
Pracovní prostor Azure Machine Learning s trénovacími výpočetními prostředky GPU Pokud chcete vytvořit pracovní prostor, přečtěte si téma 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.
Upozorňující
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 vyšší paměť GPU pro úspěšné trénování modelu, jako je například řada NC_v3 nebo řada ND.
Nainstalovaná sada Azure Machine Learning Python SDK.
Pokud chcete nainstalovat sadu SDK, kterou můžete provést,
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 v poznámkách k verzi.
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í.
Výběr úkolu NLP
Určete, jakou úlohu NLP chcete provést. Automatizované strojové učení v současné době podporuje následující úlohy NLP hluboké neurální sítě.
Úloha | Syntaxe AutoMLConfig | Popis |
---|---|---|
Klasifikace textu s více třídami | task = 'text-classification' |
Existuje několik 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ždou ukázku. Například klasifikace filmového skriptu jako "Comedy" nebo "Romantic". |
Klasifikace textu s více popisky | task = 'text-classification-multilabel' |
Existuje několik možných tříd a každý vzorek může být přiřazen libovolný počet tříd. Úkolem je předpovědět všechny třídy pro každou ukázku. Například klasifikace filmového skriptu jako "Comedy" nebo "Romantic" nebo "Comedy and Romantic". |
Rozpoznávání pojmenovaných entit (NER, Named Entity Recognition) | task = 'text-ner' |
Tokeny mají několik možných značek v sekvencích. Úkolem je předpovědět značky pro všechny tokeny pro každou sekvenci. Například extrahování entit specifických pro doménu z nestrukturovaného textu, jako jsou kontrakty nebo finanční dokumenty |
Příprava dat
U experimentů NLP v automatizovaném strojovém učení můžete přenést datovou sadu Azure Machine Learning s formátem .csv
pro úlohy klasifikace s více třídami a více popisky. U úloh NER jsou podporovány soubory se dvěma sloupci .txt
, které jako oddělovač používají mezeru a dodržují formát CoNLL. Následující části obsahují další podrobnosti o formátu dat přijatém pro každý úkol.
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ů
U klasifikace s více popisky by sloupce datové sady byly stejné jako u více tříd, existují však zvláštní požadavky na formát pro data ve sloupci popisku. Dva přijaté formáty a příklady jsou v následující tabulce.
Možnosti formátování 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é
Různé analyzátory se používají ke čtení popisků pro tyto formáty. Pokud používáte formát prostého textu, používejte pouze abecední, číselné a '_'
v popiscích. Všechny ostatní znaky jsou rozpoznány jako oddělovač popisků.
Pokud je "cs.AI"
například popisek , přečte se jako "cs"
a "AI"
. Vzhledem k tomu, že s formátem 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.",""
Příklad dat pro více popisky 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ý přebírá .csv
formát datových sad, vyžaduje rozpoznávání pojmenovaných entit formát CoNLL. Soubor musí obsahovat přesně dva sloupce a v každém řádku token a popisek jsou oddělené jedním mezerou.
Příklad:
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ěření dat
Před trénováním automatizované strojové učení použije na vstupní data kontroly ověření dat, aby se zajistilo, že se data dají předzpracovat správně. Pokud některá z těchto kontrol selže, spuštění selže s příslušnou chybovou zprávou. Níže jsou uvedené požadavky na předání kontrol ověření dat pro jednotlivé úlohy.
Poznámka:
Některé kontroly ověření dat platí pro trénovací i ověřovací sadu, zatímco jiné platí jenom pro trénovací sadu. Pokud testovací datová sada nemohla předat ověření dat, znamená to, že automatizované strojové učení ho nemohlo zachytit a existuje možnost selhání odvozování modelu nebo pokles výkonu modelu.
Úloha | Kontrola ověření dat |
---|---|
Všechny úkoly | – Musí být k dispozici trénovací i ověřovací sady. - Vyžaduje se minimálně 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 Věk) |
Pouze více tříd | Nic |
Pouze více popisků | - Formát sloupce popisku musí být v přijatém formátu. - Nejméně jeden vzorek by měl mít popisky 0 nebo 2+, jinak by se mělo jednat o multiclass úkol. - Všechny popisky by měly být ve formátu nebo int bez str překrývání. Neměli byste mít popisek ani popisek 1 . '1' |
Pouze NER | - Soubor by neměl začínat prázdným řádkem. - Každý řádek musí být prázdný řádek nebo musí následovat formát {token} {label} , kde je mezi tokenem a popiskem přesně jedna mezera a za popiskem není prázdné znaky. - Všechny popisky musí začínat I- na , B- nebo musí být přesně O . Rozlišovat malá a velká písmena - 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
stejného pracovního postupu pro odesílání experimentů automatizovaného strojového učení pro klasifikaci, regresi a prognózování úloh. Většinu parametrů byste nastavili stejně jako u těchto experimentů, jako task
compute_target
jsou a datové vstupy.
Existují však klíčové rozdíly:
- Můžete ignorovat
primary_metric
, protože se jedná pouze o účel vytváření sestav. Automatizované strojové učení v současné době trénuje pouze jeden model na 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 více popisky. - Pokud většina ukázek v datové sadě obsahuje více než 128 slov, považuje se za dlouhý rozsah. V tomto scénáři můžete povolit možnost dlouhého rozsahu textu s parametrem
enable_long_range_text=True
ve vašemAutoMLConfig
. Pomáhá tak zlepšit výkon modelu, ale vyžaduje delší dobu trénování.- Pokud povolíte text v dlouhém rozsahu, vyžaduje se GPU s vyšší pamětí, jako je řada NCv3 nebo řada ND .
- Parametr
enable_long_range_text
je k dispozici pouze pro úkoly 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
Automatizované strojové učení podporuje jako součást funkcí NLP 104 jazyků, které využívají specifické jazyky a vícejazyčné předem natrénované modely DNN textu, jako je řada modelů BERT. V současné době je výběr jazyka ve výchozím nastavení angličtina.
Následující tabulka shrnuje, jaký model se používá na základě typu a jazyka úlohy. 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' |
Angličtina BERT bezcased Němčina BERT Vícejazyčný BERT Pro všechny ostatní jazyky používá automatizované strojové učení vícejazyčný systém 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ý systém BERT. |
Rozpoznávání pojmenovaných entit (NER) | 'eng' 'deu' 'mul' |
Anglický BERT cased Němčina BERT Vícejazyčný BERT Pro všechny ostatní jazyky používá automatizované strojové učení vícejazyčný systém BERT. |
Jazyk datové sady můžete zadat ve svém FeaturizationConfig
. BERT se také používá v procesu featurizace automatizovaného strojového experimentu trénování, přečtěte si další informace o integraci a featurizaci 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í
Experimenty NLP můžete také spouštět s distribuovaným trénováním ve výpočetním clusteru Azure Machine Learning. To automaticky zpracovává automatizované strojové učení, když se parametry max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True
zadají v AutoMLConfig
průběhu 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ánováno s počtem virtuálních počítačů, které jsou v pravomoci 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í