Az AutoML beállítása természetes nyelvi feldolgozási modell betanítása
ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)
Ebből a cikkből megtudhatja, hogyan taníthat be természetes nyelvi feldolgozási (NLP-) modelleket automatizált gépi tanulással az Azure Machine Learningben. Az Azure Machine Learning Python SDK v2 vagy az Azure Machine Learning CLI v2 használatával NLP-modelleket hozhat létre automatizált gépi tanulással.
Az automatizált gépi tanulás támogatja az NLP-t, amely lehetővé teszi az ml-szakemberek és adattudósok számára, hogy saját szöveges adatokat hozzanak létre, és egyéni modelleket hozzanak létre az NLP-feladatokhoz. Az NLP-feladatok közé tartozik a többosztályos szövegbesorolás, a többcímkés szövegbesorolás és az elnevezett entitásfelismerés (NER).
Zökkenőmentesen integrálható az Azure Machine Learning adatcímkézési funkciójával a szöveges adatok címkézéséhez vagy a meglévő címkézett adatok behozásához. Az automatizált gépi tanulás lehetővé teszi, hogy elosztott betanítást használjon több GPU-s számítási fürtökön a modell gyorsabb betanítása érdekében. Az eredményül kapott modell méretezhető az Azure Machine Learning MLOps-képességeinek használatával.
Előfeltételek
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
Egy Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, regisztráljon az Azure Machine Learning ingyenes vagy fizetős verziójának kipróbálására.
Azure Machine Learning-munkaterület GPU-betanítási számítással. A munkaterület létrehozásához lásd : Munkaterület-erőforrások létrehozása. További információ: GPU-optimalizált virtuálisgép-méretek az Azure által biztosított GPU-példányok további részleteiért.
Figyelmeztetés
A többnyelvű modellek és a hosszabb sorozathosszúságú modellek támogatása több NLP-használati esethez szükséges, például nem angol nyelvű adatkészletekhez és hosszabb tartományú dokumentumokhoz. Ennek eredményeképpen ezek a forgatókönyvek nagyobb GPU-memóriát igényelhetnek a modell betanításának sikerességéhez, például a NC_v3 sorozathoz vagy az ND sorozathoz.
Az Azure Machine Learning CLI v2 telepítve van. A legújabb verzió frissítésével és telepítésével kapcsolatos útmutatásért tekintse meg a parancssori felület (v2) telepítését és beállítását ismertető témakört.
Ez a cikk feltételezi, hogy bizonyos ismeretekkel rendelkezik egy automatizált gépi tanulási kísérlet beállításához. Kövesse az útmutatót a gépi tanulási kísérlet fő tervezési mintáinak megtekintéséhez.
Az NLP-feladat kiválasztása
Határozza meg, hogy milyen NLP-feladatot szeretne végrehajtani. Az automatizált gépi tanulás jelenleg a következő mély neurális hálózati NLP-feladatokat támogatja.
Task | AutoML-feladat szintaxisa | Leírás |
---|---|---|
Többosztályos szövegbesorolás | CLI v2: text_classification SDK v2: text_classification() |
Több lehetséges osztály is létezik, és minden minta pontosan egy osztályként besorolható. A feladat az egyes minták megfelelő osztályának előrejelzése. Egy filmszkript besorolása például "Vígjáték" vagy "Romantikus". |
Többfeliratos szövegbesorolás | CLI v2: text_classification_multilabel SDK v2: text_classification_multilabel() |
Több lehetséges osztály is létezik, és minden minta tetszőleges számú osztályhoz rendelhető. A feladat az egyes minták összes osztályának előrejelzése Egy filmszkriptet például "Vígjáték" vagy "Romantikus" vagy "Vígjáték és romantikus" besorolással sorolhat be. |
Nevesített entitások felismerése (NER) | CLI v2:text_ner SDK v2: text_ner() |
A jogkivonatok több lehetséges címkét is tartalmaznak sorozatokban. A feladat az egyes sorozatok összes jogkivonatának címkéinek előrejelzése. Például tartományspecifikus entitások kinyerése strukturálatlan szövegből, például szerződésekből vagy pénzügyi dokumentumokból. |
Küszöbérték-küszöb
A küszöbérték-emelés a többcímke-funkció, amely lehetővé teszi a felhasználók számára, hogy kiválaják azt a küszöbértéket, amely az előrejelzett valószínűségek pozitív címkéhez vezetnek. Az alacsonyabb értékek több címkét biztosítanak, ami jobb, ha a felhasználók jobban törődnek a visszahívással, de ez a beállítás több hamis pozitív értéket eredményezhet. A magasabb értékek kevesebb címkét biztosítanak, és így jobbak a pontosságot kedvelő felhasználók számára, de ez a beállítás több hamis negatívumot eredményezhet.
Adatok előkészítése
Az automatizált gépi tanulás NLP-kísérleteihez többosztályos és többcímkés besorolási feladatokhoz is formázhatja az adatokat .csv
. A NER-feladatok esetében támogatottak azok a kétoszlopos .txt
fájlok, amelyek szóközt használnak elválasztóként, és megfelelnek a CoNLL formátumnak. Az alábbi szakaszok az egyes tevékenységekhez elfogadott adatformátum részleteit ismertetik.
Többosztályos
Többosztályos besorolás esetén az adathalmaz több szöveges oszlopot és pontosan egy címkeoszlopot tartalmazhat. Az alábbi példában csak egy szövegoszlop található.
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"
Többcímke
Többcímke-besorolás esetén az adathalmazoszlopok megegyeznek a többosztályosokkal, de a címkeoszlopban lévő adatokra speciális formátumkövetelmények vonatkoznak. A két elfogadott formátum és példa az alábbi táblázatban található.
Címkeoszlop formátumbeállításai | Több címke | Egy címke | Nincs címke |
---|---|---|---|
Egyszerű szöveg | "label1, label2, label3" |
"label1" |
"" |
Python-lista idézőjelekkel | "['label1','label2','label3']" |
"['label1']" |
"[]" |
Fontos
Ezekhez a formátumokhoz különböző elemzők használhatók címkék olvasásához. Ha egyszerű szöveges formátumot használ, csak betűrendes, numerikus és '_'
feliratokat használjon. A rendszer minden más karaktert a címkék elválasztójaként ismer fel.
Ha például a címke az "cs.AI"
, akkor az írásvédett és "cs"
"AI"
a . Míg a Python-lista formátuma esetén a címke a következőképpen olvasható "['cs.AI']"
"cs.AI"
: .
Példaadatok egyszerű szöveges formátumú többcímkéhez.
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éldaadatok többcímkés Python-listában idézőjelek formátumával.
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.","[]"
Elnevezett entitásfelismerés (NER)
A többosztályos vagy többcímkés .csv
adathalmazoktól eltérően az elnevezett entitások felismeréséhez CoNLL-formátum szükséges. A fájlnak pontosan két oszlopot kell tartalmaznia, és minden sorban a jogkivonatot és a címkét egyetlen szóköz választja el egymástól.
Például,
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
Adatellenőrzés engedélyezése
A modell betanítása előtt az automatizált gépi tanulás adatérvényesítési ellenőrzéseket végez a bemeneti adatokon annak biztosítása érdekében, hogy az adatok megfelelően feldolgozhatók legyenek. Ha bármelyik ellenőrzés sikertelen, a futtatás a megfelelő hibaüzenettel meghiúsul. Az alábbi követelmények vonatkoznak az egyes tevékenységek adatérvényesítési ellenőrzésének elvégzésére.
Feljegyzés
Egyes adatérvényesítési ellenőrzések mind a betanításra, mind az érvényesítési csoportra érvényesek, míg mások csak a betanítási csoportra vonatkoznak. Ha a tesztadatkészlet nem tudta átadni az adatérvényesítést, az azt jelenti, hogy az automatizált gépi tanulás nem tudta rögzíteni, és fennáll a modell következtetési hibája vagy a modell teljesítményének csökkenése.
Task | Adatérvényesítés ellenőrzése |
---|---|
Minden tevékenység | Legalább 50 képzési minta szükséges |
Többosztályos és többcímke | A betanítási és érvényesítési adatoknak rendelkezniük kell - Ugyanazzal az oszlopkészlettel - Az oszlopok sorrendje balról jobbra – Ugyanaz az adattípus az azonos nevű oszlopokhoz - Legalább két egyedi címke - Egyedi oszlopnevek az egyes adatkészleteken belül (például a betanítási csoport nem rendelkezhet több, Életkor nevű oszloppal) |
Csak többosztályos | Egyik sem |
Csak többcímke | - A címkeoszlop formátumának elfogadott formátumban kell lennie - Legalább egy mintának 0 vagy 2+ címkével kell rendelkeznie, ellenkező esetben feladatnak kell lennie multiclass - Az összes címke formátuma str vagy int formátuma legyen, átfedés nélkül. Nem szabad címkével 1 és címkével sem rendelkeznie '1' |
Csak NER | - A fájl nem üres sorból indul ki - Minden sornak üres vonalnak kell lennie, vagy formátumot kell követnie {token} {label} , ahol pontosan egy térköz van a jogkivonat és a címke között, és nincs szabad terület a címke után - Minden címkének a kezdő vagy a pontos O betűvel I- B- kell kezdődnie. Kis- és nagybetűk megkülönböztetése - Pontosan egy üres vonal két minta között - Pontosan egy üres sor a fájl végén |
Kísérlet konfigurálása
Az automatizált gépi tanulás NLP-képessége feladatspecifikus automl
típusú feladatokon keresztül aktiválódik, amely ugyanaz a munkafolyamat, amely automatizált ML-kísérleteket küld be besorolási, regressziós és előrejelzési feladatokhoz. A paramétereket a kísérletekhez, például experiment_name
compute_name
az adatbemenetekhez hasonlóan állíthatja be.
Vannak azonban főbb különbségek:
- Figyelmen kívül hagyhatja
primary_metric
, mivel ez csak jelentéskészítési célokra szolgál. Az automatizált gépi tanulás jelenleg csak egy modellt tanít be futtatásonként az NLP-hez, és nincs modellválasztás. - A
label_column_name
paraméter csak többosztályos és többcímkés szövegbesorolási feladatokhoz szükséges. - Ha az adathalmaz mintáinak több mint 10%-a több mint 128 jogkivonatot tartalmaz, az hosszú tartománynak számít.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
A CLI v2 automatizált ml-feladatokhoz a kísérletet az alábbiakhoz hasonló YAML-fájlban konfigurálhatja.
Nyelvi beállítások
Az NLP funkcióinak részeként az automatizált gépi tanulás 104 nyelvet támogat, amelyek nyelvspecifikus és többnyelvű előre betanított szöveges DNN-modelleket használnak, például a BERT modellcsaládot. Jelenleg a nyelvi kijelölés alapértelmezés szerint angol.
Az alábbi táblázat összefoglalja, hogy milyen modellt alkalmaz a rendszer a tevékenységtípus és a nyelv alapján. Tekintse meg a támogatott nyelvek és kódjuk teljes listáját.
Tevékenység típusa | Szintaxis a következőhöz: dataset_language |
Szövegmodell-algoritmus |
---|---|---|
Többfeliratos szövegbesorolás | "eng" "deu" "mul" |
Az angol BERT ki van csomagolva Német BERT Többnyelvű BERT Minden más nyelv esetében az automatizált gépi tanulás többnyelvű BERT-t alkalmaz |
Többosztályos szövegbesorolás | "eng" "deu" "mul" |
Angol BERT-eset Többnyelvű BERT Minden más nyelv esetében az automatizált gépi tanulás többnyelvű BERT-t alkalmaz |
Elnevezett entitásfelismerés (NER) | "eng" "deu" "mul" |
Angol BERT-eset Német BERT Többnyelvű BERT Minden más nyelv esetében az automatizált gépi tanulás többnyelvű BERT-t alkalmaz |
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
Az adathalmaz nyelvét a konfigurációs YAML-fájl featurizálási szakaszában adhatja meg. A BERT-et az automatizált ml-kísérletek betanításának featurizálási folyamatában is használják, további információ az automatizált gépi tanulás (SDK v1) BERT-integrációjáról és featurizálásáról.
featurization:
dataset_language: "eng"
Elosztott betanítás
Az NLP-kísérleteket elosztott betanítással is futtathatja egy Azure Machine Learning számítási fürtön.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
Az AutoML-feladat elküldése
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
Az AutoML-feladat elküldéséhez futtassa a következő CLI v2 parancsot a .yml fájl elérési útjával, a munkaterület nevével, az erőforráscsoporttal és az előfizetés azonosítójával.
az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Kódpéldák
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
Tekintse meg az alábbi YAML-mintafájlokat az egyes NLP-feladatokhoz.
Modellsöprés és hiperparaméter finomhangolása (előzetes verzió)
Fontos
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik.
További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
Az AutoML NLP lehetővé teszi a hiperparaméterek modelljeinek és kombinációinak listáját a konfiguráció hiperparaméter keresési területén keresztül. A Hyperdrive több gyermekfuttatást hoz létre, amelyek mindegyike egy adott NLP-modell finomhangolási futtatása, valamint a megadott keresési terület alapján kiválasztott és végigsöprő hiperparaméter-értékek készlete.
Támogatott modell-algoritmusok
Az AutoML NLP-ben jelenleg elérhető összes előre betanított szöveges DNN-modell a finomhangoláshoz az alábbiakban látható:
- bert-base-cased
- bert-large-uncased
- bert-base-többnyelvű-cased
- bert-base-german-cased
- bert-large-cased
- distilbert-base-cased
- distilbert-base-uncased
- roberta-base
- roberta-large
- distilroberta-base
- xlm-roberta-base
- xlm-roberta-large
- xlnet-base-cased
- xlnet-large-cased
Vegye figyelembe, hogy a nagy modellek nagyobbak, mint az alap társaik. Általában teljesítményesebbek, de több GPU-memóriát és időt vesznek igénybe a betanításhoz. Ezért a termékváltozatra vonatkozó követelmények szigorúbbak: javasoljuk, hogy a legjobb eredmény érdekében ND sorozatú virtuális gépeken fusson.
Támogatott modell-algoritmusok – HuggingFace (előzetes verzió)
Az Azure Machine Learning-folyamatokon futó új háttérrendszerrel emellett bármilyen szöveges/jogkivonat-besorolási modellt használhat a HuggingFace Hub for Text Classification szolgáltatásból, amely a transzformátorok könyvtárának része (például microsoft/deberta-large-mnli). Az Azure Machine Learning-modellregisztrációs adatbázisban található, a folyamatösszetevőkkel érvényesített modellek válogatott listája is megtalálható.
Bármely HuggingFace-modell használata folyamatösszetevők használatával indítja el a futtatásokat. Ha az örökölt és a HuggingFace-modelleket is használja, az összes futtatás/próba összetevővel aktiválódik.
Támogatott hiperparaméterek
Az alábbi táblázat az AutoML NLP által támogatott hiperparamétereket ismerteti.
Paraméter neve | Leírás | Syntax |
---|---|---|
gradient_accumulation_steps | Azoknak a visszamenőleges műveleteknek a száma, amelyek színátmeneteit összesíteni kell, mielőtt végrehajtanak egy színátmenetes lejtési lépést az optimalizáló lépésfüggvényének meghívásával. Ez egy hatékony kötegméret használata, amely gradient_accumulation_steps nagyobb, mint a GPU-nak megfelelő maximális méret. |
Pozitív egész számnak kell lennie. |
learning_rate | Kezdeti tanulási arány. | Lebegőpontosnak kell lennie a tartományban (0, 1). |
learning_rate_scheduler | A tanulási sebességütemező típusa. | A listában kell választania linear, cosine, cosine_with_restarts, polynomial, constant, constant_with_warmup . |
model_name | Az egyik támogatott modell neve. | A listában kell választania bert_base_cased, bert_base_uncased, bert_base_multilingual_cased, bert_base_german_cased, bert_large_cased, bert_large_uncased, distilbert_base_cased, distilbert_base_uncased, roberta_base, roberta_large, distilroberta_base, xlm_roberta_base, xlm_roberta_large, xlnet_base_cased, xlnet_large_cased . |
number_of_epochs | A betanítási korszakok száma. | Pozitív egész számnak kell lennie. |
training_batch_size | Betanítási köteg mérete. | Pozitív egész számnak kell lennie. |
validation_batch_size | Érvényesítési köteg mérete. | Pozitív egész számnak kell lennie. |
warmup_ratio | A lineáris bemelegítéshez használt összes betanítási lépés aránya 0 és learning_rate között. | Az [0, 1] tartományban lévő lebegőpontosnak kell lennie. |
weight_decay | A súlycsökkenés értéke, ha az optimalizáló sgd, adam vagy adamw. | Az [0, 1] tartományban lévő lebegőpontosnak kell lennie. |
Minden különálló hiperparaméter csak választási lehetőségek eloszlását teszi lehetővé, például az egész szám típusú training_batch_size
és a sztring model_name
típusú hiperparamétereket. Minden folyamatos hiperparaméter, például learning_rate
az összes disztribúció támogatása.
A takarítási beállítások konfigurálása
Az összes takarítással kapcsolatos paraméter konfigurálható. Több modellaltér is létrehozható a megfelelő modellhez feltételes hiperparaméterekkel, ahogy az egyes hiperparaméter-finomhangolási példákban is látható.
Itt ugyanazokat a különálló és folyamatos terjesztési lehetőségeket támogatjuk, amelyek általános HyperDrive-feladatokhoz érhetők el. A modell hyperparameter-finomhangolásának mind a kilenc lehetősége
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
limits:
timeout_minutes: 120
max_trials: 4
max_concurrent_trials: 2
sweep:
sampling_algorithm: grid
early_termination:
type: bandit
evaluation_interval: 10
slack_factor: 0.2
search_space:
- model_name:
type: choice
values: [bert_base_cased, roberta_base]
number_of_epochs:
type: choice
values: [3, 4]
- model_name:
type: choice
values: [distilbert_base_cased]
learning_rate:
type: uniform
min_value: 0.000005
max_value: 0.00005
Mintavételi módszerek a takarításhoz
Hiperparaméterek seprésekor meg kell adnia a mintavételezési módszert, amelyet a megadott paraméterterületen való átsöpréshez használ. Jelenleg a következő mintavételezési módszerek támogatottak a sampling_algorithm
paraméterrel:
Mintavételezési típus | AutoML-feladat szintaxisa |
---|---|
Véletlenszerű mintavételezés | random |
Rácsos mintavételezés | grid |
Bayesian mintavételezés | bayesian |
Kísérlet költségvetése
Opcionálisan megadhatja az AutoML NLP betanítási feladatához tartozó kísérlet költségvetését a timeout_minutes
következő paraméterrel limits
: a kísérlet leállása előtt percek alatt eltelt idő. Ha nincs megadva, a kísérlet alapértelmezett időtúllépése hét nap (legfeljebb 60 nap).
Az AutoML NLP azt is támogatja trial_timeout_minutes
, hogy az egyes próbaverziók percek alatt maximálisan fussanak a leállítás előtt, és max_nodes
a feladathoz használandó csomópontok maximális számát a háttér számítási fürtből. Ezek a paraméterek a limits
szakaszhoz is tartoznak.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
limits:
timeout_minutes: 60
trial_timeout_minutes: 20
max_nodes: 2
Korai megszüntetési szabályzatok
Automatikusan befejezheti a rosszul teljesítő futtatásokat egy korai megszüntetési szabályzattal. A korai megszüntetés javítja a számítási hatékonyságot, így olyan számítási erőforrásokat takarít meg, amelyeket egyébként kevésbé ígéretes konfigurációkra fordítottak volna. Az AutoML NLP a paraméterrel támogatja a early_termination
korai megszüntetési szabályzatokat. Ha nincs megadva leállítási szabályzat, a rendszer az összes konfigurációt a befejezésig futtatja.
További információ a hiperparaméter-takarítás korai megszakítási szabályzatának konfigurálásáról.
Erőforrások a takarításhoz
A hiperparaméteres takarításra fordított erőforrásokat a takarítás és max_concurrent_trials
a max_trials
takarítás megadásával szabályozhatja.
Paraméter | Részlet |
---|---|
max_trials |
A átvizsgálandó konfigurációk maximális számának paramétere. 1 és 1000 közötti egész számnak kell lennie. Ha csak az adott modell-algoritmus alapértelmezett hiperparamétereit vizsgálja meg, állítsa ezt a paramétert 1 értékre. Az alapértelmezett érték 1. |
max_concurrent_trials |
Egyidejűleg futtatható futtatások maximális száma. Ha meg van adva, 1 és 100 közötti egész számnak kell lennie. Az alapértelmezett érték 1. MEGJEGYZÉS: max_concurrent_trials belsőleg van leképezve max_trials . Ha például a felhasználó beállítja max_concurrent_trials=4 , max_trials=2 az értékek belsőleg frissülnek a következőként max_concurrent_trials=2 : , max_trials=2 . |
Az összes takarítással kapcsolatos paramétert konfigurálhatja a példában látható módon.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
sweep:
limits:
max_trials: 10
max_concurrent_trials: 2
sampling_algorithm: random
early_termination:
type: bandit
evaluation_interval: 2
slack_factor: 0.2
delay_evaluation: 6
Ismert problémák
Alacsony vagy magasabb veszteségértékek kezelése:
Bizonyos adathalmazok esetében az NLP-tevékenységtől függetlenül a létrehozott pontszámok nagyon alacsonyak, néha akár nulla is lehetnek. Ezt a pontszámot magasabb veszteségértékek kísérik, amelyek azt jelentik, hogy a neurális hálózat nem tudott konvergálni. Ezek a pontszámok gyakrabban fordulhatnak elő bizonyos GPU-termékváltozatokon.
Bár az ilyen esetek nem gyakoriak, lehetségesek, és a legjobb módja annak, hogy a hiperparaméterek finomhangolását használják, és szélesebb értéktartományt biztosítsanak, különösen a hiperparaméterek, például a tanulási arányok esetében. Amíg a hiperparaméter finomhangolási képessége éles környezetben nem érhető el, javasoljuk, hogy az NC6- vagy ND6 számítási fürtöket használja az ilyen problémákat tapasztaló felhasználók számára. Ezek a fürtök általában meglehetősen stabil betanítási eredménnyel rendelkeznek.