Megosztás a következőn keresztül:


Az AutoML beállítása természetes nyelvi feldolgozási modell betanítása Pythonnal (előzetes verzió)

A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1

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.

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 Learning Python SDK-ban.

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 olyan feladatokhoz, mint a többosztályos szövegbesorolás, a többcímkés szövegbesorolás és a nevesített 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 kihasználásával.

Előfeltételek

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 AutoMLConfig szintaxis Leírás
Többosztályos szövegbesorolás task = '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 például "Vígjáték" vagy "Romantikus" besorolású.
Többfeliratos szövegbesorolás task = '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 filmszkript besorolása például "Vígjáték", "Romantikus" vagy "Vígjáték és romantikus".
Nevesített entitások felismerése (NER) task = '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

Adatok előkészítése

Az automatizált gépi tanulásban végzett NLP-kísérletekhez többosztályos és többcímkés besorolási feladatokhoz formázott Azure Machine Learning-adatkészletet .csv hozhat létre. 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. A következő szakaszok további részleteket nyújtanak az egyes tevékenységekhez elfogadott adatformátumról.

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 betanítás előtt az automatizált gépi tanulás adatérvényesítési ellenőrzéseket végez a bemeneti adatokon annak é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 – Betanítási és érvényesítési csoportokat is meg kell adni
- 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 {token} {label}kell követnie, 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 Obetű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 a besorolási, regressziós és előrejelzési feladatok automatizált ML-kísérleteinek beküldéséhez használt munkafolyamaton keresztül AutoMLConfigaktiválódik. A legtöbb paramétert a kísérletekhez, például taskcompute_target az adatbemenetekhez hasonlóan állíthatja be.

Vannak azonban főbb különbségek:

  • Figyelmen kívül hagyhatja primary_metric, mivel csak jelentéskészítési célra 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 adathalmazban lévő minták többsége több mint 128 szót tartalmaz, akkor az hosszú tartománynak számít. Ebben a forgatókönyvben engedélyezheti a hosszú távú szöveg beállítást a paraméterrel a enable_long_range_text=True saját AutoMLConfig. Ezzel javítja a modell teljesítményét, de hosszabb betanítási időt igényel.
    • Ha engedélyezi a hosszú távú szöveget, akkor nagyobb memóriával rendelkező GPU-ra van szükség, például NCv3 sorozatra vagy ND sorozatra.
    • A enable_long_range_text paraméter csak többosztályos besorolási feladatokhoz érhető el.
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
)

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

Az adathalmaz nyelvét megadhatja a FeaturizationConfigsajátjában. A BERT-t az automatizált gépi tanulási kísérletek betanításának featurizálási folyamatában is használják, és többet is megtudhat az automatizált gépi tanulás BERT-integrációjáról és featurizálásáról.

from azureml.automl.core.featurization import FeaturizationConfig

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

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. Ezt automatikusan kezeli az automatikus gépi tanulás, amikor a paramétereket max_concurrent_iterations = number_of_vms enable_distributed_dnn_training = True megadja a AutoMLConfig kísérlet beállítása során.

max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True

Ezzel ütemezi az NLP-modellek elosztott betanítását, és automatikusan skálázza a virtuális gépek vagy virtuális gépek fürtöinek minden GPU-ját. Az engedélyezett virtuális gépek maximális száma 32. A betanítás a két fős virtuális gépek számával van ütemezve.

Példajegyzetfüzetek

Az egyes NLP-feladatokra vonatkozó részletes kódpéldákat a mintajegyzetfüzetekben találja.

Következő lépések